共用方式為


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

另請參閱

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET