对驱动器盘符和卷名的认识

每个卷都有自己的卷标,但不同卷的卷标有可能是相同的,所以操作系统使用卷GUID路径来唯一标识一个卷

系统将驱动器的盘符和卷名保存在注册表"HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices"路径下,当操作系统启动后就会根据这些信息创建与设备相对应的符号链接

"\\?\Volume{GUID}"和"盘符(C、D、E等等):"其实都是符号链接,它们链接的设备都是"\Device\HarddiskVolumeX",X为数字,"\Device\HarddiskVolume1"为第一个逻辑驱动器、"\Device\HarddiskVolume2"为第2个逻辑驱动器以此类推。这些由系统创建的符号链接都在对象目录"\GLOBAL??"下

可以使用DefineDosDevice函数将dwFlags参数设置为DDD_REMOVE_DEFINITION来删除符号链接(驱动器盘符或者卷名),比如:

//以下代码移除符号链接"D:",移除符号链接后将不能通过该盘符来访问文件了
DefineDosDevice(DDD_REMOVE_DEFINITION, _T("D:"), NULL);

也可以使用DefineDosDevice函数将lpTargetPath参数设置为设备名来创建符号链接(驱动器盘符或者卷名),比如:

//以下代码创建符号链接"Z:",以后可以使用盘符"Z:"来访问第2个逻辑驱动器
DefineDosDevice(DDD_RAW_TARGET_PATH, _T("Z:"), _T("\\Device\\HarddiskVolume2"));

不过需要注意的是DefineDosDevice函数创建的盘符只是临时的,系统重新启动后就没有了。如果想要永久的更改驱动器盘符使用SetVolumeMountPoint函数,因为系统规定一个驱动器只能分配一个驱动器号,所以如果要更改盘符的驱动器已经分配了驱动器号,需要使用DeleteVolumeMountPoint先删除当前盘符再使用SetVolumeMountPoint设置新盘符。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值