WEB开发网
开发学院操作系统windows 2008 深度剖析WinPcap之(六)——驱动程序的初始化与清除... 阅读

深度剖析WinPcap之(六)——驱动程序的初始化与清除 (3)

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 参数DeviceType 为输入参数,描述一个系统定义的FILE_DEVICE_XXX常量,深度剖析WinPcap之(六)——驱动程序的初始化与清除 (3)(4),表示设备的种类(诸如FILE_DEVICE_DISK、FILE_DEVICE_KEYBOARD等)或一个厂商定义的新类型设备,NPF

参数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

上一页  1 2 3 4 

Tags:深度 剖析 WinPcap

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