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

こちらもご覧ください

GetErrorSourceInfo

PshedRegisterPlugin

WHEA_ERROR_SOURCE_DESCRIPTOR

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET