获取硬盘驱动器号

时间:2011-05-05 08:57:49

标签: c++ mfc

我的应用程序适用于Windows Vista和XP。

硬盘驱动器连接到我的机器以上。我需要获取我的系统启动的硬盘驱动器的驱动器号。

通过使用GetLogicalDriveStrings函数,我可以获取所有硬盘的驱动器号。但是,我如何区分这个特定的驱动器号是我的启动硬盘驱动器的分区名称?

磁盘的结构是:

disk0(用此引导) - C D G

disk1-E F H

disk2-I J

我只需要获得C,D,G。

1 个答案:

答案 0 :(得分:5)

调用 GetLogicalDrives 以获取所有可用的驱动器号。

调用 GetSystemDirectory 以获取包含操作系统的驱动器。

使用 CreateFile(“\。\ C:”,...

打开音量

此处将C:替换为GetSystemDirectory中返回的驱动器号。

使用 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 代码调用返回句柄的 DeviceIControl 以获取硬盘编号。

现在您知道包含操作系统的驱动器的硬盘编号。

在所有其他驱动器号上重复 CreateFile DeviceIoControl ,并将硬盘号与之前获得的硬盘号进行比较。