структура 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) |