如何知道磁盘是基本的还是动态的?

时间:2009-12-31 09:24:33

标签: c++ c windows disk

在Windows中,我们可以从c / c ++程序中了解我们正在处理哪种磁盘?忘记gpt或mbr,如何知道它是基本的还是动态的?程序输入可以是驱动器号或与磁盘相关的任何信息,输出应该是动态的或基本的。 不需要直接的做法,即使它是漫长的过程,也没关系。 我在msdn中找不到多少。请帮帮我。

3 个答案:

答案 0 :(得分:6)

Windows中有一种方法,但它不是直接的。

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

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

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

Here is a post with a sample console application to do what you're asking for.

答案 1 :(得分: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。

答案 2 :(得分:-2)

查看GetDriveType()。