2

在 windows 中是否有可能从 ac/c++ 程序中知道我们正在处理什么样的磁盘?忘记gpt或mbr,如何知道它是基本的还是动态的?程序输入可以是驱动器号或任何与磁盘相关的信息,输出应该是动态的或基本的。不需要直接的做法,即使是漫长的过程,也可以。我在 msdn 中找不到太多内容。请帮帮我。

4

3 回答 3

6

Windows中有一种方法,但它不是直截了当的。

没有直接的 API 来确定磁盘是基本还是动态,但是所有动态磁盘都将具有 LDM 信息。

因此,如果驱动器上有一个带有 LDM 信息的分区,那么它将是一个动态磁盘。

带有 IOCTL_DISK_GET_DRIVE_LAYOUT_EX 控制代码的 DeviceIoControl() 方法可用于获取此信息。

这是一个带有示例控制台应用程序的帖子,可以满足您的要求。

于 2009-12-31T09:53:10.803 回答
0

根据 MSDN http://msdn.microsoft.com/en-us/library/aa363785(VS.85).aspx

检测磁盘类型

没有特定的函数可以以编程方式检测特定文件或目录所在的磁盘类型。有一种间接的方法。

首先,调用 GetVolumePathName。然后,调用 CreateFile 以使用该路径打开卷。接下来,使用 IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS 和卷句柄来获取磁盘号,并使用磁盘号来构造磁盘路径,例如“\?\PhysicalDriveX”。最后,使用 IOCTL_DISK_GET_DRIVE_LAYOUT_EX 获取分区列表,并检查分区列表中每个条目的 PartitionType。

于 2009-12-31T09:49:59.437 回答
-2

查看 GetDriveType() 。

于 2009-12-31T09:48:34.217 回答