每个驱动程序会创建一个或多个设备对象,每个设备对象都会有一个指针指向下一个设备对象 Device结构体源码 typedef struct DECLSPEC_ALIGN(MEMORY_ALLOCATION_ALIGNMENT) _DEVICE_OBJECT { CSHORT Type; USHORT ...
设备对象Device_Object记录通用设备信息,另外一些信息记录在设备扩展里,设备扩展由程序员自己定义,由程序员指定内容和大小,由I/O管理器创建,并保存在非分页内存中。 驱动程序中,尽量避免使用全局函数,因为全局函数往往导致函数的不可重入性, 重入性是指,在多线程程序中,多个函数并行运行,函数 ...
每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的,内核对一个驱动只加载一个实例,是由内核中的I/O管理器负责加载的,驱动程序需要在DriverEntry中初始化该驱动对象。 _DRIVER_OBJECT结构体源码 typedef struct ...
设备读写方式共三种: 方式 Flag 特点 缓冲区方式读写 DO_BUFFERED_IO I/O管理器先创建一个与用户模式数据缓冲区大小相等的系统缓冲区。而你的驱动程序将使用这个系统缓冲区工作。I/O管理器负责在系统缓冲区和用户模式缓冲区之间复制数据。 直接方式读写 DO_DIRECT_IO I/O ...
搞内存常用函数 C语言 内核 malloc ExAllocatePool memset RtlFillMemory memcpy RtlMoveMemory free ExFreePool ...
NTSTATUS functionName(PDEVICE_OBJECT pDeviceObject, PIRP pIrp) { //业务代码区 //设置返回状态 pIrp->IoStatus.Status = STATUS_SUCCESS;//getLastError()得到的值 pIrp->Io ...
准备工作注意:32位Win7系统只能升32位的Win10系统,64位Win7系统只能升64位的Win10系统,并且版本也是一样,Win7家庭版只能升级Win10家庭版,Win10专业版/旗舰版只能升级Win10专业版。关于各版本升级后的对应版本,微软官方已经给出了对照表,详情请点:《传送门》关于Wi... ...
数据结构是计算机程序的核心,I/O管理器定义了一些数据结构,这些数据结构是编写驱动程序时所必须掌握的。驱动程序经常要创建和维护这些数据结构的实例。 一、驱动对象(DRIVER_OBJECT) 每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的。 ...
分类:
编程语言 时间:
2019-11-02 17:31:28
阅读次数:
106
基于Windows驱动开发技术详解这本书 一、简单的INF文件剖析 INF文件是一个文本文件,由若干个节(Section)组成。每个节的名称用一个方括号指示,紧接着方括号后面的就是节内容。每一行就是一项内容,其形式都是类似SomeEntry=SomwValue。每个项的顺序是可以颠倒的,但系统分析I ...
分类:
编程语言 时间:
2019-11-02 15:38:34
阅读次数:
89
在使用windows驱动与应用程序进行交互时,可能会用到常用的SetupApi,SetupApi被包含在#include <setupapi.h>头文件中,如果大家直接使用这个头文件的话,会报错很多错误。 因为setupapi.h依赖这些头文件: 另外还要调用setupapi.lib 然后就可以正常 ...