Solución del error: No se encontró el mensaje de evento

Este artículo le ayuda a solucionar el error en Visor de eventos: Mensaje de evento no encontrado.

              Versión original del producto: Windows
Número de KB original: 166902

Síntomas

El siguiente mensaje de error puede aparecer para los eventos de Visor de eventos:

No se encontró la descripción del identificador de evento ( <####> ) en Origen (<nombre> de la aplicación). Contiene las siguientes cadenas de inserción: <el texto del mensaje registrado por ReportEvent>.

A continuación se enumeran las posibles causas y más información sobre cómo resolver el problema. La causa puede ser una o varias de las siguientes:

El parámetro de nombre de origen incorrecto se pasa a RegisterEventSource.

Asegúrese de que el nombre de origen del registro coincide con lo que se pasa a RegisterEventSource. Esta función se realizará correctamente incluso si el origen no se encuentra en el Registro. El nombre de origen en el Registro debe estar en una subclase de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog.

Normalmente, un origen de aplicación aparece en la subclase de la aplicación.

La ruta de acceso al archivo .dll o .exe en el Registro es incorrecta

En el valor del Registro denominado EventMessageFile encontrado en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename, compruebe que la ruta de acceso al archivo .dll o .exe es correcta y que el nombre del archivo .dll o .exe es correcto. En este caso, la aplicación Visor de eventos no puede cargar el origen de los recursos del mensaje. Además, si usa %SystemRoot% o alguna otra macro, debe usar el tipo de valor del Registro REG_EXPAND_SZ. De lo contrario, la macro no se expande.

El origen del mensaje registrado es el archivo de .dll o .exe incorrecto

En el valor del Registro denominado EventMessageFile encontrado en HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourcename, compruebe que la ruta de acceso al archivo .dll o .exe es la que contiene los recursos de mensaje esperados. Tenga cuidado de enumerar un EventMessageFile sin una ruta de acceso y tener varios archivos con el mismo nombre. Visor de eventos sigue las reglas para buscar el origen del mensaje mediante el algoritmo de búsqueda documentado en los comentarios de LoadLibrary API.

Los recursos de mensaje no están enlazados en el origen EventMessageFile

Una versión del ejemplo de registro no pudo incluir el archivo .rc como parte de la compilación en el archivo make. Como resultado, se compila el archivo DLL, pero no se incluyen recursos de mensaje en la compilación. Algunos desarrolladores han intentado incluir el archivo .bin, que se genera desde el compilador de mensajes, como recurso. No enlaza correctamente el recurso al archivo DLL. Debe usar el archivo .rc que se genera desde el compilador de mensajes, porque marca el recurso con un identificador de 1 y el tipo 11 (RT_MESSAGETABLE). Es necesario que Visor de eventos busque los recursos del mensaje.

Si usa Visual C++ para compilar el EventMessageFile archivo DLL, debe agregar el archivo .rc que se genera desde el compilador de mensajes como un archivo de origen del proyecto de Visual C++. Indicará a Visual C++ que compile el archivo .rc y, a continuación, vincule los recursos al archivo DLL.

Asegúrese de que el identificador correcto se pasa a la función ReportEvent.

Muchos creen que el número de identificador literal que se encuentra en el .mc archivo es el identificador correcto. No es así, porque el compilador de mensajes indica en forma bit a bit el número de identificador en las LOWORD unidades organizativas y bit a bit la gravedad y los bits de la instalación en .HIWORD Una aplicación siempre debe usar el nombre simbólico en el archivo de encabezado que se genera desde el compilador de mensajes.

Compruebe la MessageIdTypedef= instrucción en el .mc archivo. Algunos archivos de ejemplo .mc muestran cómo definir el MessageIDTypedef objeto para WORD los identificadores de categoría. Sin embargo, hace que los identificadores de evento pierdan .HIWORD Para corregir este problema, defina MessageIdTypedef= solo una vez y establézcalo en DWORD.

Asegúrese también de que la línea de comandos de MC -c se usa de forma coherente para los recursos de mensaje y el archivo de encabezado. El -c modificador se activa un poco en el HIWORD identificador del mensaje.

Visor de eventos no se ha reiniciado desde que agregó la entrada EventMessageFile.

Visor de eventos almacena en caché los archivos DLL que carga para los orígenes de eventos. Si ha cambiado el registro para proporcionar un directorio o un nombre de origen adecuados después de que se haya iniciado el visor de eventos, debe reiniciar Visor de eventos.