Delen via


Foutbroninformatie instellen

Een toepassing in de gebruikersmodus kan de informatie instellen voor een bepaalde foutbron die wordt ondersteund door het hardwareplatform door de WHEAErrorSourceMethods::SetErrorSourceInfoRtn-methode aan te roepen. In deze situatie biedt de toepassing een WHEA_ERROR_SOURCE_DESCRIPTOR structuur die de informatie beschrijft die moet worden ingesteld voor de opgegeven foutbron.

In het volgende codevoorbeeld ziet u hoe u de informatie over de foutbron voor een bepaalde foutbron instelt.

IWbemServices *pIWbemServices;
WHEA_ERROR_SOURCE_DESCRIPTOR ErrorSourceInfo;
BSTR ClassName;
BSTR MethodName;
HRESULT Result;
IWbemClassObject *pClass;
IWbemClassObject *pInParametersClass;
IWbemClassObject *pInParameters;
IWbemClassObject *pOutParameters;
VARIANT Parameter;
SAFEARRAY *Array;
PVOID ArrayData;
ULONG Status;

// 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.

// The following also assumes that the ErrorSourceInfo
// contains the error source information to be set.

// Note that the SetErrorSourceInfoRtn method determines
// the identifier of the error source for which the
// information is being set from the ErrorSourceId
// member of the WHEA_ERROR_SOURCE_DESCRIPTOR structure.

// Specify the class and method to execute
ClassName = SysAllocString(L"WHEAErrorSourceMethods");
MethodName = SysAllocString(L"SetErrorSourceInfoRtn");

// Get the class object for the method definition
Result =
  pIWbemServices->GetObject(
    ClassName,
    0,
    NULL,
    &pClass,
    NULL
    );

// Get the input parameter class object for the method
Result =
  pClass->GetMethod(
    MethodName,
    0,
    &pInParametersClass,
    NULL
    );

// Create an instance of the input parameter class
Result =
  pInParametersClass->SpawnInstance(
    0,
    &pInParameters
    );

// Create a safe array for the error source information
Array =
  SafeArrayCreateVector(
    VT_UI1,
    0,
    sizeof(WHEA_ERROR_SOURCE_DESCRIPTOR)
    );

// Get access to the data buffer
Result =
  SafeArrayAccessData(
    Array,
    &ArrayData
    );

// Copy the error source information
*(PWHEA_ERROR_SOURCE_DESCRIPTOR)ArrayData =
  ErrorSourceInfo;

// Release access to the data buffer
SafeArrayUnaccessData(Array);

// Set the ErrorSourceInfo parameter
Parameter.vt = VT_ARRAY | VT_UI1;
Parameter.parray = Array;
Result =
  pInParameters->Put(
    L"ErrorSourceInfo",
    0,
    &Parameter,
    0
    );
VariantClear(&Parameter);

// Set the Length parameter
Parameter.vt = VT_UI4;
Parameter.ulVal = sizeof(WHEA_ERROR_SOURCE_DESCRIPTOR);
Result =
  pInParameters->Put(
    L"Length",
    0,
    &Parameter,
    0
    );
VariantClear(&Parameter);

// Call the SetErrorSourceInfoRtn method indirectly
// by calling the IWbemServices::ExecMethod method.
Result =
  pIWbemServices->ExecMethod(
    ClassName,
    MethodName,
    0,
    NULL,
    &pInParameters,
    &pOutParameters,
    NULL
    );

// Get the status from the output parameters object
Result =
  pOutParameters->Get(
    L"Status",
    0,
    &Parameter,
    NULL,
    NULL
    );
Status = Parameter.ulval;
VariantClear(&Parameter);

// Free up resources
SysFreeString(ClassName);
SysFreeString(MethodName);
pInParameters->Release();
pInParametersClass->Release();
pClass->Release();
pOutParameters->Release();

Een toepassing stelt doorgaans de informatie voor een foutbron in wanneer deze de configuratie van de foutbron wijzigt. Een toepassing kan de configuratie van een foutbron wijzigen door de volgende stappen uit te voeren:

  1. Haal de WHEA_ERROR_SOURCE_DESCRIPTOR structuur op die de specifieke foutbron beschrijft.

    Voor meer informatie over het verkrijgen van informatie over alle foutbronnen in het systeem, zie Informatie over het verkrijgen van foutbroninformatie voor alle foutbronnen.

    Zie Informatie over het ophalen van foutbroninformatie voor een specifieke foutbron voor meer informatie over het verkrijgen van informatie over een bepaalde foutbron in het systeem.

  2. Wijzig de inhoud van de WHEA_ERROR_SOURCE_DESCRIPTOR structuur om de configuratie van de foutbron te wijzigen.

  3. Stel de foutbrongegevens voor de foutbron in door de methode WHEAErrorSourceMethods::SetErrorSourceInfoRtn aan te roepen

Wijzigingen die worden aangebracht in de configuratie van een foutbron, worden pas van kracht nadat het systeem opnieuw is opgestart.