次の方法で共有


PSHED_PI_READ_ERROR_RECORD コールバック関数 (ntddk.h)

PSHED プラグインの ReadErrorRecord コールバック関数は、システムの永続データ ストレージからエラー レコードを読み取ります。

構文

PSHED_PI_READ_ERROR_RECORD PshedPiReadErrorRecord;

NTSTATUS PshedPiReadErrorRecord(
  [in, out, optional] PVOID PluginContext,
  [in]                ULONG Flags,
  [in]                ULONGLONG ErrorRecordId,
  [out]               PULONGLONG NextErrorRecordId,
  [in, out]           PULONG RecordLength,
  [out]               PWHEA_ERROR_RECORD ErrorRecord
)
{...}

パラメーター

[in, out, optional] PluginContext

PSHED プラグインが PSHED に自身を登録するために PshedRegisterPlugin 関数を呼び出したときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 構造体の Context メンバーで指定されたコンテキスト領域へのポインター。

[in] Flags

読み取り操作に影響を与えるフラグのビットごとの OR の組み合わせ。 フラグは現在定義されていません。

[in] ErrorRecordId

システムの永続データ・ストレージから読み取られるエラー・レコードの ID。 この識別子と一致するシステムの永続データ ストレージに格納されているエラー レコードがない場合、 ReadErrorRecord コールバック関数はSTATUS_OBJECT_NOT_FOUNDを返す必要があります。

[out] NextErrorRecordId

システムの永続データ ストレージに格納されている次のエラー レコードの識別子を受け取る ULONGLONG 型の変数へのポインター。 システムの永続データ・ストレージに他のエラー・レコードが保管されていない場合は、現在読み取られているエラー・レコードの ID をこのパラメーターに戻す必要があります。

[in, out] RecordLength

ErrorRecord パラメーターが指すバッファーのサイズ (バイト単位) を含む ULONG 型の変数へのポインター。 バッファーのサイズが読み取り中のエラー レコードを格納するのに十分な大きさの場合、 ReadErrorRecord コールバック関数は、この変数をバッファーで返されるエラー レコードのサイズ (バイト単位) に設定します。 ただし、バッファーのサイズが小さすぎて読み取り中のエラー レコードが格納されない場合、 ReadErrorRecord コールバック関数は、この変数を、エラー レコードを格納するために必要なサイズ (バイト単位) に設定します。 このような場合、 ReadErrorRecord コールバック関数はSTATUS_BUFFER_TOO_SMALLを返す必要があります。

[out] ErrorRecord

システムの永続データ・ストレージから読み取られたエラー・レコードを受け取るバッファーへのポインター。

戻り値

PSHED プラグインの ReadErrorRecord コールバック関数は、次のいずれかの NTSTATUS コードを返します。

リターン コード 説明
STATUS_SUCCESS エラー レコードは、システムの永続データ ストレージから正常に読み取られました。
STATUS_OBJECT_NOT_FOUND ErrorRecordId パラメーターで指定された識別子と一致するエラー レコードがシステムの永続データ ストレージにありません。
STATUS_BUFFER_TOO_SMALL バッファーのサイズが小さすぎて、読み取り中のエラー レコードを格納できません。
STATUS_UNSUCCESSFUL エラーが発生しました。

解説

エラー レコードの永続化に参加する PSHED プラグインは、プラグインが PshedRegisterPlugin 関数を呼び出して PSHED に登録するときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET 構造体の Callbacks.WriteErrorRecordCallbacks.ReadErrorRecordCallbacks.ClearErrorRecord メンバーを、その WriteErrorRecord、ReadErrorRecord、ClearErrorRecord コールバック関数を指すように設定します。 また、PSHED プラグインは、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の FunctionalAreaMask メンバーに PshedFAErrorRecordPersistence フラグを設定する必要があります。

Windows カーネルは PSHED を呼び出して、致命的なエラー状態またはその他の回復不能なエラー状態の後にシステムが再起動された後に、システムの永続データ ストレージからエラー レコードを読み取ります。 エラー レコードの永続化に参加するために PSHED プラグインが登録されている場合、PSHED は PSHED プラグインの ReadErrorRecord コールバック関数を呼び出して読み取り操作を実行します。 システムの永続データ ストレージからエラー レコードを読み取るために使用されるメカニズムは、プラットフォーム固有です。

要件

要件
対象プラットフォーム デスクトップ
Header ntddk.h (Ntddk.h を含む)
IRQL IRQL = DISPATCH_LEVEL

こちらもご覧ください

ClearErrorRecord

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET

WriteErrorRecord