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


структура 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 члена этой структуры. Указанное значение должно иметь несколько размеров(ULONG).

NumberOfStrings

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

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

StringOffset

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

EventCategory

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

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 (include Wdm.h, Ntddk.h, Ntifs.h)

См. также

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry