03 2014 档案
摘要:驱动程序中字符串操作涉及到ASCII字符串、宽字符串,还有DDK定义的ANSI_STRING数据结构和UNICODE_STRING数据结构。1)ASCII字符串和宽字符串在应用程序中使用两种字符:一是char型字符串,负责记录ANSI字符集,它是指向一个char数组的指针,每个char型变量大小是一个字节,字符串是以0标志字符串结束的;一是wchar_t型的宽字符串,负责描述unicode字符集,它是指向一个wchar_t数组的指针,wchar_t字符大小为两个字节,字符串以0标志字符串结束。ANSI字符构造如下:char*str1 ="ASCE";UNICODE字符构造如
阅读全文
摘要:调用约定:调用约定指的是函数被调用时,会按照不同规则,翻译成不同的汇编代码。当一个函数被调用时,首先会将返回地址压入堆栈,紧接着会将函数的参数依次压入堆栈。不同的调用约定,会指明不同的参数入栈顺序,还会指明不同的清理堆栈的方法。用C语言或者C++语言编译器编译程序时,会有四种不同的调用约定去编译函数:C语言的调用约定,函数由__cdecl修饰;标准调用约定,函数由__stdcall修饰;快速调用约定,函数由__fastcall修饰;C++类成员函数的调用约定,函数由thiscall修饰。不同的调用约定编译后,会产生不同的汇编代码。下面只介绍C语言调用约定和标准调用约定。C语言调用约定要求在声明
阅读全文
摘要:内存管理概念:1)物理内存PC上有三条总线:数据总线、地址总线和控制总线。32位CPU的寻址能力是4GB个字节,用户最多可以使用4GB的真实物理内存。PC中很多设备都提供了自己的设备内存,例如显卡就提供了自己的显存。这部分内存会映射到PC的物理内存上,也就是读写这段物理地址,其实会读写的设备内存地址,而不会读写物理内存地址。2)虚拟内存地址Windows所有程序(包括Ring0层和Ring3层的程序)可以操作的都是虚拟内存。之所以称为虚拟内存,是因为对它的所有操作最终都会变成一系列对真实物理内存的操作。CPU中有一个重要的寄存器CR0,它是32位的寄存器,其中的一个位(PG位)是负责告诉系统是
阅读全文
摘要:WDM驱动的基本结构:WDM驱动模型是建立在NT式驱动程序模型基础之上的。对于WDM驱动程序来说,一般都是基于分层的,即完成一个设备的操作,至少要由两个驱动设备共同完成。1)物理设备对象和功能设备对象物理设备对象(Physical Device Object,PDO)和功能设备对象(Function Device Object,FDO)的关系是“附加”与“被附加”的关系。当PC插入某个设备时,PDO会自动创建。确切的说,是由总线驱动创建的。PDO不能单独操作设备,需要配合FDO一起使用。系统会提示检测到新设备,要求安装驱动程序。需要安装的驱动程序就是WDM程序,此驱动程序负责创建FDO,并且附
阅读全文
摘要:Windows驱动程序分为两类:一类是不支持即插即用功能的NT式驱动程序;另一类是支持即插即用功能的WDM驱动程序。NT式驱动的基本结构:1)驱动加载过程与驱动入口函数DriverEntry:驱动程序入口点函数通常命名为DriverEntry,也可以指定另外的名字,但最好遵循这个名字:DRIVER_INITIALIZE DriverEntry;NTSTATUS DriverEntry(__instruct_DRIVER_OBJECT *DriverObject,//指向驱动对象的指针__inPUNICODE_STRING RegistryPath//指向设备服务键的键名字符串的指针){ ...
阅读全文
摘要:驱动对象:每个驱动程序都会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载时被内核中的对象管理程序所创建的。驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动的一个实例被内核加载,并且内核对一个驱动只加载一个实例。确切地说,是由内核中的I/O管理器负责加载的,驱动程序需要在DriverEntry中初始化。驱动对象的结构定义如下(wdm.h):typedefstruct_DRIVER_OBJECT {//结构的类型和大小CSHORT Type;CSHORT Size;//每个驱动程序会有一个或多个设备对象,其中,每个设备对象都有一个指针指向下一个驱动对象//最后一个设备对象指向空
阅读全文
摘要:1)用VS2010新建Win32 Console Application,工程名为ACECore,工程建立完成后得到打开文件ACECore.cpp,代码如下:#include"stdafx.h"int_tmain(intargc, _TCHAR* argv[]){return0;}2)用VS2010查看汇编代码的方法:1. VC必须处于debug状态才能看到汇编指令窗口。因此在上面代码return 0一句上设置断点。2.按下F5键调试程序,当程序停在断点处时,打开菜单“Debug”下的“Windows”子菜单,选择“Disassembly”。这样就出现反汇编窗口,显示汇编代
阅读全文
摘要:一、几个基本的概念1.存储器的金字塔结构存储器从下之上依次是磁盘/flash、DRAM(内存)、L2-cache、L1-cache、寄存器,越在上面的存储器访问速度越快,同时价格也越昂贵,每一级都可以看做是下一级的缓存,内存是磁盘的缓存,cache是内存的缓存。2.地址空间地址空间就是一个非负正数的有序集合,如果是连续的即线性地址空间,从硬件的角度看就是处理器所能访问的存储器空间,与地址线的位数相关,物理地址空间就是物理存储器的访问空间(按字节访问)3.页将物理内存和虚拟内存按页来划分,页的大小也有所不同,ARM中支持1M的大页,4k或64k的细页,x86下支持4M的大页,利用页表来表征整个地
阅读全文
摘要:\usepackage{mathrsfs} \usepackage{amsmath} \usepackage{graphicx} 宏包 \includegraphics{graph01.eps} %插入图片graph01.eps figure 环境, \begin{figure} \centering \includegraphis[scale=2,angle=30]{graph01.eps} \caption{This is a figure.} \end{figure}
阅读全文
摘要:\usepackage{amsmath} 常用宏包 \usepackage{arydshln} 此宏包带虚线 $ $ 行内公式 $$ $$ 行间公式 \[ \] 行间公式 \numberwithin{equation}{section} 按节给公式编号 \begin{subequations} \end{subequations} 使得编号不变的情况,在后面添加后缀来区分 \boxed{ 公式外面加框 \newcommand{新命令}{被指定命令} 自行指定命令 ^ 上标 _ 下标 \mathop{}^a_b 正上方和正下方出现a 和 ...
阅读全文
摘要:一、文档 \documentclass{article} %book, report, letter二、宏包 \usepackage{amsmath}三、正文 \begin{document} \end{document}四、符号输入 \% = % \$ = $ \{...\} = {...} $\backslash$ = \五、标题页 \title{this is my book} \author{James Fang} \date{} %禁止显示日期 \maketitle六、章节 \part{elementary} \chapter{in...
阅读全文
摘要:一、对齐段落 \\ or \newline 另起一行,而不是另起一段 \\* 在强制断行后,还禁止分页 \newpage 另起一页 \linebreak[n] \nolinebreak[n] \pagebreak[n] \nopagebreak[n] \sloppy 降低一点儿标准 \fussy 恢复为缺省状态二、断词 \hyphenation{word list} 使列于参量中的单词仅在注有”一“的地方断词 \mbox{text} 保证把几个单词排在同一行上三、引号 `` 左引号 '' 右引号 ` and ' 产生一个单引号 四、其他...
阅读全文
摘要:LATEX支持三种预定义的页眉/页脚(header/footer)样式,称为页面样式(pagestyle)。如下命令: \pagestyle{style}中的style参数确定了使用哪一种页面样式。 plain 在页脚正中显示页码。这是页面样式的缺省设置 headings 在页眉中显示章节名及页码,页脚空白 empty 将页眉页脚都设为空白 可以通过如下命令来改变当前页面的页面样式 \thispagestyle{style}
阅读全文
摘要:默认情况下,骨骼追踪引擎会对视野内的所有活动的游戏者进行追踪。但只会选择两个可能的游戏者产生骨骼数据,大多数情况下,这个选择过程不确定。如果要自己选择追踪对象,需要使用AppChoosesSkeletons属性和ChooseSkeletons方法。 默认情况下AppChoosesSkeleton属性为false,骨骼追踪引擎追踪所有可能的最多两个游戏者。要手动选择追踪者,需要将AppChoosesSkeleton设置为true,并调用ChooseSkeletons方法,传入TrackingIDs已表明需要追踪那个对象。ChooseSkeletons方法接受一个,两个或者0个Tracking..
阅读全文
摘要:MCvDTreeParams cvFolds //If this parameter is >1, the tree is pruned using cv_folds-fold cross validation. maxCategories //默认为10 maxDepth //This parameter specifies the maximum possible depth of the tree. That is the training algorithms attempts to split a node while its depth is l...
阅读全文

浙公网安备 33010602011771号