驱动程序
二月麦苗
这个作者很懒,什么都没留下…
展开
-
IO_STACK_LOCATION
IO_STACK_LOCATIONThe IO_STACK_LOCATION structure defines an I/O stack location, which is an entry in the I/O stack that is associated with each IRP. Each I/O stack location in an IRP has some co转载 2014-07-16 09:41:43 · 847 阅读 · 0 评论 -
IRQL中断请求级别及APC_LEVEL讨论
什么是IRQL?IRQL是Interrupt ReQuest Level,中断请求级别。处理器在一个IRQL上执行线程代码。IRQL是帮助决定线程如何被中断的。在同一处理器上,线程只能被更高级别IRQL的线程能中断。每个处理器都有自己的中断IRQL。我们经常遇见的有四种IRQL级别。“Passive”, “APC”, “Dispatch” and “DIRQL”. “DriverEnt转载 2014-07-16 16:23:42 · 5978 阅读 · 0 评论 -
第8章 驱动程序的同步处理
如果驱动程序没有很好地处理同步问题,操作系统的性能就会下降,甚至出现死锁等现象。基本概念1.问题的引出下面这段代码:[cpp] view plaincopyint number; void Foo() { number++; //做一些事情 number--; } 将其转换成汇编代码:[p转载 2014-07-17 09:12:44 · 1077 阅读 · 0 评论 -
windows内核模式开发常用知识
* 通过 NTSTATUS 获得相应的字符串 使用函数RtlNtStatusToDosError可以获得与NTSTATUS相对应的Windows错误码。 微软网站上说用API函数 FormatMessage 可获得相应的字符串,但是在调用前必须先用 LoadLibrary 载入 "NTDLL.DLL"。 文章链接 - http://support.microsoft.转载 2014-07-20 14:34:11 · 875 阅读 · 0 评论 -
windows驱动开发技术详解 第五章 windows内存管理
1. 内存管理概念1.1 物理内存概念1.2 虚拟内存DDK中宏PAGE_SIZE记录分页大小,一般为4KB。1.3 用户模式地址和内核模式地址低2G的虚拟地址为用户模式地址,为0~0X7FFFFFFF。高2G的虚拟地址为内核模式地址,为0X80000000~0XFFFFFFFF。进程切换时,内核地址完全相同,只改变用户模式地址的映射。1.4原创 2014-07-14 15:43:51 · 775 阅读 · 0 评论 -
Windows内核函数的命名
《Windows内核情景分析--采用开源代码ReactOS(上、下册)》本书通过分析ReactOS的源代码介绍了Windows内核各个方面的结构、功能、算法与具体实现。本小节为大家介绍Windows内核函数的命名。AD: 1.5 Windows内核函数的命名Windows的内核函数在命名上有个很好的特色,就是函数名都按其所在的层次或模块加上了特定的前缀。了解了这些前缀转载 2014-07-14 16:01:39 · 601 阅读 · 0 评论 -
函数调用类型_cedecl, _stdcall, _fastcall
简介:_cdecl 是C Declaration的缩写(declaration,声明),表示C语言默认的函数调用方法:所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈。被调用函数不会要求调用者传递多少参数,调用者传递过多或者过少的参数,甚至完全不同的参数都不会产生编译阶段的错误。_stdcall 是StandardCall的缩写,是C++的标准调用方式:所有参数从右到左依次入栈转载 2014-07-14 10:11:53 · 1237 阅读 · 0 评论 -
REG_OPTION_VOLATILE和REG_OPTION_NON_VOLATILE
原因REG_OPTION_VOLATILE 这个参数的意思是创建的注册表键值都位于内存中,不会保存到相应的注册表文件中。英文如下:All registry keys are created as volatile, and the information is stored in memory and is not preserved when the corresponding转载 2014-07-15 10:30:51 · 2125 阅读 · 0 评论