
KMDF驱动的开发
文章平均质量分 71
happy987818
这个作者很懒,什么都没留下…
展开
-
KMDF中未分页内存的类型选择
在内核驱动程序中,内存空间的动态分配不能使用C语言的malloc等函数,取而代之的是ExAllocatePoolWithTag()和ExFreePool(),使用方法举例如下:#defineTEST_POOL_TAG (ULONG)'test'PUCHAR tempBuf = NULL;tempBuf = ExAllocatePoolWithTag ( Non原创 2016-01-25 11:27:31 · 1328 阅读 · 0 评论 -
KMDF版本以及库文件的命令规则
一、KMDF版本号与WDK和OS的对应关系KMDF的版本号基本上都是伴随着WDK的发布而更新的,而WDK的更新一般又是和OS是同步的,比如:Win7对应WDK7,Win8对应WDK8,Win8.1对应WDK8.1,Win10对应WDK10从VS2012开始支持建立驱动工程。VS2012支持WDK 8.0,对应的KMDF默认版本是1.11。VS2013支持Win 8.1,对应的KMDF默认版原创 2016-01-25 16:41:30 · 2346 阅读 · 0 评论 -
内核驱动中改写寄存器值
在Kernel Model的驱动程序中向给定的寄存器地址、内存地址或IO端口地址等16进制的地址写入指定的值。主要依靠的是MSDN中提供的MmMapIoSpace函数进行的。该函数将一个十六进制的物理地址映射到一个指针,然后针对该指针进行操作即可改变对应的物理单元内的数据。该函数的具体描述可参看微软的MSDN:https://msdn.microsoft.com/zh-cn/office/原创 2016-01-14 18:00:04 · 2074 阅读 · 0 评论 -
解决内核驱动开发中设备名称显示不正确的问题
为了让驱动与上层应用程序可以通信,我们定义了一个工具接口。当该接口被打开时,驱动会专门创建一个设备并挂载在Sample driver下面,它就是用来与应用程序进行通信的接口。但之前,该设备在设备管理器中的显示一直是有问题的,一直被标识成一个Unknown Device。后来参考MSDN的Sample Code:“Keyboard Input WDF Filter Driver (Kbfil原创 2016-01-14 18:06:59 · 761 阅读 · 0 评论 -
NTSTATUS Code
These are from the Windows .NET Server 2003 RC2 DDK. 00000000STATUS_SUCCESS00000000STATUS_WAIT_000000001STATUS_WAIT_100000002STATUS_WAIT_2转载 2016-07-25 10:16:03 · 1458 阅读 · 0 评论 -
设备节点和设备堆栈
在 Windows 中,设备由即插即用 (PnP) 设备树中的设备节点来表示。通常,向设备发送 I/O 请求时,一些驱动程序会帮助处理该请求。这些驱动程序中的每一个都与一个设备对象相关联,这些设备对象在堆栈中进行排列。设备对象的顺序与它们的关联驱动程序一起被称为设备堆栈。每个设备节点都有自己的设备堆栈。设备节点和即插即用设备树Windows 在称为“即插即用设备树”或简称为“设备树转载 2016-07-15 12:20:43 · 702 阅读 · 0 评论 -
WDFQUEUE的回调函数
在创建一个WDFQUEUE对象之前,可以通过设定WDF_IO_QUEUE_CONFIG,来注册队列的回调方法。WDF_IO_QUEUE_CONFIG是一个结构体,它的具体结构如下:typedef struct _WDF_IO_QUEUE_CONFIG { ULONG Size;原创 2016-07-29 12:36:05 · 1274 阅读 · 0 评论 -
#pragma alloc_text
1、转自 :http://hi.baidu.com/billbeggar/blog/item/e884ce1acb10f49a6438db43.html2、编译时控制分页能力 有时,驱动程序的某些部分必须驻留内存而另一些可以被分页,这就需要一种能控制代码和数据是否分页的方法。通过指导编译器的段分配可以实现这个目的。在运行时,装入器通过检查驱动程序中的段名, 把段放到你指定的转载 2016-08-05 11:13:04 · 1156 阅读 · 0 评论