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) はデフォルトでリトル エンディアンだったので、整数もそうです。ビッグ エンディアン マシンでの UEFI 実装を実際に見たことがないので、標準の GUID が別の方法で格納されるかどうかはわかりません。

于 2016-04-27T13:10:20.070 に答える