共用方式為


順暢的危機預防與復原

如果韌體更新失敗,結果可能會造成問題。 更新最好會失敗,但系統具有復原性,而且不會讓終端使用者察覺。 最糟的是,韌體更新失敗可能會導致無法使用的系統,要求終端使用者將其系統傳回零售商或製造商以進行修復。 後者是所謂的 危機

危機可能是因為韌體更新失敗,或因為與 Windows 或其他系統層面不相容的韌體所造成。 本節討論專為防止和復原因韌體更新失敗而造成的危機所設計的功能。 我們預期韌體更新測試涵蓋範圍是由韌體作者防止大部分的韌體不相容所造成。

為了為終端使用者提供絕佳的體驗,必須符合韌體驅動程式套件更新機制的下列危機防護和復原需求。 這些需求不會排除額外的危機防護或復原解決方案。

預先安裝準則

當系統韌體執行實際更新時,必須執行一系列的預先安裝檢查。 系統韌體必須執行這項檢查,以確保有足夠的能力來完成更新。 如果有多個韌體更新,也建議您先檢查每個更新,再套用更新。 下表提供要檢查和驗證的專案清單。 所有檢查都必須在適用的情況下執行。 執行測試並無特定順序。

檢查類型 說明
電源 系統必須至少有 25% 的電池計量。

不需要透過 USB 纜線和/或 AC 電源) 來連接電源 (電源。

在測試/實驗室環境中,只要提供隨附電源,就可接受沒有電池存在,但仍允許韌體更新。 不過,必須在死電/未充電電池與沒有電池存在之間做出區別。
安全性 驗證更新承載已正確簽署。

驗證承載中的任何 PE 型 EFI 檔案是否已使用適當的 EFI 憑證正確簽署
完整性 對韌體更新承載執行完整性檢查。
版本 確認所套用的韌體不會降級目前已安裝的韌體,而不是 LowestSupportedFirmwareVersion 值。
儲存體 視系統的硬體而定,會適當地執行下列檢查

將取代目前韌體備份有足夠的空間

裝置中有足夠的空間可容納新的韌體。

任何失敗都必須產生適當的上次嘗試狀態錯誤碼。 如需詳細資訊,請參閱 ESRT 資料表定義韌體更新狀態中的上次嘗試狀態錯誤碼資訊。

如果套用多個更新,有些則通過預先安裝檢查,而其他更新則平臺韌體可以繼續更新通過預先安裝檢查的資源韌體。 不過,任何無法進行預先安裝檢查的資源都不得更新。

安裝後準則

安裝韌體 (裝置或系統) 之後,必須加以檢查,以驗證新的更新韌體映射是否為預定專案。 這是為了將實際更新程式期間導入的任何損毀風險降到最低 (,例如快閃 ROM 中的黏性位、更新期間匯流排上的雜訊等等) 。

更新程式必須驗證更新的韌體通過完整性檢查。 如果失敗,則必須復原至最後一個已知良好的韌體版本來復原。

任何失敗都必須產生適當的上次嘗試狀態錯誤碼。 如需詳細資訊,請參閱 ESRT 資料表定義韌體更新狀態中的上次嘗試狀態錯誤碼資訊。

從安裝和開機失敗中復原

為了防止系統達到無法開機狀態,韌體更新機制必須符合下列需求,在韌體更新無法安裝,或系統無法順利開機的情況下。

在下列各節中,「已認可」一詞是用來描述韌體。 一旦韌體「認可」,韌體會視為完整安裝,且不會因為開機失敗而自動由韌體復原。「未認可的」韌體描述部分更新韌體,而且在韌體更新無法完成或更新韌體偵測到失敗的情況下,可能會回復到舊版,例如,更新韌體 (偵測到失敗。 更新) 不正確 CRC 檢查。 是否認可韌體是韌體應該在內部追蹤的內容,而且不會擷取為 ESRT 的一部分。

韌體更新不成功

例如,如果無法 (安裝個別系統或裝置韌體,或因為某種損毀或安裝更新) 時發生電源遺失,更新最多可能會重試三次 (3 次) 嘗試,包括第一次嘗試。 如果韌體將會執行其他重試嘗試,系統不得在任何嘗試之間開機進入 Windows。 如果所有嘗試都失敗,更新韌體必須捨棄更新。 如果已部分套用更新,韌體必須回復至舊版。 韌體必須回復至舊版,而不需要任何使用者互動。 更新失敗不會影響其他擱置的更新;應該嘗試擱置的韌體更新。

處理所有更新之後,UEFI 將會繼續開機 Windows。 UEFI 韌體必須確認已成功安裝任何未認可的韌體更新,以減輕因電源遺失而造成的問題, (UEFI 絕不應嘗試使用部分寫入韌體) 來開機 Windows。

安裝失敗的可能原因包括,但不限於下列問題:

安裝失敗原因 錯誤碼
資源不足 STATUS_INSUFFICIENT_RESOURCES
電源遺失 STATUS_INSUFFICIENT_POWER
硬體失敗 STATUS_POWER_STATE_INVALID

韌體更新成功,但 Windows 無法開機

UEFI 韌體一旦認可,就不負責復原更新的韌體。 Windows 中的現有容錯移轉邏輯會在兩次失敗的開機嘗試之後,將終端使用者改用 Windows 復原環境 (WinRE) 。 WinRE 可能無法成功開機。 使用者必須採取手動復原步驟來復原其系統,或必須將其裝置傳回零售商/製造商。

此失敗類別的可能原因包括,但不限於:

  • 與 OS 驅動程式不相容的韌體。

  • 與 OS 元件不相容的韌體。

如果硬體廠商決定實作其他邏輯,以判斷 Windows 是否已成功開機,這是可接受的。 如先前所述,預期韌體作者的韌體更新測試涵蓋範圍可防止因不相容韌體而造成的大部分危機。

ESRT 資料表定義

隨插即用裝置

撰寫更新驅動程式套件

處理更新

來自 UEFI 環境的裝置 I/O

韌體更新狀態