深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识
2009-09-11 00:00:00 来源:WEB开发网下面分别描述设备对象中驱动程序可访问的成员。
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在一个新创建的设备对象中设置该成员。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接