PSHED_PI_GET_ALL_ERROR_SOURCES コールバック関数 (ntddk.h)
PSHED プラグインの GetAllErrorSources コールバック関数は、ハードウェア プラットフォームによって実装されるすべてのエラー ソースを表すエラー ソース記述子構造体の一覧を返します。
構文
PSHED_PI_GET_ALL_ERROR_SOURCES PshedPiGetAllErrorSources;
NTSTATUS PshedPiGetAllErrorSources(
[in, out, optional] PVOID PluginContext,
[in, out] PULONG Count,
[in, out] PWHEA_ERROR_SOURCE_DESCRIPTOR *ErrorSrcs,
[in, out] PULONG Length
)
{...}
パラメーター
[in, out, optional] PluginContext
PSHED プラグインが PSHED に登録するために PshedRegisterPlugin 関数を呼び出したときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の Context メンバーで指定されたコンテキスト領域へのポインター。
[in, out] Count
ULONG 型の変数へのポインター。 GetAllErrorSources コールバック関数が呼び出されると、この変数には、PSHED によって提供される ErrorSources パラメーターによって指されるバッファーに含まれるエラー ソース記述子構造体の数が含まれます。 GetAllErrorSources コールバック関数がバッファー内のエラー ソース記述子構造体の数を変更する場合は、返される前に、この変数を新しい数のエラー ソース記述子構造体に設定する必要があります。
[in, out] ErrorSrcs
ハードウェア プラットフォームによって実装されるすべてのエラー ソースを表す WHEA_ERROR_SOURCE_DESCRIPTOR 構造体の配列を受け取るバッファーへのポインター。 GetAllErrorSources コールバック関数が呼び出されると、このバッファーには、PSHED によって提供されるエラー ソース記述子構造体の初期リストが含まれます。 PSHED プラグインは、ハードウェア プラットフォームによって実装されるすべてのエラー ソースを正確に表すように、リストを変更できます。
[in, out] Length
ErrorSources パラメーターが指すバッファーのサイズ (バイト単位) を含む ULONG 型の変数へのポインター。 サイズが小さすぎてエラー ソース記述子構造体の変更されたリストを含めなければ、 GetAllErrorSources コールバック関数は、この変数を、リストを格納するために必要なバッファー サイズに設定し、STATUS_BUFFER_TOO_SMALLを返します。
戻り値
PSHED プラグインの GetAllErrorSources コールバック関数は、次のいずれかの NTSTATUS コードを返します。
リターン コード | 説明 |
---|---|
STATUS_SUCCESS | ErrorSources パラメーターが指すバッファーで、エラー ソース記述子構造体の変更されたリストが正常に返されました。 |
STATUS_BUFFER_TOO_SMALL | ErrorSources パラメーターが指すバッファーのサイズが小さすぎて、エラー ソース記述子構造体の一覧が格納できません。 |
STATUS_UNSUCCESSFUL | エラーが発生しました。 |
解説
エラー ソース検出に参加する PSHED プラグインは、プラグインが PshedRegisterPlugin 関数を呼び出して PSHED に登録するときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の Callbacks.GetAllErrorSources メンバーが GetAllErrorSources コールバック関数を指すように設定します。 PSHED プラグインは、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の FunctionalAreaMask メンバーに PshedFADiscovery フラグも設定する必要があります。
オペレーティング システムが起動すると、Windows カーネルは PSHED を呼び出して、ハードウェア プラットフォームによって実装されるすべてのエラー ソースを表すエラー ソース記述子構造体の一覧を取得します。 PSHED は、エラー ソース記述子構造体の初期リストを作成します。 エラー ソース検出に参加するために PSHED プラグインが登録されている場合、PSHED は PSHED プラグインの GetAllErrorSources コールバック関数を呼び出します。 PSHED プラグインは、ハードウェア プラットフォームによって実装されるすべてのエラー ソースを正確に表すように、エラー ソース記述子構造体の一覧に次の変更を任意に組み合わせて行うことができます。
1 つ以上のエラー ソース記述子構造体の内容を変更します。
一覧から 1 つ以上のエラー ソース記述子構造体を削除します。
1 つ以上の新しいエラー ソース記述子構造体を一覧に追加します。
PSHED プラグインが 1 つ以上の新しいエラー ソース記述子構造体をリストに追加する必要があり、バッファーのサイズが小さすぎて追加の構造体を含めえない場合、PSHED プラグインの GetAllErrorSources コールバック関数は Length パラメーターが指す変数を、追加の構造体を含むリストを格納し、STATUS_BUFFER_TOO_SMALLを返すために必要なバッファー サイズに設定する必要があります。 このような場合、PSHED は、より大きなバッファーを割り当て、エラー ソース記述子構造体の一覧を新しいバッファーにコピーし、PSHED プラグインの GetAllErrorSources コールバック関数を 2 回目に呼び出します。
エラー ソース検出に参加する PSHED プラグインは、オプションの GetErrorSourceInfo コールバック関数を実装することもできます。 このような場合、PSHED プラグインは、PshedRegisterPlugin 関数を呼び出して PSHED に登録するときに、WHEA_PSHED_PLUGIN_REGISTRATION_PACKET構造体の Callbacks.GetErrorSourceInfo メンバーを GetErrorSourceInfo コールバック関数を指すように設定します。
要件
要件 | 値 |
---|---|
対象プラットフォーム | デスクトップ |
Header | ntddk.h (Ntddk.h を含む) |
IRQL | IRQL = DISPATCH_LEVEL |