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.WriteErrorRecord、Callbacks.ReadErrorRecord、Callbacks.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 |