深度剖析WinPcap之(六)——驱动程序的初始化与清除 (3)
2009-09-11 00:00:00 来源:WEB开发网参数DeviceType 为输入参数,描述一个系统定义的FILE_DEVICE_XXX常量,表示设备的种类(诸如FILE_DEVICE_DISK、FILE_DEVICE_KEYBOARD等)或一个厂商定义的新类型设备。NPF设置为FILE_DEVICE_TRANSPORT值。
参数DeviceCharacteristics 为输入参数,描述一个或多个系统定义的常量,各常量可位或操作。该参数提供了有关驱动设备的额外信息。其中NPF所有的值为FILE_DEVICE_SECURE_OPEN。如果设备没有任何相关特性,设为0。
参数Exclusive为输入参数,指示设备对象是否表现为一个互斥设备。也就是说,只有一个句柄在同一时刻能够发送I/O请求,同一进程的多线程能够通过一个单独的句柄发送请求。
参数DeviceObject为输出参数,如果函数调用成功,指向新创建的设备对象。一个设备对象代表驱动程序所支持的一个物理的、虚拟的或逻辑的设备。
在NPF中IoCreateDevice函数返回STATUS_SUCCESS则认为函数调用成功,否则为失败。IoCreateDevice函数创建一个设备对象并返回一个指向该对象的指针。当不再需要该对象时,调用者负责调用IoDeleteDevice函数释放该对象。 NPF在卸载驱动函数NPF_Unload中释放该对象。
如果指定了设备名,只能被内核模式下的其它驱动程序所识别。但是在用户模式下的应用程序无法识别这个设备。可以通过符号连接找到该设备,使得用户模式下的应用程序能识别该设备。符号连接可以理解为设备对象起了个“别名”。设备对象的名称只能被内核模式的驱动识别,而别名已可以被用户模式下的应用程序识别。创建符号连接采用IoCreateSymbolicLink函数。
函数IoCreateSymbolicLink在一个设备对象名称与一个用户可见的名称之间建立一个符号连接。函数原型如下:
NTSTATUS
IoCreateSymbolicLink(
IN PUNICODE_STRING SymbolicLinkName,
IN PUNICODE_STRING DeviceName
);
参数SymbolicLinkName为输入参数,指向一个Unicode字符串,该字符串为用户可见的名称。参数DeviceName为输入参数,指向一个Unicode字符串,该字符串为驱动程序所创建设备对象的名称。
如果符号连接创建成功,IoCreateSymbolicLink函数返回 STATUS_SUCCESS。当不再需要该符号连接时,NPF在卸载驱动函数NPF_Unload中调用IoDeleteSymbolicLink函数删除该符号连接。
出处:http://eslxf.blog.51cto.com/918801/197742
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接