共用方式為


PSHED Plug-In執行的 PFA

PSHED) 外掛程式 (平臺特定的硬體錯誤驅動程式可以在 ECC 記憶體上執行 PFA) 預測性失敗分析 (。 發生這種情況時,外掛程式而非 WHEA 必須監視 ECC 記憶體頁面。 如果外掛程式判斷 ECC 記憶體頁面已超過錯誤閾值,則會向 WHEA 指出此狀態。 然後 WHEA 會嘗試讓記憶體頁面離線。

注意 如果 PSHED 外掛程式執行 PFA,並使用登錄來儲存其組態設定,例如錯誤閾值和監視逾時,就不應該依賴或使用 WHEA 原則設定中所述的 WHEA PFA 組態設定。

發生 ECC 記憶體錯誤時,WHEA 和外掛程式會執行下列步驟:

  1. 階硬體錯誤處理常式 (LLHEH) 會收到記憶體錯誤狀況的通知。

  2. LLHEH 會從錯誤來源擷取記憶體錯誤的相關資訊,並使用錯誤資料來完成硬體錯誤封包。 此封包會格式化為 WHEA_ERROR_PACKET 結構。

  3. LLHEH 會呼叫 PSHED 以擷取任何平臺特定的硬體錯誤資訊。 如果已安裝並註冊 PSHED 外掛程式以擷取錯誤的相關資訊,PSHED 會呼叫 PSHED 外掛程式,讓外掛程式可以修改傳回 LLHEH 的錯誤相關資訊。

  4. LLHEH 會呼叫 Windows 作業系統核心,並將錯誤封包傳遞給它。

  5. Windows 核心會建立 錯誤記錄 ,並將來自來自 LLHEH 之錯誤封包的資訊新增至其中。 此外,Windows 核心會新增錯誤的其他資訊,例如錯誤來源、錯誤的嚴重性,以及錯誤記錄發生次數。

  6. Windows 核心會呼叫 PSHED,以允許 PSHED 將區段新增至錯誤記錄。

  7. 如果已安裝 PSHED 外掛程式並註冊以擷取錯誤資訊,PSHED 會呼叫 PSHED 外掛程式,以便修改錯誤記錄中的資訊。

  8. 如果 PSHED 外掛程式正在 ECC 記憶體頁面上執行 PFA,則必須執行下列動作:

    • WHEA_ERROR_PACKET結構WHEA_ERROR_PACKET_FLAGS成員中設定PlatformPfaControl位。 如果設定此位,WHEA 將不再負責該記憶體頁面上的 PFA。
    • 如果外掛程式判斷發生錯誤的 ECC 記憶體頁面應該離線,請在WHEA_ERROR_PACKET_FLAGS成員中設定PlatformDirectedOffline位。 如果設定此位,WHEA 會嘗試讓記憶體頁面離線。

    否則,PSHED 外掛程式必須清除WHEA_ERROR_PACKET結構WHEA_ERROR_PACKET_FLAGS成員中的PlatformPfaControlPlatformDirectedOffline位。

    注意 如果 清除 PlatformPfaControl 位,WHEA 會執行 PFA,如果設定為這麼做,則會判斷是否應該離線處理發生錯誤的 ECC 記憶體頁面。 如需此程式的詳細資訊,請參閱 PFA 由 WHEA 執行

  9. 如果 ECC 記憶體頁面應該離線,WHEA 會先呼叫系統記憶體管理員來執行這項作業。

    注意 呼叫系統記憶體管理員時,不保證 ECC 記憶體頁面實際上會離線。

WHEA 接著會將記憶體頁面新增至系統上的開機設定資料 (BCD) 存放區。 這可防止在下一次系統重新開機之後使用記憶體頁面。

注意 如果登錄值 DisableOffline 設定為非零值,WHEA 將不會採用硬體元件,例如 ECC 記憶體頁面。 此外,如果 登錄值 MemPersistOffline 設定為 0,WHEA 將不會將記憶體頁面新增至 BCD 存放區。 如需登錄值的詳細資訊,請參閱 WHEA 原則設定

如需系統記憶體管理員的詳細資訊,請參閱 Windows SDK 檔中的 記憶體管理

  1. Windows 核心會產生 ETW 事件,並在系統事件記錄檔中記錄錯誤資訊。