функция обратного вызова PSHED_PI_ATTEMPT_ERROR_RECOVERY (ntddk.h)

Функция обратного вызова AttemptRecovery подключаемого модуля PSHED пытается восстановиться после восстанавливаемой аппаратной ошибки.

Синтаксис

PSHED_PI_ATTEMPT_ERROR_RECOVERY PshedPiAttemptErrorRecovery;

NTSTATUS PshedPiAttemptErrorRecovery(
  [in, out, optional] PVOID PluginContext,
  [in]                ULONG BufferLength,
  [in]                PWHEA_ERROR_RECORD ErrorRecord
)
{...}

Параметры

[in, out, optional] PluginContext

Указатель на область контекста, указанную в элементе ContextWHEA_PSHED_PLUGIN_REGISTRATION_PACKET структуры, когда подключаемый модуль PSHED вызвал функцию PshedRegisterPlugin для регистрации в PSHED.

[in] BufferLength

Размер (в байтах) записи об ошибке, на которую указывает параметр ErrorRecord .

[in] ErrorRecord

Указатель на структуру WHEA_ERROR_RECORD , описывающую запись ошибки для восстанавливаемой аппаратной ошибки.

Возвращаемое значение

Функция обратного вызова AttemptRecovery подключаемого модуля PSHED возвращает один из следующих кодов NTSTATUS.

Код возврата Описание
STATUS_SUCCESS Попытка восстановления после ошибки оборудования была успешной.
STATUS_UNSUCCESSFUL Попытка восстановления после ошибки оборудования не удалась.

Комментарии

Подключаемый модуль PSHED, участвующий в восстановлении ошибок, задает элемент Callbacks.AttemptRecovery структуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET , чтобы он указывал на функцию обратного вызова AttemptRecovery , когда подключаемый модуль вызывает функцию PshedRegisterPlugin для регистрации в PSHED. Подключаемый модуль PSHED также должен задать флаг PshedFAErrorRecovery в элементе FunctionalAreaMask структуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET.

Ядро Windows пытается восстановиться после восстанавливаемой ошибки оборудования, обрабатывая ошибку после того, как все данные об ошибках оборудования будут помещены в запись об ошибке. Затем ядро Windows вызывает PSHED, чтобы предоставить ему возможность выполнять все необходимые операции восстановления. Если подключаемый модуль PSHED зарегистрирован для участия в восстановлении ошибок, PSHED вызывает функцию обратного вызова AttemptRecovery подключаемого модуля PSHED, чтобы попытаться исправить ошибку и(или) выполнить дополнительные операции, необходимые для полного восстановления после состояния ошибки.

Если ядро Windows или PSHED успешно восстанавливается после ошибки оборудования, оно обновляет структуру WHEA_ERROR_RECORD , описывающую ошибку, перед вызовом функции обратного вызова AttemptRecovery подключаемого модуля PSHED следующим образом:

  • Элемент Header.Severity изменяется с WheaErrSevRecoverable на WheaErrSevCorrected.

  • Задан бит Header.Flags.Recovered .

Если подключаемый модуль PSHED успешно восстанавливается после ошибки оборудования, PSHED обновит структуру WHEA_ERROR_RECORD от имени подключаемого модуля PSHED после вызова функции обратного вызова AttemptRecovery подключаемого модуля PSHED. Функция обратного вызова AttemptRecovery подключаемого модуля PSHED не должна изменять запись об ошибке.

PSHED вызывает функцию обратного вызова AttemptRecovery подключаемого модуля PSHED в IRQL <= HIGH_LEVEL. Точное значение IRQL, при котором вызывается эта функция обратного вызова, зависит от конкретного типа ошибки оборудования, которая произошла.

Требования

Требование Значение
Целевая платформа Персональный компьютер
Верхняя часть ntddk.h (включая Ntddk.h)
IRQL IRQL >= DISPATCH_LEVEL

См. также раздел

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET