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

转自: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类型的指针,指向需要删除的设备对象

 

无返回值

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值