WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(三)——所涉及的Windows驱动基... 阅读

深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 下面分别描述设备对象中驱动程序可访问的成员,PDRIVER_OBJECT DriverObject指向驱动程序中的驱动对象,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(4),同属于一个驱动程序的驱动对象指向的是同一个驱动对象,PDEVICE_OBJECT NextDev

下面分别描述设备对象中驱动程序可访问的成员。

PDRIVER_OBJECT DriverObject

指向驱动程序中的驱动对象。同属于一个驱动程序的驱动对象指向的是同一个驱动对象。

PDEVICE_OBJECT NextDevice

指向下一个设备对象。这里的下一个设备对象是同一个驱动程序创建的若干设备对象。每个设备对象根据NextDevice域形成链表,从而可以遍历每个设备对象。在每次成功调用IoCreateDevice 后I/O管理器更新该链表。在驱动被卸载的时候,需要遍历该链表,删除每个设备对象。

PIRP CurrentIrp

如果驱动使用Startl0例程时,此成员指向当前IRP结构。否则为NULL。 

ULONG Flags

此成员是一个32位昀无符号整型,每个位有不同的含义。通过位或操作为新创建的设备对象设置不同的特性。

ULONG Characteristics

当驱动程序调用IoCreateDevice时,设置下列一个合适的值:

FILE_REMOVABLE_MEDIA
FILE_READ_ONLY_DEVICE
FILE_FLOPPY_DISKETTE
FILE_WRITE_ONCE_MEDIA
FILE_DEVICE_SECURE_OPEN
PVOID DeviceExtension

指向设备扩展对象。设备扩展对象是由程序员在驱动中自行定义的结构体,结构体的大小在调用IoCreateDevice时设置。每个设备都会指定一个设备扩展对象,设备扩展对象记录的是特别定义的结构体。在驱动程序中应该尽量避免全局变量的使用,因为全局变量涉及不容易同步的问题,解决的办法可将全局变量存储在设备扩展中。

DEVICE_TYPE DeviceType

指明设备的类型,由IoCreateDevice设置。根据设备需要填写相应的设备类型。.

CCHAR StackSize

在多层驱动的情况下,驱动与驱动之间形成类似堆栈的结构。IRP会依次从最高层传递到最底层。StackSize就是指定发送到该驱动的IRP在堆栈位置的最小层数。IoCreateDevice在一个新创建的设备对象中设置该成员。

上一页  1 2 3 4 5 6  下一页

Tags:深度 剖析 WinPcap

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接