Impostazione delle informazioni sull'origine degli errori
Un'applicazione in modalità utente può impostare le informazioni per un'origine di errore specifica supportata dalla piattaforma hardware chiamando il metodo WHEAErrorSourceMethods::SetErrorSourceInfoRtn . In questa situazione, l'applicazione fornisce una struttura WHEA_ERROR_SOURCE_DESCRIPTOR che descrive le informazioni da impostare per l'origine di errore specificata.
Nell'esempio di codice seguente viene illustrato come impostare le informazioni sull'origine degli errori per un'origine di errore specifica.
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();
Un'applicazione imposta in genere le informazioni per un'origine di errore quando modifica la configurazione dell'origine degli errori. Un'applicazione può modificare la configurazione di un'origine errore eseguendo la procedura seguente:
Recuperare la struttura WHEA_ERROR_SOURCE_DESCRIPTOR che descrive l'origine di errore specifica.
Per altre informazioni su come ottenere informazioni su tutte le origini degli errori nel sistema, vedere Recupero delle informazioni sull'origine degli errori per tutte le origini errori.
Per altre informazioni su come ottenere informazioni su un'origine di errore specifica nel sistema, vedere Recupero di informazioni sull'origine degli errori per un'origine di errore specifica.
Modificare il contenuto della struttura WHEA_ERROR_SOURCE_DESCRIPTOR per modificare la configurazione dell'origine errore.
Impostare le informazioni sull'origine degli errori per l'origine degli errori chiamando il metodo WHEAErrorSourceMethods::SetErrorSourceInfoRtn
Tutte le modifiche apportate alla configurazione di un'origine di errore non verranno applicate fino al riavvio del sistema.