WDM中的结构(3)---设备对象

                                           WDM中的结构

                               ---设备对象

设备对象(DEVICE_OBJECT)WDM中一个重要的数据结构,设备对象保存关于设备特征和状态信息,是I/O管理器和驱动程序了解和操作设备的工具。

装载后的驱动程序需要虚拟、逻辑和物理设备来处理I/O请求。每一个驱动程序在初始化时都要在AddDevice里调用IoCreateDevice函数来创建设备对象。驱动程序为它的每一个设备创建设备对象,对于驱动程序来说,设备对象代表了设备。一个驱动程序对象代表了一个驱动程序,它可以创建一个或多个设备对象。I/O管理器维护一个设备对象列表,并把指针存储到驱动程序对象中。大多数的驱动程序使用设备对象的设备扩展字段来维护设备状态信息或驱动指定的I/O请求的上下文数据。

设备对象是部分不透明的。我们必须知道某些特定的字段和与设备对象有关的系统定义的符号常量,因为我们必须访问这些字段或把它传送给其他例程。下面的这些区域是可访问的:

 

 

PDRIVER_OBJECT DriverObject     驱动程序对象指针

PDEVICE_OBJECT NextDevice               下一个设备对象指针,此I/O管理器调用IoCreateDevice更新此链表

PIRP CurrentIrp                         当前IRP。如果驱动程序有StartIo例程,并且它的进入点在驱动程序对象内已经设置,且驱动程序正在处理IRP,此字段才不为空

ULONG Flags                             规定设备的缓冲策略,DO_BUFFERED_IO DO_DIRECT_IO

PVOID DeviceExtension               设备扩展指针。此结构是驱动程序自定义的,其大小作为  参数传递给IoCreateDevice

DEVICE_TYPE DeviceType              设备类型。在IoCreateDevice函数调用时的第四个参数。如:FILE_DEVICE_UNKNOWN

CCHAR StackSize                     发送到该设备的IRP所需的最少数量的I/O堆栈位置

ULONG AlignmentRequirement      缓冲区要求的内存调整

                                    如:

FILE_BYTE_ALIGNMENT 

FILE_WORD_ALIGNMENT

没有说明的字段是不可访问的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值