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 |