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



我的问题是:如果有一个脱机磁盘连接到我的windows机器,我如何获取它的卷号?

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

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

我的问题是,我不想使用物理驱动器名称,只想使用磁盘号。当磁盘联机时,这很好,但当磁盘脱机时,我也必须支持。

当设备/磁盘脱机时,是否有方法确定字母?我想是的,因为当我把磁盘联机时,windows会自动给它正确的字母。因此,如果操作系统知道字母是什么,就必须有一个API或一个我也可以使用的工具。

谢谢,丹尼尔。

不幸的是,当驱动器脱机时,驱动器号可供可能插入的另一个驱动器使用。因此,尽管Windows会记住某个特定驱动器过去的驱动器号,并且在重新插入时会尝试重复使用同一个驱动器号,但如果插入了使用记住的驱动器号的另一个驱动器,则如果插入旧驱动器,则会得到不同的驱动器号。

但是,如果物理驱动器当前未连接,则无法按名称或字母打开该驱动器。您只会得到相当于"找不到文件"的信息。

最新更新