Windows驱动开发-_DRIVER_OBJECT结构体

Posted a-s-m

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows驱动开发-_DRIVER_OBJECT结构体相关的知识,希望对你有一定的参考价值。

每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱动加载的时候,被内核中的对象管理程序所创建的,内核对一个驱动只加载一个实例,是由内核中的I/O管理器负责加载的,驱动程序需要在DriverEntry中初始化该驱动对象。

_DRIVER_OBJECT结构体源码

typedef struct _DRIVER_OBJECT {
    CSHORT Type;
    CSHORT Size;
    //每个驱动程序有一个或多个设备对象,每个设备对象都有一个指针指向下一个设备对象,最后一个设备对象指向空。此处是第一个设备对象。可以遍历所有的。
   //设备对象由程序员自己创建,而非操作系统,驱动卸载的时候,遍历每个设备对象,将其删除。 PDEVICE_OBJECT DeviceObject;
   ULONG Flags;
PVOID DriverStart; ULONG DriverSize; PVOID DriverSection; PDRIVER_EXTENSION DriverExtension; UNICODE_STRING DriverName; PUNICODE_STRING HardwareDatabase; PFAST_IO_DISPATCH FastIoDispatch; PDRIVER_INITIALIZE DriverInit; PDRIVER_STARTIO DriverStartIo; PDRIVER_UNLOAD DriverUnload; PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1]; } DRIVER_OBJECT; typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;

字段注释:

 PDEVICE_OBJECT DeviceObject;

每个驱动程序有一个或多个设备对象,每个设备对象都有一个指针指向下一个设备对象,最后一个设备对象指向空。此处是第一个设备对象。可以遍历所有的。设备对象由程序员自己创建,而非操作系统,驱动卸载的时候,遍历每个设备对象,将其删除。

技术图片

 

以上是关于Windows驱动开发-_DRIVER_OBJECT结构体的主要内容,如果未能解决你的问题,请参考以下文章

Windows Driver开发_TraceEvents调试以及加载驱动的方法

WD.驱动书_USB

Windows驱动开发-Device结构体

Delphi驱动开发研究第一篇--实现原理

Windows Driver开发_NT Driver框架:The driver is not in a state to accept this command

Windows Driver开发_NT Driver框架:The driver is not in a state to accept this command