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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示:1.1 Windows驱动的基础知识本节主要描述在WinPcap的NPF中经常使用一些编写Windows驱动程序所需掌握的部分基础知识,以便于后面的理解,深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识,1.1.1 驱动对象(DRIVER_OBJECT)每个驱动程序都有唯一的驱动对象与之对应,该驱动

1.1        Windows驱动的基础知识

本节主要描述在WinPcap的NPF中经常使用一些编写Windows驱动程序所需掌握的部分基础知识,以便于后面的理解。

1.1.1        驱动对象(DRIVER_OBJECT)

每个驱动程序都有唯一的驱动对象与之对应,该驱动对象在驱动程序被加载时由内核的对象管理程序所创建。

驱动对象用DRIVER_OBJECT数据结构表示,它作为驱动程序的一个实例被内核加载,对一个驱动程序内核I/O管理器只加载一个实例。

驱动对象数据结构在wdm.h文件中的定义如下。

typedef struct _DRIVER_OBJECT {
    CSHORT Type;
    CSHORT Size;
 
/*
*DeviceObject为每个驱动程序所创建的一个或多个设备对象链表,
*Flags提供一个扩展的标识定位驱动对象
*/
    PDEVICE_OBJECT DeviceObject;
    ULONG Flags;
 
/*下列各成员字段描述驱动程序从哪儿被加载*/
PVOID DriverStart;
    ULONG DriverSize;
    PVOID DriverSection;
    PDRIVER_EXTENSION DriverExtension;
 
    /*
*DriverName成员被错误日志线程用来
*确定一个I/O请求越界的驱动名称
*/
    UNICODE_STRING DriverName;
  
    /*指向注册表中硬件信息的路径*/
    PUNICODE_STRING HardwareDatabase;
 
  
/*
*如果驱动支持“fast I/O”,
*就指向一个“fast I/O”的派遣函数数组
*/
    PFAST_IO_DISPATCH FastIoDispatch;
 
 
/*
*描述该特定驱动的入口点。
*主函数(major function)派遣函数表必须是对象最后的成员,
*因此它仍然是可扩展的
*/
    PDRIVER_INITIALIZE DriverInit;
    PDRIVER_STARTIO DriverStartIo;
    PDRIVER_UNLOAD DriverUnload;
    PDRIVER_DISPATCH MajorFunction[IRP_MJ_MAXIMUM_FUNCTION + 1];
 
} DRIVER_OBJECT;
typedef struct _DRIVER_OBJECT *PDRIVER_OBJECT;

1 2 3 4 5 6  下一页

Tags:深度 剖析 WinPcap

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