如何将驱动器号转换为c ++中的物理驱动器名?

时间:2016-04-11 14:07:06

标签: c++ windows scsi deviceiocontrol

我的问题是: 鉴于连接到我的Windows机器的脱机磁盘,我怎么能得到它的卷号?

场景: 我需要为共享存储(使用CreateFile函数)创建一个处理程序,以便在DeviceIoControl函数中使用它(需要执行SCSI保留)。

" CreateFile" function获取物理驱动器名称(即\。\ PhysicalDisk1)或磁盘的卷号(即\。\ E:)。

我的问题是,我不想使用物理驱动器名称,只是磁盘信件。 这在磁盘处于联机状态时工作正常,但是当磁盘处于脱机状态时我也必须支持。

有没有办法在设备/磁盘离线时确定字母? 我认为有,因为当我把磁盘放到网上时,Windows自动给它正确的字母。因此,如果操作系统知道该字母是什么,那么必须有一个我可以使用的API或工具。

谢谢, 丹尼尔。

1 个答案:

答案 0 :(得分:0)

不幸的是,当驱动器处于脱机状态时,驱动器号可供另一个可能插入的驱动器使用。因此,尽管Windows会记住特定驱动器曾经拥有的驱动器号,并且在重新插入时会尝试重复使用相同的字母,但如果插入另一个使用了记忆信件的驱动器,则旧驱动器将获得不同的字母如果它然后插入。

但如果当前未连接该驱动器,则无法通过名称或字母打开物理驱动器。您只需获得相应的"文件未找到"。