エラー挿入機能の取得
Note
WHEA エラー挿入インターフェイスには、EINJ ACPI テーブルを持つコンピューターか、エラー挿入機能領域を実装する PSHED プラグインが必要です。 ほとんどのコンシューマー システムには EINJ 実装が含まれていません。また、Windows には、エラー挿入を有効にする PSHED プラグインが組み込まれていません。 どちらも存在しない場合、エラー挿入インターフェイスはエラーを返します。
ユーザー モード アプリケーションは、WHEAErrorInjectionMethods::GetErrorInjectionCapabilitiesRtn メソッドを呼び出すことによって、ハードウェア プラットフォームのエラー挿入機能に関する情報を取得できます。 このメソッドは、ハードウェア プラットフォームでサポートされているエラー挿入機能を記述する WHEA_ERROR_INJECTION_CAPABILITIES 構造を返します。
次のコード例は、エラー挿入機能の情報を取得する方法を示しています。
IWbemServices *pIWbemServices;
BSTR ClassName;
BSTR MethodName;
HRESULT Result;
IWbemClassObject *pOutParameters;
VARIANT Parameter;
ULONG Status;
WHEA_ERROR_INJECTION_CAPABILITIES ErrorInjectionCapabilities;
// The following example assumes that the application
// has previously connected to WMI on the local machine
// and that the pIWbemServices variable contains the
// pointer that was returned from the call to the
// IWbemLocator::ConnectServer method.
// Specify the class and method to execute
ClassName = SysAllocString(L"WHEAErrorInjectionMethods");
MethodName = SysAllocString(L"GetErrorInjectionCapabilitiesRtn");
// Call the GetErrorInjectionCapabilitiesRtn method indirectly
// by calling the IWbemServices::ExecMethod method.
Result =
pIWbemServices->ExecMethod(
ClassName,
MethodName,
0,
NULL,
NULL,
&pOutParameters,
NULL
);
// Get the status from the output parameters object
Result =
pOutParameters->Get(
L"Status",
0,
&Parameter,
NULL,
NULL
);
Status = Parameter.ulVal;
VariantClear(&Parameter);
// Get the capabilities from the output parameters object
Result =
pOutParameters->Get(
L"Capabilities",
0,
&Parameter,
NULL,
NULL
);
ErrorInjectionCapabilities.AsULONG = Parameter.ulVal;
VariantClear(&Parameter);
// Process the error injection capabilities data
...
// Free up resources
SysFreeString(ClassName);
SysFreeString(MethodName);
pOutParameters->Release();