Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
To participate in error recovery, a PSHED plug-in must implement an AttemptRecovery callback function.
The following code example shows how to implement this callback function.
//
// The PSHED plug-in's AttemptRecovery callback function
//
NTSTATUS
AttemptRecovery(
IN OUT PVOID PluginContext,
IN ULONG BufferLength,
IN PWHEA_ERROR_RECORD ErrorRecord
)
{
// Check if the error condition was not corrected by the
// operating system or by the PSHED.
if (ErrorRecord->Header.Severity != WheaErrSevCorrected)
{
// Attempt to correct the error condition.
...
// If not successful, return failure status
if (...)
{
return STATUS_UNSUCCESSFUL;
}
}
// Perform any additional operations that are required
// to fully recover from the error condition.
...
// If successful, return success status
if (...)
{
return STATUS_SUCCESS;
}
// Failed to fully recover from the error condition
else
{
return STATUS_UNSUCCESSFUL;
}
}
A PSHED plug-in that participates in error recovery must specify the PshedFAErrorRecovery flag when it registers itself with the operating system.