深度剖析WinPcap之(六)——驱动程序的初始化与清除 (3)
2009-09-11 00:00:00 来源:WEB开发网函数NPF_CreateDevice主要使用IoCreateDevice与IoCreateSymbolicLink系统接口函数实现。
IoCreateDevice 函数为驱动程序的使用者分配内存,并初始化一个设备对象。函数原型如下:
NTSTATUS
IoCreateDevice(
IN PDRIVER_OBJECT DriverObject,
IN ULONG DeviceExtensionSize,
IN PUNICODE_STRING DeviceName OPTIONAL,
IN DEVICE_TYPE DeviceType,
IN ULONG DeviceCharacteristics,
IN BOOLEAN Exclusive,
OUT PDEVICE_OBJECT *DeviceObject
);
函数各参数作用如下:
参数DriverObject 为输入参数,DriverObject为指向驱动对象的指针。每个驱动程序有唯一的驱动对象与之对应,但每个驱动对象会有若干个设备对象。
参数DeviceExtensionSize为输入参数,指定设备扩展的大小,I/O管理器会根据这个大小,在内存中创建设备对象的设备扩展。驱动程序使用该设备扩展来维护DeviceObject所描述设备的I/O操作的上下文。设备扩展的内部结构由驱动程序自定义,NPF中_DEVICE_EXTENSION的定义如下。
/*包含与每个适配器关联的结构体,在该适配器上NPF被绑定*/
typedef struct _DEVICE_EXTENSION {
//适配器的名称
NDIS_STRING AdapterName;
//设备导出的名称,比如,应用程序通过WinPcap用来打开该适配器的名称
PWSTR ExportString;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
参数DeviceName为可选的输入参数,设置设备对象的名称。指向一个以0结尾的Unicode字符串,同时字符串必须为完整的路径。利用该字符串对设备对象命名。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接