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 註冊本身時,在 ContextWHEA_PSHED_PLUGIN_REGISTRATION_PACKET 成員中指定的內容區域指標。
[in] BufferLength
錯誤記錄的大小,以位元組為單位,ErrorRecord 參數所指向。
[in] ErrorRecord
描述可復原硬體錯誤之錯誤記錄之 WHEA_ERROR_RECORD 結構的指標。
傳回值
PSHED 外掛程式的 AttemptRecovery 回呼函式會傳回下列其中一個 NTSTATUS 程式代碼。
傳回碼 | 描述 |
---|---|
STATUS_SUCCESS | 從硬體錯誤中復原的嘗試成功。 |
STATUS_UNSUCCESSFUL | 嘗試從硬體錯誤復原失敗。 |
言論
參與錯誤復原的 PSHED 外掛程式會設定 WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 結構的 Callbacks.AttemptRecovery 成員,以在外掛程式呼叫 PshedRegisterPlugin 函式時,指向其 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 |