深度剖析WinPcap之(三)——所涉及的Windows驱动基础知识
2009-09-11 00:00:00 来源:WEB开发网ULONG AlignmentRequirement
设备在大容量传输的时候,为了保证传输速度需要内存对齐。每个设备对象在它新创建的设备对象中设置该成员。
1.1.3 设备扩展(_DEVICE_EXTENSION)
设备对象记录设备的“通用”信息,而另外一些“特殊”信息记录在设备扩展中。设备扩展由程序员自行定义,指定内容与大小,由I/O管理器创建,保存在非分页内存中。
在驱动程序中,尽量避免使用全局函数,因为全局函数往往导致函数的不可重入性。一个解决办法就是将全局变量以设备扩展的形式存储,并加以适当的同步保护措施。
WinPcap中NPF的设备扩展结构体,主要用于存储每个被NPF绑定的适配器的一些信息,结构体定义如下:
typedef struct _DEVICE_EXTENSION {
//适配器名称
NDIS_STRING AdapterName;
//设备导出的名称,也就是通过WinPcap应用程序使用该名称来打开该适配器
PWSTR ExportString;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
1.1.4 IRP与派遣函数
驱动程序的主要功能是负责处理l/O请求,大部分1/0请求是在派遣函数中处理的。IRP的处理机制类似Windows应用程序中的“消息处理”机制。用户空间对驱动程序的所有1/0请求,全部由操作系统转化为一个IRP数据结构,不同的IRP数据会被“派遣”到不同的派遣函数中,在派遣函数中处理IRP。
IRP是Windows内核中输入输出请求包(I/O Request Package,IRP)的缩写。IRP具有两个基本属性:MajorFunction与MinorFunction,分别记录IRP的主功能和子功能。操作系统根据MajorFunction将IRP“派遣”到不同的派遣函数中,在派遣函数中还可以根据MinorFunction继续判断该IRP属于哪种子功能。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接