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