获取硬盘驱动器的盘符

4

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

我的计算机连接了多个硬盘驱动器。我需要获取系统启动的硬盘驱动器的驱动器字母。

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

磁盘的结构如下:

disk0(启动此项)- C D G

disk1- E F H

disk2- I J

我只需要获取C、D、G。


又是一个问题,其中karthikuser692270接受了@karthik的答案。说真的,你正在遭受自卑情结的困扰,请去看医生。 - Sebastian Mach
1个回答

5

调用 GetLogicalDrives 函数获取所有可用的驱动器字母。

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

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

在此处,将 C: 替换为 GetSystemDirectory 返回的驱动器字母。

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

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

重复对所有其他驱动器字母调用 CreateFileDeviceIoControl 并将硬盘编号与之前获取的进行比较。


又是一个问题,其中karthikuser692270接受了@karthik的答案。说真的,你正在遭受自卑情结的困扰;去看看医生吧。 - Sebastian Mach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接