【Window内核驱动开发】——通过符号链接获取真实设备

【我的】Window驱动开发——通过符号链接获取真实设备

作者:zcr214 时间:2016/5/5

 

我们想要把驱动绑定到指定的盘符,实际是绑定到它对应的真实设备卷,实际上windows用户看到的C盘D盘只是符号链接名,而真实设备通常是/Device/HarddiskVolume2,/Device/HarddiskVolume3等,符号链接名可以任意更改,但是真实设备卷却是不变的。而实际用户并不会知道哪个盘符对应哪个卷,所以需要我们通过符号链接来获取到真实设备卷。

1.    符号链接名与设备名

windows下的设备是以"\Device\[设备名]”形式命名的。例如磁盘分区的C盘,D盘的设备名称就是"\Device\HarddiskVolume2”,"\Device\HarddiskVolume3”。

当然也可以不指定设备名称,那么I/O管理器会自动分配一个数字作为设备的名称。例如"\Device\00000001",设备名并不容易记忆。

符号链接可以理解为设备的别名,更重要的是设备名,只能被内核模式下的其他驱动所识别,而别名可以被用户模式下的应用程序识别。“C:”就是一个符号链接名。而在驱动中,符号链接名是这样写的:

L”\\??\\c:”  对应 \??\c:

L”\\DosDevices\\HelloDDK”  对应 \DosDevices\HelloDDK

2.    ZwOpenSymbolicLinkObject()打开符号链接对象

WDK提供了打开符号链接对象的接口函数ZwOpenSymbolicLinkObject(),其原型如下:

NTSTATUS

NTAPI

ZwOpenSymbolicLinkObject(

    _Out_PHANDLE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值