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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 下面分别描述驱动对象中驱动程序可访问的成员,PDEVICE_OBJECT DeviceObject每个驱动对象会有一个或多个设备对象,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识(2),每个设备对象都有一个指针(NextDevice)指向下一个驱动对象,最后一个设备对象指

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

PDEVICE_OBJECT DeviceObject

每个驱动对象会有一个或多个设备对象。每个设备对象都有一个指针(NextDevice)指向下一个驱动对象,最后一个设备对象指向空。此处的DeviceObject指向驱动对象的第一个设备对象。该成员在成功调用IoCreateDevice后自动更新。一个驱动程序使用该程成员与设备对象(DEVICE_OBJECT)的NextDevice可遍历给驱动对象的所有设备对象。在驱动被卸载的时候,需要遍历每个设备对象,并将其删除。

PUNICODE_STRING HardwareDatabase

指向注册表中硬件配置信息的路径,用UNICODE字符串表示。该字符串一般为\REGISTRY\MACHINE\HARDWARE\DESCRIPTION\SYSTEM。

PFAST_IO_DISPATCH FastIoDispatch

指向一个定义驱动快速 I/O结构体的入口点,该成员只用于文件系统驱动与网络传输驱动。

PDRIVER_INITIALIZE DriverInit

是DriverEntry例程的入口点,由I/O管理器设置。

PDRIVER_STARTIO DriverStartIo

是Startl0例程的的入口点,如果需要,由DriverEntry例程设置,否则为NULL。

PDRIVER_UNLOAD DriverUnload

指向驱动卸载时所用回调函数的入口点。

PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION+1]

一个函数指针数组, 数组MajorFunction中的每个成员保存着一个指针,每一个指针指向一个处理对应IRP(IRP_MJ_XXX)的派遣函数(DispatchXxx)。

每个派遣函数(DispatchXxx)声明如下:

    NTSTATUS

(*PDRIVER_DISPATCH) (

    IN PDEVICE_OBJECT DeviceObject,

    IN PIRP Irp

      );

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

Tags:深度 剖析 WinPcap

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