Partilhar 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 de 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 de UCHAR. Se você especificar um valor maior, o compilador truncará silenciosamente esse valor para um (errado) UCHAR.

Valor de retorno

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

Observações

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 com 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 tamanho de(IO_ERROR_LOG_PACKET) + tamanho do membro DumpData + tamanho combinado de quaisquer cadeias de caracteres de inserção fornecidas pelo driver.

Os drivers devem verificar se o valor de EntrySize é 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 em log.

Requisitos

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

Consulte também

IO_ERROR_LOG_PACKET

IoFreeErrorLogEntry

IoWriteErrorLogEntry