共用方式為


Windows 硬體錯誤架構的元件

下圖顯示 Windows 硬體錯誤架構 (WHEA) 的主要元件。

圖表說明變更程式驅動程式、使用者模式應用程式和服務、大量儲存和埠驅動程式,以及變更裝置之間的關聯性。

針對作業系統探索到的每個硬體 錯誤來源 ,會有對應的 低階硬體錯誤處理常式 (LLHEH) 。 LLHEH 是第一個執行以回應硬體錯誤狀況的作業系統程式碼。 LLHEH 可以是中斷處理常式、例外狀況處理常式、輪詢常式,或系統韌體所叫用的回呼常式。 每個 LLHEH 都是在最適當的軟體模組中實作:針對 I/O 匯流排,它們存在於其各自的匯流排磁碟機中;針對平臺設陷處理常式,它們存在於作業系統核心或硬體抽象層中, (HAL) 。

每個 LLHEH 都會執行下列工作:

  • 確認硬體錯誤。

  • 擷取與硬體錯誤相關的可用錯誤資訊。

  • 向作業系統報告硬體錯誤狀況。

一般而言,LLHEHs 會直接與硬體和韌體互動,以擷取硬體錯誤資訊。 LLHEHs 會將與硬體錯誤相關的所有資訊編譯成硬體錯誤封包。 在韌體一開始處理硬體錯誤的情況下,對應的 LLHEH 會與韌體互動以擷取錯誤封包。 所有 LLHEHs 都會將硬體錯誤封包資料傳遞至常見的錯誤報表函式,向 Windows 作業系統核心報告硬體錯誤。

LLHEHs 和 Windows 核心都會繪製 平臺特定硬體錯誤驅動程式 的服務, (PSHED) ,以收集平臺特定的錯誤資訊。 PSHED 藉由從作業系統隱藏平臺錯誤處理機制的詳細資料,以及向 Windows 作業系統公開一致的介面,提供基礎平臺的硬體錯誤報表功能抽象概念。 在涉及硬體錯誤處理資源之系統韌體介面的平臺上,PSHED 會處理與韌體互動。 這可讓核心 Windows 元件只存取被視為架構的錯誤狀態暫存器,同時提供機制,讓您能夠取得更豐富且更詳細的平臺特定硬體錯誤資訊。

針對每個處理器架構 (x86、x64 和 Itanium) ,Microsoft 提供 PSHED 來實作該架構通用的核心錯誤處理行為。 平臺廠商可以提供利用平臺特定功能的 PSHED 外掛程式來補充預設 PSHED 功能。 PSHED 外掛程式是特殊用途的 Windows 裝置驅動程式,可實作 PSHED 所呼叫的回呼介面。 PSHED 外掛程式的目的是要增強或覆寫 Microsoft 提供的 PSHED 的預設行為。

PSHED 外掛程式旨在由平臺廠商實作為硬體平臺硬體錯誤報表和復原功能的軟體介面。 PSHED 外掛程式可以使用平臺廠商所定義的任何私人介面或機制,來與平臺韌體進行介面。 這可讓平臺廠商繼續使用現有的韌體來處理硬體錯誤。 Microsoft 預期會標準化更多硬體錯誤報表和復原功能。 因此,對一般錯誤處理和報告的 PSHED 外掛程式需求會降低,因此,只有支援廠商特定功能,才能提供超出標準硬體錯誤處理功能的額外價值。

如需如何實作 PSHED 外掛程式的詳細資訊,請參閱 平臺特定硬體錯誤驅動程式外掛程式

當 LLHEH 收到硬體錯誤狀況的通知時,Windows 會以描述硬體錯誤狀況的標準化格式建立 錯誤記錄 。 Windows 接著會呼叫 PSHED,以便將任何其他硬體錯誤資訊新增至錯誤記錄,以進一步描述硬體錯誤狀況。 如果已安裝 PSHED 外掛程式並註冊以參與錯誤資訊擷取,PSHED 會接著呼叫 PSHED 外掛程式,以便進一步增強錯誤記錄中的資訊。 在 Windows 將所有硬體錯誤資訊編譯為錯誤記錄之後,它會記錄系統事件記錄檔中的錯誤資訊,並藉由引發 Windows (ETW) 事件的事件追蹤來通知使用者模式應用程式。

在某些硬體錯誤狀況下,作業系統會強制重新開機系統,以從錯誤中復原。 在這些情況下,Windows 不會在系統事件記錄檔中記錄錯誤資訊,或通知使用者模式應用程式,直到系統重新開機之後。 因此,作業系統必須先將錯誤記錄儲存到某種形式的非動態記憶體,再重新開機系統。 PSHED 提供介面,讓作業系統可以儲存和擷取錯誤記錄,以便在系統重新開機期間保留錯誤資訊。 如果已安裝 PSHED 外掛程式並註冊以參與錯誤記錄持續性,PSHED 外掛程式可以提供平臺特定的實作來儲存和擷取錯誤記錄。 重新開機系統時,作業系統會擷取已儲存的錯誤記錄,以便正確地記錄在系統事件記錄檔中,並通知使用者模式應用程式。

如需 WHEA 如何處理硬體錯誤的詳細資訊,請參閱 錯誤處理

Windows 也提供硬體錯誤管理 API,讓使用者模式錯誤管理應用程式可以設定及擷取硬體錯誤來源資訊、針對特定錯誤來源設定錯誤處理,並將硬體錯誤插入硬體平臺以供測試之用。

如需如何實作 WHEA 管理應用程式的詳細資訊,請參閱 WHEA 管理應用程式