c++ - 如何以编程方式区分虚拟机中的 GPT 动态磁盘和 GPT 基本磁盘

标签 c++ linux windows mbr virtual-disk

最近我必须找到一种方法来区分虚拟机使用的分区类型,从虚拟磁盘读取原始数据我能够通过检查偏移量 1C2(GPT 的 EE)找到它,以防万一MBR 磁盘如果磁盘是动态的,1C2 的偏移量有 42,如果是基本磁盘,相同的 1C2 偏移量有 07,这意味着基本磁盘,现在如果它是 GPT 磁盘,我如何区分基本磁盘和动态磁盘。

提前致谢。

最佳答案

在迭代 GPT 磁盘的 GPT 分区表条目时,搜索“分区类型 GUID”设置为 5808C8AA-7E8F-42E0-85D2-E1E90434CFB3 的条目以及该条目对应的隐藏“属性”(位 62)应该设置。该 PTE 将用于 LDM 数据库。除此之外,LDM 本身应该还有一个分区表条目。所以总的来说,这个场景有 2 个分区表条目,一个用于 LDM 数据库(隐藏分区),另一个用于 LDM。

关于c++ - 如何以编程方式区分虚拟机中的 GPT 动态磁盘和 GPT 基本磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24539150/

相关文章:

c++ - 主要跳过功能?

c++ - constexpr函数中的静态constexpr变量

Linux 和 cocos2d : 'cc1plus' : execvp: No such file or directory

c++ - Ubuntu 和 OS-X 之间的头文件兼容性

windows - 在批处理文件中,如何从文件路径获取文件名?

windows - AMD64 页面条目基地址字段如何将 52 位地址编码为 40 位?

c++ - 具有通用功能的专用模板类

c++ - 设备未打开错误 + QIODevice::write

linux - 执行系统库调用的源代码级调试的推荐方法是什么?

android - 多平台软件的最佳语言