Compartir a través de


Función IoAllocateErrorLogEntry (wdm.h)

El IoAllocateErrorLogEntry rutina asigna una entrada del 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.

Valor devuelto

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

Observaciones

El controlador debe rellenar primero 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 del 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 de DumpData. Por lo tanto, el valor de EntrySize debe ser sizeof(IO_ERROR_LOG_PACKET) + size of the DumpData member + combined size of any driver-proporcionado strings.

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 ajustarse a una UCHAR, la propia rutina no puede detectar de forma confiable si el valor pasado es demasiado grande.

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

Requisitos

Requisito Valor
de la plataforma de destino de Universal
encabezado de wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
biblioteca de NtosKrnl.lib
DLL de NtosKrnl.exe
irQL IRQL <= DISPATCH_LEVEL

Consulte también

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry