我的应用程序适用于 Windows Vista 和 XP。
连接到我的机器的硬盘驱动器上有多个。我需要获取引导系统的硬盘驱动器的驱动器号。
通过使用 GetLogicalDriveStrings 函数,我可以获得所有硬盘的驱动器号。但是我如何区分这个特定的驱动器号是我启动硬盘的分区名称?
磁盘结构如下:
disk0(以此启动)- C D G
disk1-E F H
disk2-I J
我只需要得到 C、D、G。
最佳答案
调用 GetLogicalDrives 以获取所有可用的驱动器号。
调用 GetSystemDirectory 以获取包含操作系统的驱动器。
使用 CreateFile("\.\C:", ... 打开卷
此处将 C: 替换为 GetSystemDirectory 中返回的驱动器号。
使用 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 代码调用返回句柄的 DeviceIControl 获取硬盘编号。
现在您知道包含操作系统的驱动器的硬盘编号。
在所有其他驱动器号上重复 CreateFile 和 DeviceIoControl 并将硬盘编号与您之前获得的硬盘编号进行比较。
关于c++ - 获取硬盘的盘符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5895067/