PSHED_PI_RETRIEVE_ERROR_INFO コールバック関数 (ntddk.h)
PSHED プラグインの RetrieveErrorInfo コールバック関数は、発生したハードウェア エラーに関するプラットフォーム固有のエラー情報を取得します。
構文
PSHED_PI_RETRIEVE_ERROR_INFO PshedPiRetrieveErrorInfo;
NTSTATUS PshedPiRetrieveErrorInfo(
[in, out, optional] PVOID PluginContext,
[in] PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
[in] ULONGLONG BufferLength,
[in, out] PWHEA_ERROR_PACKET Packet
)
{...}
パラメーター
[in, out, optional] PluginContext
PSHED プラグインが PSHED に登録するために PshedRegisterPlugin 関数を呼び出したときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 構造体の Context メンバーで指定されたコンテキスト領域へのポインター。
[in] ErrorSource
ハードウェア エラーを報告したエラー ソースを記述する WHEA_ERROR_SOURCE_DESCRIPTOR 構造体へのポインター。
[in] BufferLength
Packet パラメーターが指すバッファーのサイズ (バイト単位)。
[in, out] Packet
ハードウェア エラーのハードウェア エラー パケットを記述する WHEA_ERROR_PACKET 構造体へのポインター。
戻り値
PSHED プラグインの RetrieveErrorInfo コールバック関数は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 形容 |
---|---|
STATUS_SUCCESS | ハードウェア エラー パケットは、プラットフォーム固有のエラー情報で正常に更新されました。 |
STATUS_BUFFER_TOO_SMALL | BufferLength パラメーターで指定されている Packet パラメーターが指すバッファーのサイズが小さすぎて、プラットフォーム固有のエラー情報で更新された場合、ハードウェア エラー パケットを格納できません。 |
STATUS_NOT_SUPPORTED | PSHED プラグインは、指定されたエラー ソースをサポートしていません。 |
STATUS_UNSUCCESSFUL | エラーが発生しました。 |
備考
エラー情報の取得に参加する PSHED プラグインは、Callbacks.RetrieveErrorInfo、Callbacks.FinalizeErrorRecord、および Callbacks.ClearErrorStatus を指す WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 構造体のメンバーを設定します。 の RetrieveErrorInfo、FinalizeErrorRecord、および ClearErrorStatus コールバック関数は、プラグインが PSHED に登録するために PshedRegisterPlugin 関数を呼び出すときに行われます。 また、PSHED プラグインは、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の FunctionalAreaMask メンバーに PshedFAErrorInfoRetrieval フラグを設定する必要があります。
各低レベルハードウェア エラー ハンドラー (LLHEH) は PSHED を呼び出して、発生したハードウェア エラーに関するプラットフォーム固有のエラー情報を取得します。 PSHED プラグインがエラー情報の取得に参加するように登録されている場合、PSHED は PSHED プラグインの RetrieveErrorInfo コールバック関数を呼び出して、プラットフォーム固有のエラー情報でハードウェア エラー パケットを更新できるようにします。 PSHED プラグインは、ハードウェア エラー パケットの既存の内容を変更したり、ハードウェア エラー パケットに補足情報を追加したりすることができます。 補足情報は、WHEA_ERROR_PACKET 構造体の RawDataOffset メンバーによって指定されたオフセットから始まるハードウェア エラー パケットに追加されます。
PSHED プラグインは、ハードウェア エラー パケットの末尾を超えて補足情報が追加されないようにする必要があります。 LLHEH が特定のハードウェア エラー パケットを格納するためにバッファーに割り当てるメモリの量は、エラー ソースを記述する WHEA_ERROR_SOURCE_DESCRIPTOR 構造体の MaxRawDataLength メンバーから計算されます。 PSHED プラグインに補足情報を格納するために追加のバッファー領域が必要な場合は、エラー ソースの検出に参加し、補足情報を考慮するために、各エラー ソースの WHEA_ERROR_SOURCE_DESCRIPTOR 構造体の MaxRawDataLength メンバーの値を増やす必要があります。
すべてのエラー ソースについて、PSHED プラグインの RetrieveErrorInfo コールバック関数は、DISPATCH_LEVELの最小 IRQL で呼び出されます。 PSHED プラグインの RetrieveErrorInfo コールバック関数は、操作のみを実行し、その高い IRQL レベルで許可されている他の関数を呼び出す必要があります。
PSHED プラグインの RetrieveErrorInfo コールバック関数の重要なタスクは、WHEA_ERROR_PACKET の ErrorSeverity メンバーによって指定されたエラー条件の重大度が適切であることを確認することです。 たとえば、エラー状態の重大度レベルが LLHEH によって WheaErrSevFatal として報告されるが、PSHED プラグインが報告された特定のエラー状態の回復メカニズムをサポートしている場合、PSHED プラグインは重大度レベルを WheaErrSevRecoverable に変更して、オペレーティング システムがエラーからの回復を試みるようにすることができます。 同様に、エラー状態の重大度レベルが LLHEH によって WheaErrSevRecoverable として報告されているが、報告された特定のエラー状態の回復を試みると、PSHED プラグインがそれ以上の問題を引き起こすことを認識している場合、PSHED プラグインは重大度レベルを WheaErrSevFatal に変更して、オペレーティング システムがエラーからの回復を試みないようにすることができます。
修正されたハードウェア エラーの場合、PSHED プラグインは、ハードウェア エラーの残りの処理が LLHEH と同期されるとは限らないため、エラー状態の処理に必要なすべてのエラー状態情報を RetrieveErrorInfo コールバック関数内から取得する必要があります。
必要条件
要件 | 価値 |
---|---|
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | ntddk.h (Ntddk.h を含む) |
IRQL | IRQL >= DISPATCH_LEVEL |
関連項目
ClearErrorStatus の