DRIVER_OBJECT,DEVICE_OBJECT 结构体分析

本文分析了WDK中的DRIVER_OBJECT和DEVICE_OBJECT结构体,详细探讨了这两个结构体在驱动程序中的作用和关键成员,为理解驱动开发提供基础。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


在wdm.h这个头文件中可以看到这两个结构体的定义,下面简单的分析一下结构体中的内容。

DRIVER_OBJECT

typedef struct _DRIVER_OBJECT {
    CSHORT Type;
    CSHORT Size;

     //这个驱动生成的设备对象,形成一个链,DeviceObject指向这个链
    PDEVICE_OBJECT DeviceObject;

    //驱动对象是否可以扩展的标记
    ULONG Flags;
    //这部分描述的就是驱动从哪儿被加载。记数字段用来记录驱动注册的重新初始化程序一共被调用了多少次
    PVOID DriverStart;
    ULONG DriverSize;
    PVOID DriverSection;
    //指向driver extension.他唯一可以访问的成员就是 DriverExtension->AddDevice,,我们也是利用这个方法在 DriverEntry 程序中存储驱动程序的AddDevice程序  
     PDRIVER_EXTENSION DriverExtension;

    // 驱动程序的名字被错误日志线程用来决定I/O请求所绑定的驱动的名字
    UNICODE_STRING DriverName;


     //这个字段是用来进行注册用的。这个指针指向在注册表中硬件信息的路径。
    PUNICODE_STRING HardwareDatabase;


   //这是一个指向支持快速I/O的备用驱动入口的数组的可选择指针,快速I/O通过传入独立参数直接调用驱动程序来实现,而不是利用标准的IRP呼叫机制。
  //注意这些方法只能被用于同步的I/O处理,而且是在文件已经被缓存了的情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值