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 |