エラーの挿入への参加
エラー情報取得に参加するには、PSHED プラグインで次のコールバック関数を実装する必要があります。
次のコード サンプルは、これらのコールバック関数を実装する方法を示しています。
//
// The PSHED plug-in's GetInjectionCapabilities callback function
//
NTSTATUS
GetInjectionCapabilities(
IN OUT PVOID PluginContext,
OUT PWHEA_ERROR_INJECTION_CAPABILITIES Capabilities
)
{
// Set the members in the structure pointed to by the
// Capabilities parameter to indicate the error injection
// capabilities supported by the PSHED plug-in.
...
// Return success status
return STATUS_SUCCESS;
}
//
// The PSHED plug-in's InjectError callback function
//
NTSTATUS
InjectError(
IN OUT PVOID PluginContext,
IN ULONG ErrorType,
IN ULONGLONG Parameter1,
IN ULONGLONG Parameter2,
IN ULONGLONG Parameter3,
IN ULONGLONG Parameter4
)
{
// Inject the hardware error specified in the ErrorType
// parameter into the hardware platform.
// Parameter1 through Parameter4 contain any additional
// data that is required to inject the error.
...
// Note: For injected errors that are fatal or otherwise
// unrecoverable, this callback function might not continue
// execution past this point before the Windows kernel
// generates a bug check in response to the error condition.
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to update the error record
else
{
return STATUS_UNSUCCESSFUL;
}
}
エラー挿入に参加する PSHED プラグインは、オペレーティング システムに自身を登録するとき、PshedFAErrorInjection フラグを指定する必要があります。