Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функция обратного вызова 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
Указатель на область контекста, указанную в элементе WHEA_PSHED_PLUGIN_REGISTRATION_PACKET контекста контексте, когда подключаемый модуль PSHED вызывает функцию PshedRegisterPlugin для регистрации в PSHED.
[in] BufferLength
Размер записи об ошибке в байтах, на которую указывает параметр ErrorRecord.
[in] ErrorRecord
Указатель на структуру WHEA_ERROR_RECORD, описывающую запись об ошибке для восстанавливаемой аппаратной ошибки.
Возвращаемое значение
Функция обратного вызова PSHED AttemptRecovery возвращает один из следующих кодов NTSTATUS.
| Возвращаемый код | Описание |
|---|---|
| STATUS_SUCCESS | Попытка восстановиться после ошибки оборудования была успешной. |
| STATUS_UNSUCCESSFUL | Попытка восстановиться после ошибки оборудования была неудачной. |
Замечания
Подключаемый модуль PSHED, который участвует в восстановлении ошибок, задает функцию обратного вызова .AttemptRecovery член структуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET, чтобы указать на ее функцию обратного вызова AttemptRecovery, когда подключаемый модуль вызывает функцию PshedRegisterPlugin, чтобы зарегистрировать себя в PSHED. Подключаемый модуль PSHED также должен задать флаг PshedFAErrorRecover y в элементе FunctionalAreaMask структуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET.
Ядро Windows пытается восстановиться после восстанавливаемой аппаратной ошибки во время обработки ошибки после того, как все данные об ошибках оборудования были помещены в запись об ошибке. Затем ядро Windows вызывает PSHED, чтобы предоставить ему возможность выполнять все необходимые операции восстановления. Если подключаемый модуль PSHED зарегистрирован для участия в восстановлении ошибок, PSHED вызывает функцию обратного вызова PSHED подключаемого модуля PSHED, чтобы попытаться исправить ошибку и /или выполнить любые дополнительные операции, необходимые для полного восстановления из условия ошибки.
Если ядро Windows или PSHED успешно восстанавливается после ошибки оборудования, оно обновляет структуру WHEA_ERROR_RECORD, описывающую ошибку перед вызовом функции обратного вызова модуля PSHED, обратного вызова:
Элемент Header.Severity изменяется с WheaErrSevRecoverable на WheaErrSevCorrected.
Установлен бит Header.Flags.Recovered.
Если подключаемый модуль PSHED успешно восстанавливается после ошибки оборудования, PSHED обновит структуру WHEA_ERROR_RECORD от имени подключаемого модуля PSHED после вызова функции обратного вызова PSHED. Функция обратного вызова модуля PSHED не должна изменять запись об ошибке.
PSHED вызывает функцию обратного вызова модуля PSHED в IR <QL = HIGH_LEVEL. Точное значение IRQL, при котором вызывается эта функция обратного вызова, зависит от конкретного типа ошибки оборудования, возниквшей.
Требования
| Требование | Ценность |
|---|---|
| целевая платформа | Настольный |
| заголовка | ntddk.h (include Ntddk.h) |
| IRQL | IRQL >= DISPATCH_LEVEL |