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

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

 2009-09-11 00:00:00 来源:WEB开发网   
核心提示: 函数NPF_CreateDevice主要使用IoCreateDevice与IoCreateSymbolicLink系统接口函数实现,IoCreateDevice 函数为驱动程序的使用者分配内存,深度剖析WinPcap之(六)——驱动程序的初始化与清除 (3)(3),并初始化一个设备对象,函数原型

函数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字符串,同时字符串必须为完整的路径。利用该字符串对设备对象命名。

上一页  1 2 3 4  下一页

Tags:深度 剖析 WinPcap

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