数据如何存储在磁盘上? - EFI GUID

时间:2016-04-26 17:54:26

标签: guid endianness disk uefi guid-partition-table

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

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

C12A7328-F81F-11D2-BA4B-00A0C93EC93B

然而前16个字节告诉我:

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

有趣的是前3个部分是小端,而另外2个是大端。

为什么会这样?

1 个答案:

答案 0 :(得分:3)

EFI_GUID数据类型声明如下:

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

由于原始EFI体系结构(IA64 LE和IA32e)默认为小端,因此整数也是如此。我还没有在big-endian机器上看到过UEFI实现,所以我不知道是否会以其他方式存储标准GUID。