我的应用程序适用于Windows Vista和XP。
硬盘驱动器连接到我的机器以上。我需要获取我的系统启动的硬盘驱动器的驱动器号。
通过使用GetLogicalDriveStrings函数,我可以获取所有硬盘的驱动器号。但是,我如何区分这个特定的驱动器号是我的启动硬盘驱动器的分区名称?
磁盘的结构是:
disk0(用此引导) - C D G
disk1-E F H
disk2-I J
我只需要获得C,D,G。
答案 0 :(得分:5)
调用 GetLogicalDrives 以获取所有可用的驱动器号。
调用 GetSystemDirectory 以获取包含操作系统的驱动器。
使用 CreateFile(“\。\ C:”,...
打开音量此处将C:替换为GetSystemDirectory中返回的驱动器号。
使用 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 代码调用返回句柄的 DeviceIControl 以获取硬盘编号。
现在您知道包含操作系统的驱动器的硬盘编号。
在所有其他驱动器号上重复 CreateFile 和 DeviceIoControl ,并将硬盘号与之前获得的硬盘号进行比较。