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 プラグインが PSHED に登録するために PshedRegisterPlugin 関数を呼び出したときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の Context メンバーで指定されたコンテキスト領域へのポインター。
[in] BufferLength
ErrorRecord パラメーターが指すエラー レコードのサイズ (バイト単位)。
[in] ErrorRecord
回復可能なハードウェア エラーのエラー レコードを記述する WHEA_ERROR_RECORD 構造体へのポインター。
戻り値
PSHED プラグインの AttemptRecovery コールバック関数は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | ハードウェア エラーからの復旧が成功しました。 |
STATUS_UNSUCCESSFUL | ハードウェア エラーから回復できませんでした。 |
注釈
エラー回復に参加する PSHED プラグインは、プラグインが PshedRegisterPlugin 関数を呼び出して PSHED に登録するときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の Callbacks.AttemptRecovery メンバーが AttemptRecovery コールバック関数を指すように設定します。 PSHED プラグインは、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の FunctionalAreaMask メンバーに PshedFAErrorRecovery フラグを設定する必要もあります。
Windows カーネルは、すべてのハードウェア エラー データがエラー レコードに格納された後にエラーを処理している間に、回復可能なハードウェア エラーからの回復を試みます。 その後、Windows カーネルは PSHED を呼び出して、必要な回復操作を実行する機会を提供します。 エラー回復に参加するために PSHED プラグインが登録されている場合、PSHED は PSHED プラグインの AttemptRecovery コールバック関数を呼び出して、エラーを修正したり、エラー状態から完全に回復するために必要な追加操作を実行したりできます。
Windows カーネルまたは PSHED がハードウェア エラーから正常に回復した場合、PSHED プラグインの AttemptRecovery コールバック関数を次のように呼び出す前に、エラーを記述するWHEA_ERROR_RECORD構造が更新されます。
Header.Severity メンバーが WheaErrSevRecoverable から WheaErrSevCorrected に変更されました。
Header.Flags.Recovered ビットが設定されています。
PSHED プラグインがハードウェア エラーから正常に回復した場合、PSHED プラグインの AttemptRecovery コールバック関数の呼び出しが返された後、PSHED プラグインに代わって、PSHED によってWHEA_ERROR_RECORD構造が更新されます。 PSHED プラグインの AttemptRecovery コールバック関数は、エラー レコードを変更しないでください。
PSHED は、IRQL <= HIGH_LEVEL で PSHED プラグインの AttemptRecovery コールバック関数を呼び出します。 このコールバック関数が呼び出される正確な IRQL は、発生したハードウェア エラーの特定の種類によって異なります。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | ntddk.h (Ntddk.h を含む) |
IRQL | IRQL >= DISPATCH_LEVEL |