Solucionar problemas do erro: mensagem de evento não encontrada

Este artigo ajuda você a solucionar problemas do erro em Visualizador de Eventos: Mensagem de evento não encontrada.

Versão original do produto: Windows
Número de KB original: 166902

Sintomas

A seguinte mensagem de erro pode aparecer para eventos no Visualizador de Eventos:

A descrição da ID do evento ( <####> ) na origem (<nome> do aplicativo) não pôde ser encontrada. Ele contém as seguintes cadeias de caracteres de inserção: <o texto da mensagem registrada pelo ReportEvent>.

Listadas abaixo estão as possíveis causas e mais informações sobre como resolve o problema. A causa pode ser uma ou mais das seguintes:

O parâmetro de nome de origem incorreto é passado para RegisterEventSource

Verifique se o nome de origem no registro corresponde ao que foi passado para RegisterEventSource. Essa função terá êxito mesmo se a origem não for encontrada no registro. O nome de origem no registro deve estar em uma sub-chave de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

Normalmente, uma fonte de aplicativo é listada na sub-chave do aplicativo.

O caminho para .dll ou .exe arquivo no registro está incorreto

No valor do registro chamado EventMessageFile encontrado em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename, verifique se o caminho para o arquivo .dll ou .exe está correto e o nome do arquivo .dll ou .exe está correto. Nesse caso, o aplicativo Visualizador de Eventos não carrega a origem dos recursos da mensagem. Além disso, se você usar %SystemRoot% ou alguma outra macro, deverá usar o tipo de valor do registro REG_EXPAND_SZ. Caso contrário, a macro não será expandida.

A origem da mensagem registrada é o arquivo de .dll ou .exe errado

No valor do registro chamado EventMessageFile encontrado em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename, verifique se o caminho para o arquivo .dll ou .exe é aquele que contém os recursos de mensagem esperados. Tenha cuidado ao listar um EventMessageFile sem um caminho e ter vários arquivos com o mesmo nome. Visualizador de Eventos segue as regras para encontrar a fonte da mensagem usando o algoritmo de pesquisa documentado nos comentários da API loadLibrary.

Os recursos de mensagem não estão vinculados na origem EventMessageFile

Uma versão do exemplo de registro em log não conseguiu incluir o arquivo .rc como parte do build no makefile. Como resultado, a DLL é criada, mas nenhum recurso de mensagem é incluído no build. Alguns desenvolvedores tentaram incluir o arquivo .bin, que é a saída do compilador de mensagens, como o recurso. Ele não associa corretamente o recurso à DLL. Você deve usar o arquivo .rc que é saída do compilador de mensagens, pois ele marca o recurso com uma ID de 1 e tipo 11 (RT_MESSAGETABLE). É necessário que Visualizador de Eventos encontre os recursos da mensagem.

Se você estiver usando o Visual C++ para criar a EventMessageFile DLL, deverá adicionar o arquivo .rc que é saída do compilador de mensagens como um arquivo de origem do projeto Do Visual C++. Ele dirá ao Visual C++ para compilar o arquivo .rc e, em seguida, vincular os recursos à DLL.

Verifique se a ID correta é passada para a função ReportEvent

Muitos acham que o número de ID literal encontrado no .mc arquivo é a ID correta. Não é assim, porque o compilador de mensagens bits ORs o número de ID no LOWORD e bits ORs a gravidade e os bits de instalação no HIWORD. Um aplicativo deve sempre usar o nome simbólico no arquivo de cabeçalho que é saída do compilador de mensagens.

Verifique a MessageIdTypedef= instrução no .mc arquivo. Alguns arquivos de exemplo .mc mostram como definir o MessageIDTypedef para WORD IDs de categoria. No entanto, isso faz com que as IDs de Evento soluram o HIWORD. Para corrigir esse problema, defina MessageIdTypedef= apenas uma vez e defina-o como DWORD.

Certifique-se também de que a linha de comando MC -c seja usada consistentemente para os recursos de mensagem e o arquivo de cabeçalho. A -c opção ativa um pouco na HIWORD ID da mensagem.

Visualizador de Eventos não é reiniciada desde que você adicionou a entrada EventMessageFile

Visualizador de Eventos armazena em cache as DLLs que carrega para fontes de evento. Se você tiver alterado o registro para fornecer um diretório ou nome de origem adequado após o início do visualizador do evento, você precisará reiniciar Visualizador de Eventos.