2016-04-26 12 views
1

私はこの質問を先にSuperUserに掲載しましたが、プログラマーにはもっと適していると感じています。データはどのようにディスクに保存されますか? - EFI GUID

私が正しく理解していれば、GPTによれば、LBA 2の最初の16バイトは、ディスク上の最初のパーティションのパーティションタイプGUIDです。 Windowsディスク管理では、最初のパーティションはEFIシステムパーティションとして指定されています。

C12A7328-F81F-11D2-BA4B-00A0C93EC93B 

そして、まだ最初の16のバイトは、そうでない場合を教えてください:しかし、さらなる調査時にEFIシステムパーティションのGUIDがある

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

を他の2は大きなされている間、興味深いことに最初の3つのセクションでは、としてリトルエンディアンを行動しますエンディアン。

これはなぜですか?次のように

+2

[マイクロソフトの理由で] – PeterT

+0

他のソフトウェアと互換性がないと思われますか? –

+0

GUIDがテキストで表示される方法が標準化されているので、データに直接アクセスする唯一のソフトウェアはMicrosoftのブートマネージャであり、他のすべてのものは何らかのインターフェースを介してアクセスすることを推論します。 –

答えて

2

EFI_GUIDデータ型が宣言されている:

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

元EFIアーキテクチャ(IA64 LEとIA32e)のよう整数であり、デフォルトではリトルエンディアンであったので。私はビッグエンディアンのマシンでUEFI実装を実際に見たことがないので、標準のGUIDが別の方法で格納されるかどうかはわかりません。

+1

UEFIの仕様では、「EFIのTimeLow、TimeMid、TimeHighAndVersionフィールドがリトルエンディアンとしてエンコードされていることにも注意する必要があります。」という記述があるため、将来の仮想エンディアンの実装には依然として準拠する必要があります。残りのGUIDはビッグエンディアンです。 – unixsmurf

関連する問題