функция обратного вызова PSHED_PI_RETRIEVE_ERROR_INFO (ntddk.h)
Функция обратного вызова RetrieveErrorInfo подключаемого модуля PSHED извлекает сведения об ошибке конкретной платформы об ошибке оборудования, которая произошла.
Синтаксис
PSHED_PI_RETRIEVE_ERROR_INFO PshedPiRetrieveErrorInfo;
NTSTATUS PshedPiRetrieveErrorInfo(
[in, out, optional] PVOID PluginContext,
[in] PWHEA_ERROR_SOURCE_DESCRIPTOR ErrorSource,
[in] ULONGLONG BufferLength,
[in, out] PWHEA_ERROR_PACKET Packet
)
{...}
Параметры
[in, out, optional] PluginContext
Указатель на область контекста, указанную в элементе Contextструктуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET , когда подключаемый модуль PSHED вызывал функцию PshedRegisterPlugin для регистрации в PSHED.
[in] ErrorSource
Указатель на структуру WHEA_ERROR_SOURCE_DESCRIPTOR , описывающую источник ошибок, сообщающий об ошибке оборудования.
[in] BufferLength
Размер (в байтах) буфера, на который указывает параметр Packet .
[in, out] Packet
Указатель на структуру WHEA_ERROR_PACKET , описывающую пакет ошибок оборудования для ошибки оборудования.
Возвращаемое значение
Функция обратного вызова RetrieveErrorInfo подключаемого модуля PSHED возвращает один из следующих кодов NTSTATUS:
Код возврата | Описание |
---|---|
STATUS_SUCCESS | Пакет ошибок оборудования успешно обновлен с учетом всех сведений об ошибках конкретной платформы. |
STATUS_BUFFER_TOO_SMALL | Размер буфера, на который указывает параметр Packet , как указано в параметре BufferLength , слишком мал, чтобы содержать аппаратный пакет ошибок, если он обновляется с учетом сведений об ошибке для конкретной платформы. |
STATUS_NOT_SUPPORTED | Подключаемый модуль PSHED не поддерживает указанный источник ошибок. |
STATUS_UNSUCCESSFUL | Произошла ошибка. |
Комментарии
Подключаемый модуль PSHED, участвующий в получении сведений об ошибках, задает callbacks.RetrieveErrorInfo, Элементы Callbacks.FinalizeErrorRecord и Callbacks.ClearErrorStatusструктуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET указывать на функции обратного вызова RetrieveErrorInfo, FinalizeErrorRecord и ClearErrorStatus , когда подключаемый модуль вызывает функцию PshedRegisterPlugin для регистрации в PSHED. Подключаемый модуль PSHED также должен установить флаг PshedFAErrorInfoRetrieval в элементе FunctionalAreaMask структуры WHEA_PSHED_PLUGIN_REGISTRATION_PACKET.
Каждый низкоуровневый обработчик аппаратных ошибок (LLHEH) вызывает PSHED для получения сведений об ошибках конкретной платформы о возникшей аппаратной ошибке. Если подключаемый модуль PSHED зарегистрирован для участия в извлечении сведений об ошибках, PSHED вызывает функцию обратного вызова RetrieveErrorInfo подключаемого модуля PSHED, чтобы обновить пакет ошибок оборудования, указав сведения об ошибке, относящиеся к конкретной платформе. Подключаемый модуль PSHED может изменять существующее содержимое пакета ошибок оборудования, а также добавлять дополнительные сведения в пакет ошибок оборудования. Дополнительные сведения добавляются в пакет ошибок оборудования, начиная с смещения, указанного элементом RawDataOffset структуры WHEA_ERROR_PACKET .
Подключаемый модуль PSHED должен гарантировать, что он не добавляет дополнительные сведения после завершения пакета ошибок оборудования. Объем памяти, выделяемый LLHEH для буфера, содержащего определенный пакет ошибок оборудования, вычисляется из элемента MaxRawDataLengthструктуры WHEA_ERROR_SOURCE_DESCRIPTOR , описывающей источник ошибок. Если подключаемому модулю PSHED требуется дополнительное буферное пространство для хранения дополнительных сведений, он должен участвовать в обнаружении источника ошибок и увеличивать значение в элементе MaxRawDataLengthструктуры WHEA_ERROR_SOURCE_DESCRIPTOR для каждого источника ошибок соответствующим образом, чтобы учитывать любые дополнительные сведения.
Для всех источников ошибок функция обратного вызова RetrieveErrorInfo подключаемого модуля PSHED вызывается с минимальным значением IRQL DISPATCH_LEVEL. Функция обратного вызова RetrieveErrorInfo подключаемого модуля PSHED должна выполнять только операции и выполнять вызовы других функций, разрешенных на этом высоком уровне IRQL.
Важной задачей функции обратного вызова RetrieveErrorInfo подключаемого модуля PSHED является обеспечение соответствия серьезности условия ошибки, указанной элементом ErrorSeverityWHEA_ERROR_PACKET . Например, если уровень серьезности условия ошибки отображается llHEH как WheaErrSevFatal , но подключаемый модуль PSHED поддерживает механизм восстановления для конкретного состояния ошибки, который был сообщен, подключаемый модуль PSHED может изменить уровень серьезности на WheaErrSevRecoverable , чтобы операционная система попыталась восстановиться после ошибки. Аналогичным образом, если уровень серьезности условия ошибки отображается как WheaErrSevRecoverable в LLHEH, но подключаемый модуль PSHED распознает, что попытка восстановления конкретного состояния ошибки, о чем было сообщено, приведет только к дальнейшим проблемам, подключаемый модуль PSHED может изменить уровень серьезности на WheaErrSevFatal , чтобы операционная система не попыталась выполнить восстановление после ошибки.
Для исправлений аппаратных ошибок подключаемый модуль PSHED должен получить все сведения о состоянии ошибки, необходимые для обработки условия ошибки, из функции обратного вызова RetrieveErrorInfo , так как остаток обработки аппаратной ошибки не гарантирует синхронизацию с LLHEH.
Требования
Требование | Значение |
---|---|
Целевая платформа | Персональный компьютер |
Верхняя часть | ntddk.h (включая Ntddk.h) |
IRQL | IRQL >= DISPATCH_LEVEL |