ESRT 資料表定義
ESRT 資料表的指標會透過EFI_CONFIGURATION_TABLE中的對應 GUID 來識別。
#define EFI_SYSTEM_RESOURCE_TABLE_GUID \
{ 0xb122a263, 0x3661, 0x4f68, 0x99, 0x29, 0x78, 0xf8, 0xb0, 0xd6, 0x21, 0x80 }
下表描述 ESRT 資料表的格式,以及資料表中包含的韌體資源專案。
欄位 | 陣列值 | 位元組長度 | 位元組位移 | 描述 |
---|---|---|---|---|
韌體資源計數 | 4 | 0 | ESRT 中的韌體資源專案數目。 不得為零。 | |
韌體資源上限 | 4 | 4 | 不需要重新配置資料表,即可加入的資源陣列專案數目上限。 必須大於或等於韌體資源計數。 | |
韌體資源版本 | 8 | 8 | 韌體資源專案版本。 此值應設定為 1 | |
韌體資源專案陣列 | 韌體資源專案 0 | |||
Firmware 類別 | 16 | 16 | GUID,識別可透過更新封裝更新的韌體元件。 此 GUID 會在更新期間傳遞至 UEFI 更新密封式執行時間服務,做為更新頭的 CapsuleGuid 參數。 | |
韌體類型 | 4 | 32 | 下列其中一個值,可識別韌體資源的類型: 0:未知 1:系統韌體 2:裝置韌體 3:UEFI 驅動程式 |
|
韌體版本 | 4 | 36 | 目前的韌體版本,其中較大的數位代表較新版本。 此值的格式未定義,但應該納入版本主要和次要數位。 建議的格式是主字,第二個字是次要版本號碼。 | |
最低支援的韌體版本 | 4 | 40 | 為指定的系統/裝置復原韌體資源的最低韌體資源版本。 如果此韌體版本提供安全性相關修正,則最低相容版本應等於目前的韌體版本。 | |
太空旗標 | 4 | 44 | 系統會 (OS 負責設定 UEFI 規格第 7.5.3 節所定義之 UEFI) 規格第 7.5.3 節所定義的旗標,以 UEFI 標頭的 Flags 欄位 (16 – 31 個旗標。 | |
上次嘗試版本 | 4 | 48 | 嘗試更新的最後一個韌體版本。 這個值使用與韌體版本相同的格式。 | |
上次嘗試狀態 | 4 | 52 | 下列其中一個值,描述上次韌體更新嘗試的狀態: 0:成功 1:失敗 2:資源不足 3:版本不正確 4:影像格式無效 5:驗證錯誤 6:電源事件 - AC 未連線 7:電源事件 - 電池不足 |
|
... | 韌體資源專案 1 |
核心 UEFI 韌體應該配置並填入包含一個系統資源專案的 ESRT 組態表,以供本身 (系統韌體) 。 為了說明目的,本指南核心韌體也會建立一個額外的專案,代表使用韌體更新套件機制支援裝置韌體更新的裝置。
一律必須有一個專案描述系統韌體。 此專案是用來以系統韌體更新為目標。 如果實作以單一整合型作業的形式執行系統和裝置韌體更新,則必須使用系統韌體專案來鎖定更新。 在其他所有情況下,裝置韌體更新會以描述裝置韌體的 ESRT 專案為目標。
接著,第一個步驟是產生 GUID 來代表這兩個韌體資源,也就是 {SYSTEM_FIRMWARE} 和 {DEVICE_FIRMWARE}。 表 2 顯示資料表定義的範例。 此範例假設這兩個韌體版本目前都是第 1 版 (韌體版本 == 1) 。
欄位 | 陣列值 | 值 | 註解 |
---|---|---|---|
韌體資源計數 | 2 | 此資料表包含兩個韌體資源專案。 | |
韌體資源上限 | 2 | 此資料表配置包含足夠的空間來描述最多兩個資源。 | |
韌體資源版本 | 1 | 此資料表使用的韌體資源專案格式版本為 1。 | |
韌體資源專案陣列 | 韌體資源專案 0 | ||
Firmware 類別 | (SYSTEM_FIRMWARE) | 此 GUID 會識別透過 PnP 進行更新的系統韌體。 | |
韌體類型 | 1 | 系統韌體類型為 1。 | |
韌體版本 | 1 | 目前的系統韌體版本為 1。 | |
最低支援的韌體版本 | 1 | 最低支援的韌體版本為 1,因此無法回復至版本 1 之前的韌體。 | |
密封旗標 | 0 | 系統韌體不會定義任何私人密封更新旗標。 | |
上次嘗試版本 | 1 | 嘗試更新的最後一個系統韌體版本是第 1 版。 | |
上次嘗試狀態 | 0 | 上次系統韌體更新嘗試成功。 | |
韌體資源專案 1 | |||
Firmware 類別 | (DEVICE_FIRMWARE) | 此 GUID 會識別透過 PnP 更新的裝置韌體。 | |
韌體類型 | 2 | 裝置韌體類型為 2。 | |
韌體版本 | 1 | 目前的裝置韌體版本為 1。 | |
最低支援的韌體版本 | 1 | 最低支援的韌體版本為 1,因此韌體無法回復至版本 1 之前的版本。 | |
密封旗標 | 0x8010 | 裝置韌體會定義 (0x8010) 的私人擷取更新旗標。 | |
上次嘗試版本 | 1 | 嘗試更新的最後一個裝置韌體版本是第 1 版 | |
上次嘗試狀態 | 0 | 上次裝置韌體更新嘗試成功。 |
本檔中的上述 ESRT 範例用於其他位置,以逐步解說韌體更新程式,並描述更新程式的 Windows 支援,以及支援的韌體實作。