Función IoAllocateErrorLogEntry (wdm.h)

La rutina IoAllocateErrorLogEntry asigna una entrada de registro de errores y devuelve un puntero al paquete que usa el autor de la llamada para proporcionar información sobre un error de E/S.

Sintaxis

PVOID IoAllocateErrorLogEntry(
  [in] PVOID IoObject,
  [in] UCHAR EntrySize
);

Parámetros

[in] IoObject

Puntero a un objeto de dispositivo que representa el dispositivo en el que se produjo un error de E/S o a un objeto de controlador que representa al controlador que encontró un error.

[in] EntrySize

Especifica el tamaño, en bytes, de la entrada del registro de errores que se va a asignar. Este valor no puede superar ERROR_LOG_MAXIMUM_SIZE.

Advertencia

EntrySize es un valor UCHAR . Si especifica un valor mayor, el compilador truncará silenciosamente ese valor en un UCHAR (incorrecto).

Valor devuelto

IoAllocateErrorLogEntry devuelve un puntero a la entrada del registro de errores o NULL si no se pudo asignar una entrada de registro.

Comentarios

El controlador primero debe rellenar el paquete con información sobre el error y, a continuación, llamar a IoWriteErrorLogEntry para publicar la entrada en el registro de errores. El búfer de entrada del registro de errores se libera automáticamente una vez que se registra la entrada de registro. Los búferes de entrada que no se van a escribir en el registro se pueden liberar mediante IoFreeErrorLogEntry.

Una entrada del registro de errores consta de una estructura IO_ERROR_LOG_PACKET de longitud variable, posiblemente seguida de una o varias cadenas Unicode con recuento cero. El Visor de eventos inserta estas cadenas en el mensaje de error que muestra para la entrada. IO_ERROR_LOG_PACKET contiene un miembro de longitud variable, el miembro DumpData . Por lo tanto, el valor de EntrySize debe ser sizeof(IO_ERROR_LOG_PACKET) + size del miembro DumpData + tamaño combinado de cualquier cadena de inserción proporcionada por el controlador.

Los controladores deben comprobar que el valor de EntrySize es menor que ERROR_LOG_MAXIMUM_SIZE antes de llamar a IoAllocateErrorLogEntry. Dado que EntrySize se declara como UCHAR y el compilador truncará silenciosamente cualquier valor demasiado grande para caber en una UCHAR, la propia rutina no puede detectar de forma confiable si el valor pasado es demasiado grande.

Los controladores no deben tratar IoAllocateErrorLogEntry devolviendo NULL como un error irrecuperable. El controlador debe seguir funcionando normalmente, independientemente de si puede registrar errores.

Requisitos

Requisito Value
Plataforma de destino Universal
Encabezado wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h)
Library NtosKrnl.lib
Archivo DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Consulte también

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry