我的应用程序适用于 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/

10-13 06:44