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>]

Argumentos comunes tanto para los archivos de texto del mensaje como para 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 de cliente, consulte winerror.h.

-cpencoding

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.

-eextensión

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.

-hpath

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.

-mlength

Use este argumento para que el compilador genere una advertencia si el mensaje supera los caracteres de longitud .

-rpath

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.

-zname

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 archivo de entrada de nombre de archivo.

filename

Archivo de manifiesto de instrumentación o archivo de texto de 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

-spath

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. Para versiones posteriores, usaría el argumento -t para comprobar el nuevo manifiesto con respecto a la línea base para detectar problemas de compatibilidad.

Antes de la versión 1.12.7051 de MC: No disponible

-tpath

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 que creó la operación de línea base (vea el modificador -s ).

Antes de la versión 1.12.7051 de MC: No disponible

-wpath

El compilador omite este argumento y valida automáticamente el manifiesto.

Antes de 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.

Antes de 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 argumentos del compilador siguientes para generar código en modo kernel o modo de 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 -um .

Espacio de nombres-cs

Use este argumento para que el compilador genere una clase de C# basada en la clase EventProvider de .NET 3.5.

Espacio de nombres-css

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

EN DESUSO. 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 más información sobre el uso del compilador MOF, consulte Formato de objeto administrado.

Para usar este modificador, debe cumplir las siguientes restricciones:

  • 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 -um, -cs, -css o -km .

-pprefijo

Use este argumento para invalidar el prefijo predeterminado que el compilador usa para los nombres de macro y los nombres de método de registro. El prefijo predeterminado es "EventWrite". La cadena distingue mayúsculas de minúsculas.

Puede usar este argumento con el argumento -um, -cs, -css o -km .

Prefijo -P

Use este argumento para quitar caracteres del principio del nombre simbólico que especificó para el evento. La comparación distingue entre mayúsculas y 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, que da como resultado EventWriteConnection.

Puede usar este argumento con el argumento -um, -cs, -css o -km .

-um

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 argumento -um, -cs, -css o -km ; estos argumentos son mutuamente excluyentes.

Para especificar dónde colocar los archivos .h, .cs y .mof que genera el compilador, use el argumento -h . Si no especifica el argumento -h , los archivos se colocan en la carpeta actual.

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 -z .

Argumentos específicos de los archivos de texto del mensaje

-Un

Use este argumento para especificar que el archivo de entrada de nombre de archivo 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 lista de materiales, se omitirá este argumento.

-Un

EN DESUSO. Use este argumento para especificar que los mensajes del archivo .bin de salida deben ser ANSI.

-B

Use este argumento para que el compilador use el nombre base del archivo de entrada de nombre de archivo 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 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 archivo de entrada de nombre de archivo contiene contenido UTF-16LE. El valor predeterminado es contenido ANSI. Si el archivo de entrada contiene una lista de materiales, se omitirá este argumento.

-U

Use este argumento para especificar que los mensajes del archivo .bin de salida 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.

Comentarios

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 archivos siguientes:

  • filename.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.

  • Nombre TEMP.bin

    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 binarios para cada idioma que especifique (por ejemplo, si el manifiesto contiene cadenas de mensaje en-US y fr-FR, el compilador generaría Msg00001.bin y Msg00002.bin).

  • filename.rc

    Script del compilador de recursos que contiene las instrucciones para incluir cada archivo .bin como un recurso.

En el caso de los argumentos que toman una ruta de acceso, la ruta de acceso puede ser absoluta, relativa o UNC y puede contener variables de entorno.

Antes de la versión 1.12.7051 de MC: El compilador no permite rutas de acceso relativas ni variables de entorno.

Windows SDK incluye el compilador (mc.exe) en la carpeta \Bin.

Ejemplos

En el ejemplo siguiente se compila un manifiesto con los valores predeterminados del compilador.

mc spooler.man

En el ejemplo siguiente se compila el manifiesto y se colocan los archivos de encabezado y recurso en las carpetas especificadas.

mc -h <pathgoeshere> -r <pathgoeshere> spooler.man

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]