2

我之前在SuperUser上发布了这个问题,但我觉得它更适合程序员。

如果我理解正确,根据 GPT,LBA 2 的前 16 个字节是磁盘上第一个分区的分区类型 GUID。在 Windows 磁盘管理中,第一个分区被指定为 EFI 系统分区。然而,经过进一步调查,EFI 系统分区的 GUID 为:

C12A7328-F81F-11D2-BA4B-00A0C93EC93B

然而前 16 个字节却告诉我:

28732AC1-1FF8-D211-BA4B-00A0C93EC93B

有趣的是,前 3 个部分充当小端,而其他 2 个部分是大端。

为什么会这样?

4

1 回答 1

3

EFI_GUID 数据类型声明如下:

typedef struct {
  UINT32  Data1;
  UINT16  Data2;
  UINT16  Data3;
  UINT8   Data4[8];
} EFI_GUID;

因为原始 EFI 架构(IA64 LE 和 IA32e)默认是 little-endian,所以整数也是。我还没有真正看到大端机器上的 UEFI 实现,所以我不知道是否会存储标准 GUID。

于 2016-04-27T13:10:20.070 回答