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

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

Синтаксис

PSHED_PI_READ_ERROR_RECORD PshedPiReadErrorRecord;

NTSTATUS PshedPiReadErrorRecord(
  [in, out, optional] PVOID PluginContext,
  [in]                ULONG Flags,
  [in]                ULONGLONG ErrorRecordId,
  [out]               PULONGLONG NextErrorRecordId,
  [in, out]           PULONG RecordLength,
  [out]               PWHEA_ERROR_RECORD ErrorRecord
)
{...}

Параметры

[in, out, optional] PluginContext

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

[in] Flags

Битовая комбинация флагов OR, влияющих на операцию чтения. В настоящее время флаги не определены.

[in] ErrorRecordId

Идентификатор записи об ошибке, считываемой из постоянного хранилища данных системы. Если в постоянном хранилище данных системы не хранится запись об ошибке, соответствующая этому идентификатору, функция обратного вызова ReadErrorRecord должна возвращать STATUS_OBJECT_NOT_FOUND.

[out] NextErrorRecordId

Указатель на переменную типа ULONGLONG, которая получает идентификатор следующей записи об ошибке, которая хранится в постоянном хранилище данных системы. Если в постоянном хранилище данных системы нет других записей ошибок, в этом параметре должен быть возвращен идентификатор записи об ошибке, которая сейчас считывается.

[in, out] RecordLength

Указатель на переменную типа ULONG, содержащую размер (в байтах) буфера, на который указывает параметр ErrorRecord . Если размер буфера достаточно велик, чтобы содержать считываемую запись об ошибке, функция обратного вызова ReadErrorRecord задает для этой переменной размер в байтах записи об ошибке, возвращаемой в буфере. Однако если размер буфера слишком мал, чтобы содержать считываемую запись об ошибке, функция обратного вызова ReadErrorRecord устанавливает для этой переменной размер в байтах, необходимый для хранения записи об ошибке. В этом случае функция обратного вызова ReadErrorRecord должна возвращать STATUS_BUFFER_TOO_SMALL.

[out] ErrorRecord

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

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

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

Код возврата Описание
STATUS_SUCCESS Запись об ошибке успешно считана из постоянного хранилища данных системы.
STATUS_OBJECT_NOT_FOUND В постоянном хранилище данных системы отсутствует запись об ошибке, соответствующая идентификатору, указанному в параметре ErrorRecordId .
STATUS_BUFFER_TOO_SMALL Размер буфера слишком мал, чтобы содержать считываемую запись об ошибке.
STATUS_UNSUCCESSFUL Произошла ошибка.

Комментарии

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

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

Требования

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

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

ClearErrorRecord

PshedRegisterPlugin

WHEA_ERROR_RECORD

WHEA_PSHED_PLUGIN_REGISTRATION_PACKET

WriteErrorRecord