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

C++ 如何知道磁盘是基本的还是动态的?,c++,c,windows,disk,C++,C,Windows,Disk,在windows中,是否可以从c/c++程序中了解我们正在处理的磁盘类型?忘记gpt或mbr,如何知道它是基本的还是动态的?程序输入可以是驱动器号或任何与磁盘相关的信息,输出应该是动态的或基本的。 不需要直接的方法,即使是漫长的过程,也没关系。 我在msdn中找不到太多。请帮帮我 根据MSDN检查GetDriveType()。 检测磁盘的类型 没有特定的函数以编程方式检测特定文件或目录所在的磁盘类型。有一种间接的方法 首先,调用GetVolumePathName。然后,调用CreateFile以

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

根据MSDN检查GetDriveType()。

检测磁盘的类型

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


首先,调用GetVolumePathName。然后,调用CreateFile以使用路径打开卷。接下来,使用IOCTL\u VOLUME\u GET\u VOLUME\u DISK\u区段和卷句柄获取磁盘号,并使用磁盘号构造磁盘路径,例如“\?\PhysicalDriveX”。最后,使用IOCTL\u DISK\u GET\u DRIVE\u LAYOUT\u EX获取分区列表,并检查分区列表中每个条目的分区类型。

在windows中有一种方法,但它不是直接的

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

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

带有IOCTL\u DISK\u GET\u DRIVE\u LAYOUT\u EX控制代码的DeviceIoControl()方法可用于获取此信息


我想,它指的是gpt或mbr,我需要基本的或动态的。不管怎样,我是从艾伦那里得到的:)谢谢艾伦,就在你发帖前一分钟,我从另一个朋友那里得到的。无论如何,非常感谢。我需要检查它如何为我的环境工作:)