Поделиться через


структура IO_ERROR_LOG_PACKET (wdm.h)

Структура IO_ERROR_LOG_PACKET служит заголовком для записи журнала ошибок.

Синтаксис

typedef struct _IO_ERROR_LOG_PACKET {
  UCHAR         MajorFunctionCode;
  UCHAR         RetryCount;
  USHORT        DumpDataSize;
  USHORT        NumberOfStrings;
  USHORT        StringOffset;
  USHORT        EventCategory;
  NTSTATUS      ErrorCode;
  ULONG         UniqueErrorValue;
  NTSTATUS      FinalStatus;
  ULONG         SequenceNumber;
  ULONG         IoControlCode;
  LARGE_INTEGER DeviceOffset;
  ULONG         DumpData[1];
} IO_ERROR_LOG_PACKET, *PIO_ERROR_LOG_PACKET;

Члены

MajorFunctionCode

Указывает код основной функции IRP_MJ_XXX для IRP, обрабатываемого драйвером при возникновении ошибки. Задать это значение необязательно.

RetryCount

Указывает, кратно ли драйвер повторил операцию и столкнулся с этой ошибкой. Используйте ноль, чтобы указать, что драйвер попытался выполнить операцию один раз, или добавьте по одному для каждой попытки после первоначальной попытки.

DumpDataSize

Указывает размер элемента DumpData переменной длины этой структуры в байтах. Указанное значение должно быть кратным sizeof(ULONG).

NumberOfStrings

Указывает количество строк вставки, которые драйвер будет предоставлять с этой записью журнала ошибок. Драйверы устанавливают это значение равным нулю для ошибок, которые не требуют вставки строк. Просмотр событий использует эти строки для заполнения записей от "%2" до "%n" в шаблоне строки для этого кода ошибки.

Строки Юникода, завершаемые значением NULL, соответствуют структуре IO_ERROR_LOG_PACKET в памяти.

StringOffset

Указывает смещение (в байтах) от начала структуры, с которой начинаются любые предоставленные драйвером данные строки вставки. Обычно это значение sizeof(IO_ERROR_LOG_PACKET) плюс значение члена DumpDataSize . Если отсутствуют строки вставки, предоставленные драйвером, stringOffset может быть равен нулю.

EventCategory

Указывает категорию событий для ошибки. Драйвер указывает поддерживаемые категории событий и соответствующие описательные строки в каталоге сообщений. В Просмотр событий отображается описательная строка в качестве значения Category для ошибки.

ErrorCode

Указывает тип ошибки. Просмотр событий использует код ошибки, чтобы определить, какая строка будет отображаться в качестве значения описания ошибки. Просмотр событий принимает шаблон строки для ошибки, предоставленной в каталоге сообщений драйвера, заменяет "%1" в шаблоне именем объекта устройства драйвера, а "%2" — "%n" строками вставки, поставляемыми с записью журнала ошибок.

ErrorCode — это системная константа или констант, определяемая драйвером; Дополнительные сведения см. в разделе Ошибки ведения журнала .

UniqueErrorValue

Конкретное значение драйвера, указывающее, где была обнаружена ошибка в драйвере. Задать это значение необязательно.

FinalStatus

Указывает значение NTSTATUS, возвращаемое для операции, которая вызвала ошибку. Задать это значение необязательно.

SequenceNumber

Указывает порядковый номер, назначаемый драйвером, для текущего IRP, который должен быть константой на протяжении всего срока действия данного запроса. Задать это значение необязательно.

IoControlCode

Для IRP_MJ_DEVICE_CONTROL или IRP_MJ_INTERNAL_DEVICE_CONTROL IRP этот элемент задает код элемента управления вводом-выводом для запроса, который обжаловал ошибку. В противном случае это значение равно нулю. Задать это значение необязательно.

DeviceOffset

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

DumpData[1]

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

Комментарии

Драйверы используют подпрограмму IoAllocateErrorLogEntry для выделения записи журнала ошибок. Структура IO_ERROR_LOG_PACKET служит заголовком возвращаемого буфера. За ним в памяти следуют все строки вставки для записи журнала.

Обратите внимание, что сам диспетчер ввода-вывода вставляет некоторые сведения в журнал системных ошибок, например имя устройства и драйвера. Диспетчер операций ввода-вывода резервирует 80 байт для хранения этой информации. Если размер этих сведений превышает 80 байт, диспетчер ввода-вывода при необходимости усекает строки вставки драйвера.

Дополнительные сведения об использовании этой структуры см. в разделе Ошибки ведения журнала.

Требования

Требование Значение
Заголовок wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)

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

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry