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