获取硬盘驱动器号

kar*_*hik 4 c++ mfc

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

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

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

磁盘的结构是:

disk0(用此引导) - CDG

disk1-EFH

disk2-IJ

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

kar*_*hik 5

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

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

使用CreateFile打开卷("\.\ C:",...

这里用GetSystemDirectory中返回的驱动器号替换C:.

呼叫DeviceIControl返回的句柄与IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS代码来获取硬盘编号.

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

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