Compartir a través de


estructura IO_ERROR_LOG_PACKET (wdm.h)

La estructura IO_ERROR_LOG_PACKET actúa como encabezado de una entrada del registro de errores.

Sintaxis

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;

Miembros

MajorFunctionCode

Indica el código de función principal IRP_MJ_XXX del IRP que el controlador estaba controlando cuando se produjo el error. Establecer este valor es opcional.

RetryCount

Indica el número de veces que el controlador ha reintentado la operación y ha encontrado este error. Use cero para indicar que el controlador intentó la operación una vez o agregue uno para cada reintento más allá del intento inicial.

DumpDataSize

Indica el tamaño, en bytes, del miembro DumpData de longitud variable de esta estructura. El valor especificado debe ser un múltiplo de sizeof(ULONG).

NumberOfStrings

Indica el número de cadenas de inserción que el controlador proporcionará con esta entrada del registro de errores. Los controladores establecen este valor en cero para los errores que no necesitan cadenas de inserción. El Visor de eventos usa estas cadenas para rellenar las entradas "%2" a "%n" de la plantilla de cadena para este código de error.

Las cadenas Unicode terminadas en null siguen la estructura IO_ERROR_LOG_PACKET en memoria.

StringOffset

Indica el desplazamiento, en bytes, desde el principio de la estructura, en el que comienzan los datos de cadena de inserción proporcionados por el controlador. Normalmente, será sizeof(IO_ERROR_LOG_PACKET) más el valor del miembro DumpDataSize . Si no hay cadenas de inserción proporcionadas por el controlador, StringOffset puede ser cero.

EventCategory

Especifica la categoría de evento para el error. Un controlador especifica las categorías de eventos que admite y las cadenas descriptivas correspondientes en su catálogo de mensajes. El Visor de eventos muestra la cadena descriptiva como el valor Category del error.

ErrorCode

Especifica el tipo de error. El Visor de eventos usa el código de error para determinar qué cadena se va a mostrar como el valor Description del error. El Visor de eventos toma la plantilla de cadena para el error proporcionado en el catálogo de mensajes del controlador, reemplaza "%1" en la plantilla por el nombre del objeto de dispositivo del controlador y reemplaza "%2" a "%n" por las cadenas de inserción proporcionadas con la entrada del registro de errores.

ErrorCode es una constante definida por el sistema o definida por el controlador; consulte Errores de registro para obtener más información.

UniqueErrorValue

Valor específico del controlador que indica dónde se detectó el error en el controlador. Establecer este valor es opcional.

FinalStatus

Especifica el valor NTSTATUS que se va a devolver para la operación que desencadenó el error. Establecer este valor es opcional.

SequenceNumber

Especifica un número de secuencia asignado por el controlador para el IRP actual, que debe ser constante durante la vida de una solicitud determinada. Establecer este valor es opcional.

IoControlCode

Para una IRP_MJ_DEVICE_CONTROL o IRP_MJ_INTERNAL_DEVICE_CONTROL IRP, este miembro especifica el código de control de E/S para la solicitud que ha marcado el error. De lo contrario, este valor es cero. Establecer este valor es opcional.

DeviceOffset

Especifica el desplazamiento especificado por el controlador en el dispositivo donde se produjo el error. Establecer este valor es opcional.

DumpData[1]

Matriz de tamaño variable que se puede usar para almacenar datos binarios específicos del controlador, como los valores de registro o cualquier otra información útil para identificar la causa del error. Los controladores deben especificar el tamaño, en bytes, de la matriz en el miembro DumpDataSize de esta estructura.

Comentarios

Los controladores usan la rutina IoAllocateErrorLogEntry para asignar una entrada de registro de errores. La estructura IO_ERROR_LOG_PACKET actúa como encabezado del búfer devuelto. Sigue en memoria cualquier cadena de inserción para la entrada de registro.

Tenga en cuenta que el propio administrador de E/S inserta información en el registro de errores del sistema, como el nombre del dispositivo y el controlador. El administrador de E/S reserva 80 bytes para contener esta información. Si el tamaño de esta información supera los 80 bytes, el administrador de E/S trunca las cadenas de inserción del controlador según sea necesario.

Para obtener más información sobre cómo usar esta estructura, vea Errores de registro.

Requisitos

Requisito Valor
Header wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)

Consulte también

IRP_MJ_DEVICE_CONTROL

IRP_MJ_INTERNAL_DEVICE_CONTROL

IoAllocateErrorLogEntry

IoFreeErrorLogEntry

IoWriteErrorLogEntry