Compilador de mensajes (MC.exe)
El compilador de mensajes (mc.exe) se usa para compilar manifiestos de instrumentación y archivos de texto de mensajes. El compilador genera los archivos de recursos de mensaje a los que se vincula la aplicación.
MC [-?aAbcdnouUv] [-m <length>] [-h <path>] [-e <extension>] [-r <path>]
[-x <path>] [-w <file>] [-W <file>] [-z <basename> ] [-cp <encoding>]
[-km | -um | -generateProjections | -cs <namespace>]
[-mof] [-p <prefix>] [-P <prefix>]
[<filename.man>] [<filename.mc>]
Nota
El compilador de mensajes se distribuye con Windows SDK y se puede encontrar en la carpeta \Bin.
Argumentos comunes para los archivos de texto del mensaje y los archivos de manifiesto
-
-?
-
Muestra la información de uso del compilador de mensajes.
-
-c
-
Use este argumento para que el compilador establezca el bit de cliente (bit 28) en todos los identificadores de mensaje. Para obtener información sobre el bit del cliente, consulte winerror.h.
-
-cpcodificación
-
Use este argumento para especificar la codificación de caracteres usada para todos los archivos de texto generados. Los nombres válidos incluyen "ansi" (valor predeterminado), "utf-8" y "utf-16". Las codificaciones Unicode agregarán una marca de orden de bytes.
-
de extensión de -
Use este argumento para especificar la extensión que se va a usar para el archivo de encabezado. Puede especificar hasta una extensión de tres caracteres, no incluido el punto. El valor predeterminado es .h.
-
-hruta de acceso
-
Use este argumento para especificar la carpeta en la que desea que el compilador coloque el archivo de encabezado generado. El valor predeterminado es el directorio actual.
-
-mlongitud
-
Use este argumento para que el compilador genere una advertencia si el mensaje supera longitud caracteres.
-
ruta de acceso de-r
-
Use este argumento para especificar la carpeta en la que desea que el compilador coloque el script del compilador de recursos generado (archivo.rc) y los archivos .bin generados (recursos binarios) que incluye el script del compilador de recursos. El valor predeterminado es el directorio actual.
-
-znombre
-
Use este argumento para invalidar el nombre base predeterminado que usa el compilador para los archivos que genera. El valor predeterminado es usar el nombre base del nombre de archivo archivo de entrada.
-
de nombre de archivo
-
El archivo de manifiesto de instrumentación o el archivo de texto del mensaje. El archivo debe existir en el directorio actual. Puede especificar un archivo de manifiesto, un archivo de texto de mensaje o ambos. El nombre de archivo debe incluir la extensión. La convención consiste en usar una extensión .man para los archivos de manifiesto y una extensión .mc para los archivos de texto del mensaje.
Argumentos específicos de los archivos de manifiesto
-
-sruta de acceso
-
Use este argumento para crear una línea base de la instrumentación. Especifique la ruta de acceso a la carpeta que contiene los archivos de manifiesto de línea base. En las versiones posteriores, usaría el argumento -t para comprobar el nuevo manifiesto con la línea base de problemas de compatibilidad.
anterior a la versión 1.12.7051 de MC: No disponible
-
-truta de acceso
-
Use este argumento al crear una nueva versión del manifiesto y quiera comprobar la compatibilidad de la aplicación con la línea base que creó con el argumento -s. La ruta de acceso debe apuntar a la carpeta que contiene . Archivos BIN creados por la operación de línea base (consulte el modificador
-s). anterior a la versión 1.12.7051 de MC: No disponible
-
-wruta de acceso
-
El compilador omite este argumento y valida automáticamente el manifiesto.
anterior a la versión 1.12.7051 de MC: Use este argumento para especificar la carpeta que contiene el archivo de esquema Eventman.xsd, que el compilador usa para validar el manifiesto. Windows SDK incluye el archivo de esquema Eventman.xsd en la carpeta \Include. Si no especifica este argumento, el compilador no valida el manifiesto.
-
-Wruta de acceso
-
El compilador omite este argumento.
anterior a la versión 1.12.7051 de MC: Use este argumento para especificar la carpeta que contiene el archivo Winmeta.xml. El archivo Winmeta.xml contiene los tipos de entrada y salida reconocidos, así como los canales, niveles y códigos de operación predefinidos. Windows SDK incluye el archivo Winmeta.xml en la carpeta \Include.
Argumentos específicos para generar código que el proveedor usaría para registrar eventos
Puede usar los siguientes argumentos del compilador para generar código en modo kernel o en modo usuario que puede usar para registrar eventos. También puede solicitar que el compilador genere código para admitir la escritura de eventos en equipos anteriores a Windows Vista. Si la aplicación está escrita en C#, el compilador puede generar una clase de C# que puede usar para registrar eventos. Estos argumentos están disponibles a partir de la versión 1.12.7051 de MC que se incluye con la versión de Windows 7 del SDK de Windows.
-
-co
-
Use este argumento para que el servicio de registro llame a la función definida por el usuario para cada evento que registre (se llama a la función después de que se haya registrado el evento). La función definida por el usuario debe tener la siguiente firma.
VOID pFnUserFunction( __in REGHANDLE RegHandle, __in PCEVENT_DESCRIPTOR Descriptor, __in ULONG EventDataCount, __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData );
También debe incluir la siguiente directiva en el código.
#define MCGEN_CALLOUT pFnUserFunction
Debe mantener la implementación lo más corta posible para evitar problemas de registro; el servicio ya no registrará los eventos hasta que se devuelva la función.
Puede usar este argumento con el argumento -km o -mmm.
-
-csespacio de nombres
-
Use este argumento para que el compilador genere una clase de C# basada en la clase EventProvider de .NET 3.5.
-
-cssespacio de nombres
-
Use este argumento para que el compilador genere una clase estática de C# basada en la clase EventProvider de .NET 3.5
. -
-km
-
Use este argumento para que el compilador genere el código en modo kernel que usaría para registrar los eventos definidos en el manifiesto.
-
-mof
-
OBSOLESCENTE. Use este argumento para que el compilador genere código que puede usar para registrar eventos en equipos anteriores a Windows Vista. Esta opción también crea un archivo MOF que contiene las clases MOF para cada evento definido en el manifiesto. Para registrar las clases en el archivo MOF para que los consumidores puedan descodificar los eventos, use el compilador MOF (Mofcomp.exe). Para obtener más información sobre el uso del compilador MOF, consulte Managed Object Format.
Para usar este modificador, debe cumplir las restricciones siguientes:
- Cada definición de evento debe incluir los atributos task y opcode.
- Cada tarea debe incluir el atributo eventGuid.
- Los datos de plantilla a los que hace referencia el evento no pueden contener:
- Elementos de datos que especifican los tipos de entrada win:Binary o win:SYSTEMTIME
- Estructuras
- Matrices de tamaño variable; sin embargo, puede especificar matrices de longitud fija.
- Los tipos de datos de cadena no pueden especificar el atributo length
Debe usar este argumento con el argumento -mmm, -cs, -csso -km
-
de prefijo -p -
Use este argumento para invalidar el prefijo predeterminado que usa el compilador para los nombres de macros de registro y nombres de método. El prefijo predeterminado es "EventWrite". La cadena distingue mayúsculas de minúsculas.
Puede usar este argumento con el argumento -mmm, -cs, -csso -km.
-
prefijo -P -
Use este argumento para quitar caracteres del principio del nombre simbólico que especificó para el evento. La comparación no distingue mayúsculas de minúsculas. El compilador usa el nombre simbólico para formar los nombres de macro de registro y los nombres de método.
El nombre predeterminado de una macro de registro es EventWriteSymbolName, donde SymbolName es el nombre simbólico que especificó para el evento. Por ejemplo, si establece el atributo de símbolo del evento en PrinterConnection, el nombre de la macro sería EventWritePrinterConnection. Para quitar Printer del nombre, use -PPrinter, lo que da como resultado EventWriteConnection.
Puede usar este argumento con el argumento -mmm, -cs, -csso -km.
-
mmm
-
Use este argumento para que el compilador genere el código en modo de usuario que usaría para registrar los eventos definidos en el manifiesto.
Para que el compilador genere código de registro, debe especificar el -mmm, -cs, -csso -km argumento; estos argumentos son mutuamente excluyentes.
Para especificar dónde colocar los archivos .h, .cs y .mof que genera el compilador, use el argumento
Para especificar dónde colocar el archivo .rc y los archivos binarios (que contienen los recursos de metadatos) que genera el compilador, use el argumento -r. Si no especifica el argumento -r, los archivos se colocan en la carpeta actual.
El compilador usa el nombre base del archivo de entrada como nombre base de los archivos que genera. Para especificar un nombre base, use el argumento
Argumentos específicos de los archivos de texto del mensaje
-
-a
-
Use este argumento para especificar que el nombre de archivo archivo de entrada contiene contenido en la página de códigos ANSI de Windows predeterminada del sistema (CP_ACP). Este es el valor predeterminado. Use -u para Unicode. Si el archivo de entrada contiene una boM, se omitirá este argumento.
-
-A
-
OBSOLESCENTE. Use este argumento para especificar que los mensajes del archivo de salida .bin deben ser ANSI.
-
-b
-
Use este argumento para que el compilador use el nombre base del nombre de archivo archivo de entrada para los nombres de archivo .bin. El valor predeterminado es usar "MSG".
-
-d
-
Use este argumento para usar valores decimales para las constantes Gravedad y Facility en el archivo de encabezado en lugar de valores hexadecimales.
-
-n
-
Use este argumento para especificar que los mensajes finalizan inmediatamente después del cuerpo del mensaje. El valor predeterminado es finalizar el cuerpo del mensaje con un CR/LF.
-
-o
-
Use este argumento para que el compilador genere un archivo de encabezado OLE2 mediante definiciones de HRESULT en lugar de códigos de estado. El uso de códigos de estado es el valor predeterminado.
-
-u
-
Use este argumento para especificar que el nombre de archivo archivo de entrada contiene contenido UTF-16LE. El valor predeterminado es contenido ANSI. Si el archivo de entrada contiene una boM, se omitirá este argumento.
-
-U
-
Use este argumento para especificar que los mensajes del archivo de salida .bin deben ser Unicode. Este es el valor predeterminado.
-
-v
-
Use este argumento para generar una salida detallada.
-
-xruta de acceso
-
Use este argumento para especificar la carpeta en la que desea que el compilador coloque el archivo de inclusión .dbg C. El archivo .dbg asigna los identificadores de mensaje a sus nombres simbólicos.
Observaciones
Los argumentos -A y -mof están en desuso y se quitarán en el futuro.
El compilador acepta como entrada un archivo de manifiesto (.man) o un archivo de texto de mensaje (.mc) y genera los siguientes archivos:
nombre de archivo.h
Un archivo de encabezado de C/C++ que contiene los descriptores de eventos, el GUID del proveedor y los nombres de símbolos a los que hace referencia en la aplicación.
TEMP.bin de nombre de archivo
Un archivo de recursos binario que contiene los metadatos del proveedor y del evento. Este es el recurso de plantilla, que significa el sufijo TEMP del nombre base del archivo.
Msg00001.bin
Un archivo de recursos binario para cada idioma que especifique (por ejemplo, si el manifiesto contiene cadenas de mensaje en en-US y fr-FR, el compilador generaría Msg00001.bin y Msg00002.bin).
nombre de archivo.rc
Script del compilador de recursos que contiene las instrucciones para incluir cada archivo .bin como un recurso.
Para los argumentos que toman una ruta de acceso, la ruta de acceso puede ser una ruta de acceso absoluta, relativa o UNC y puede contener variables de entorno.
anterior a la versión 1.12.7051 de MC: El compilador no permite rutas de acceso relativas ni variables de entorno.
Ejemplos
En el ejemplo siguiente se compila un manifiesto mediante los valores predeterminados del compilador.
mc spooler.man
En el ejemplo siguiente se compila el manifiesto y se colocan los archivos de encabezado y recursos en las carpetas especificadas.
mc -h <pathgoeshere> -r <pathgoeshere> spooler.man
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo admitido | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo admitido | Windows 2000 Server [solo aplicaciones de escritorio] |