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