现在的位置: 首页 > 综合 > 正文

转:驱动开发函数IoCreateDevice /IoCreateSymbolicLink / IoDeleteDevice

2013年04月02日 ⁄ 综合 ⁄ 共 1331字 ⁄ 字号 评论关闭

转自:http://hi.baidu.com/alalmn/item/f02d5c866fc2d6eae496e089

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

为指针调用驱动程序对象。每个驱动程序接收一个参数的指针。

DeviceExtensionSize  //0

给_DEVICE_OBJECT.DeviceExtension指定内存空间大小,具体看自己定义结构的大小

DeviceName

设备名字

DeviceType

设备类型 这里我们用FILE_DEVICE_UNKNOWN

DeviceCharacteristics

设备特征信息 一般为0

Exclusive

是否指定设备为独占 是为TRUE,否为FALSE

DeviceObject

指针变量接收一个指向新创建的DEVICE_OBJECT结构。用来回传数据

返回值

调用成功会返回 STATUS_SUCCESS   如果出错会返回下列值

STATUS_INSUFFICIENT_RESOURCES//资源不足

STATUS_OBJECT_NAME_EXISTS    //指定对象名存在

STATUS_OBJECT_NAME_COLLISION//对象名有冲突

///////////////////////////////////////////////////////////////

IoCreateSymbolicLink

创建一个设备链接。驱动程序虽然有了设备名称,但是这种设备名称只能在内核 态可见,而对于应用程序是不可见的,因此,驱动需要要暴露一个符号链接,该链接指向真正的设备名称

 

NTSTATUS   IoCreateSymbolicLink( 

  IN PUNICODE_STRING  SymbolicLinkName,

  IN PUNICODE_STRING  DeviceName    );

参数:

SymbolicLinkName

Unicode字符串指针,是一个用户态可见的名称。

 

DeviceName

Unicode字符串指针,是驱动程序创建的设备对象名称。

 

Return Value

如果符号链接创建成功 返回STATUS_SUCCESS 

///////////////////////////////////////////////////////////////

VOID   IoDeleteDevice(  

 IN PDEVICE_OBJECT  DeviceObject

   );

 

参数

DeviceObject

PDEVICE_OBJECT类型的指针,指向需要删除的设备对象

 

无返回值

抱歉!评论已关闭.