PSHED_PI_ATTEMPT_ERROR_RECOVERY回呼函式 (ntddk.h)
PSHED 外掛程式的 AttemptRecovery 回呼函式會嘗試從可復原的硬體錯誤中復原。
語法
PSHED_PI_ATTEMPT_ERROR_RECOVERY PshedPiAttemptErrorRecovery;
NTSTATUS PshedPiAttemptErrorRecovery(
[in, out, optional] PVOID PluginContext,
[in] ULONG BufferLength,
[in] PWHEA_ERROR_RECORD ErrorRecord
)
{...}
參數
[in, out, optional] PluginContext
當 PSHED 外掛程式呼叫 PshedRegisterPlugin 函式,以向 PSHED 註冊本身時,WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的內容成員中指定的內容區域指標。
[in] BufferLength
ErrorRecord 參數所指向之錯誤記錄的大小,以位元組為單位。
[in] ErrorRecord
描述可復原硬體錯誤之錯誤記錄 的WHEA_ERROR_RECORD 結構的指標。
傳回值
PSHED 外掛程式的 AttemptRecovery 回呼函式會傳回下列其中一個 NTSTATUS 程式代碼。
傳回碼 | Description |
---|---|
STATUS_SUCCESS | 嘗試從硬體錯誤復原成功。 |
STATUS_UNSUCCESSFUL | 嘗試從硬體錯誤復原失敗。 |
備註
參與錯誤復原的 PSHED 外掛程式會將 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 Callbacks.AttemptRecovery 成員設定為在外掛程式呼叫 PshedRegisterPlugin 函式以向 PSHED 註冊本身時指向其 AttemptRecovery 回呼函式。 PSHED 外掛程式也必須在 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 FunctionalAreaMask 成員中設定 PshedFAErrorRecovery 旗標。
Windows 核心嘗試從可復原的硬體錯誤中復原,同時它會在所有硬體錯誤數據放入錯誤記錄之後處理錯誤。 Windows 核心接著會呼叫 PSHED,讓您有機會執行任何必要的復原作業。 如果 PSHED 外掛程式已註冊參與錯誤復原,PSHED 會呼叫 PSHED 外掛程式的 AttemptRecovery 回呼函式,以便嘗試更正錯誤和/或執行從錯誤狀況完全復原所需的任何其他作業。
如果 Windows 核心或 PSHED 已成功從硬體錯誤復原,它會更新 描述錯誤的WHEA_ERROR_RECORD 結構,再呼叫 PSHED 外掛程式的 AttemptRecovery 回呼函式,如下所示:
Header.Severity 成員會從 WheaErrSevRecoverable 變更為 WheaErrSevCorrected。
已設定 Header.Flags.Recovered 位。
如果 PSHED 外掛程式成功從硬體錯誤復原,PSHED 將會在呼叫 PSHED 外掛程式 的 AttemptRecovery 回呼函式之後,代表 PSHED 外掛程式更新WHEA_ERROR_RECORD結構。 PSHED 外掛程式的 AttemptRecovery 回呼函式不應該修改錯誤記錄。
PSHED 會在 IRQL <= HIGH_LEVEL 呼叫 PSHED 外掛程式的 AttemptRecovery 回調函式。 呼叫此回呼函式的確切 IRQL 取決於發生的特定硬體錯誤類型。
規格需求
需求 | 值 |
---|---|
目標平台 | 桌面 |
標頭 | ntddk.h (包含 Ntddk.h) |
IRQL | IRQL >= DISPATCH_LEVEL |