Compartilhar via


Função IoAllocateErrorLogEntry (wdm.h)

A rotina IoAllocateErrorLogEntry aloca uma entrada de log de erros e retorna um ponteiro para o pacote que o chamador usa para fornecer informações sobre um erro de E/S.

Sintaxe

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

Parâmetros

[in] IoObject

Ponteiro para um objeto de dispositivo que representa o dispositivo no qual ocorreu um erro de E/S ou para um objeto driver que representa o driver que encontrou um erro.

[in] EntrySize

Especifica o tamanho, em bytes, da entrada de log de erros a ser alocada. Esse valor não pode exceder ERROR_LOG_MAXIMUM_SIZE.

Aviso

EntrySize é um valor UCHAR . Se você especificar um valor maior, o compilador truncará silenciosamente esse valor para um UCHAR (errado).

Retornar valor

IoAllocateErrorLogEntry retorna um ponteiro para a entrada de log de erros ou NULL se uma entrada de log não puder ser alocada.

Comentários

O driver deve primeiro preencher o pacote com informações sobre o erro e, em seguida, chamar IoWriteErrorLogEntry para postar a entrada no log de erros. O buffer de entrada do log de erros é liberado automaticamente depois que a entrada de log é registrada. Os buffers de entrada que não serão gravados no log podem ser liberados usando IoFreeErrorLogEntry.

Uma entrada de log de erros consiste em uma estrutura de IO_ERROR_LOG_PACKET de comprimento variável, possivelmente seguida por uma ou mais cadeias de caracteres Unicode de contagem zero. O Visualizador de Eventos insere essas cadeias de caracteres na mensagem de erro exibida para a entrada. IO_ERROR_LOG_PACKET contém um membro de comprimento variável, o membro DumpData . Portanto, o valor de EntrySize deve ser sizeof(IO_ERROR_LOG_PACKET) + size do membro DumpData + tamanho combinado de qualquer cadeia de caracteres de inserção fornecida pelo driver.

Os drivers devem marcar que o valor de EntrySize seja menor que ERROR_LOG_MAXIMUM_SIZE antes de chamar IoAllocateErrorLogEntry. Como EntrySize é declarado como um UCHAR, e o compilador truncará silenciosamente qualquer valor grande demais para caber em um UCHAR, a rotina em si não poderá detectar de forma confiável se o valor passado for muito grande.

Os drivers não devem tratar IoAllocateErrorLogEntry retornando NULL como um erro fatal. O driver deve continuar funcionando normalmente, independentemente de poder registrar erros.

Requisitos

Requisito Valor
Plataforma de Destino Universal
Cabeçalho wdm.h (include Wdm.h, Ntddk.h, Ntifs.h)
Biblioteca NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= DISPATCH_LEVEL

Confira também

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry