2016-04-26 107 views
1

我之前在SuperUser上發佈了這個問題,但我覺得它更適合程序員。數據如何存儲在磁盤上? - EFI GUID

如果我理解正確,根據GPT,LBA 2的前16個字節是磁盤上第一個分區的分區類型GUID。在Windows磁盤管理中,第一個分區被指定爲EFI系統分區。但是在進一步調查的EFI系統分區的GUID是:

C12A7328-F81F-11D2-BA4B-00A0C93EC93B 

然而前16個字節告訴我,否則:

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

有趣的是,前3個部分充當小尾數,而其他2大端。

爲什麼會出現這種情況?

+2

維基百科說[因爲微軟](https://en.wikipedia.org/wiki/Globally_unique_identifier#Binary_encoding) – 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)爲小端默認情況下,所以是整數。我還沒有在big-endian機器上看到過UEFI的實現,所以我不知道標準的GUID是否會被另外存儲。

+1

UEFI規範指出:「還應該注意EFI中的TimeLow,TimeMid,TimeHighAndVersion字段被編碼爲小尾數。」,所以任何假設的未來大端實現都需要遵守。其餘的GUID是big-endian。 – unixsmurf