Compilateur de messages (MC.exe)

Utilisé pour compiler des manifestes d’instrumentation et des fichiers texte de message. Le compilateur génère les fichiers de ressources de message auxquels votre application est liée.

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

Arguments communs aux fichiers texte de message et aux fichiers manifestes

-?

Affiche les informations d’utilisation du compilateur de messages.

-C

Utilisez cet argument pour que le compilateur définisse le bit client (bit 28) dans tous les ID de message. Pour plus d’informations sur le bit client, consultez winerror.h.

Encodage -cp

Utilisez cet argument pour spécifier l’encodage de caractères utilisé pour tous les fichiers texte générés. Les noms valides incluent « ansi » (par défaut), « utf-8 » et « utf-16 ». Les encodages Unicode ajoutent une marque d’ordre d’octets.

-e extension

Utilisez cet argument pour spécifier l’extension à utiliser pour le fichier d’en-tête. Vous pouvez spécifier jusqu’à une extension de trois caractères, sans inclure le point. La valeur par défaut est .h.

Chemin d’accès -h

Utilisez cet argument pour spécifier le dossier dans lequel vous souhaitez que le compilateur place le fichier d’en-tête généré. L'emplacement par défaut est le répertoire actif.

-mlongueur

Utilisez cet argument pour que le compilateur génère un avertissement si le message dépasse les caractères de longueur .

Chemin d’accès -r

Utilisez cet argument pour spécifier le dossier dans lequel vous souhaitez que le compilateur place le script du compilateur de ressources généré (fichier .rc) et les fichiers .bin générés (ressources binaires) inclus dans le script du compilateur de ressources. L'emplacement par défaut est le répertoire actif.

-zname

Utilisez cet argument pour remplacer le nom de base par défaut que le compilateur utilise pour les fichiers qu’il génère. La valeur par défaut consiste à utiliser le nom de base du fichier d’entrée de nom de fichier .

Fichier

Fichier manifeste d’instrumentation ou fichier texte de message. Le fichier doit exister dans le répertoire actif. Vous pouvez spécifier un fichier manifeste, un fichier texte de message ou les deux. Le nom de fichier doit inclure l’extension. La convention consiste à utiliser une extension .man pour les fichiers manifeste et une extension .mc pour les fichiers texte de message.

Arguments spécifiques aux fichiers manifestes

-spath

Utilisez cet argument pour créer une base de référence de votre instrumentation. Spécifiez le chemin d’accès au dossier qui contient vos fichiers manifeste de base. Pour les versions suivantes, vous utilisez ensuite l’argument -t pour case activée le nouveau manifeste par rapport à la base de référence pour les problèmes de compatibilité.

Avant MC version 1.12.7051 : Non disponible

Chemin d’accès -t

Utilisez cet argument lorsque vous créez une nouvelle version de votre manifeste et que vous souhaitez l’case activée pour la compatibilité de l’application par rapport à la base de référence que vous avez créée à l’aide de l’argument -s. Le chemin doit pointer vers le dossier qui contient le . Fichiers BIN créés par l’opération de base de référence (voir le commutateur -s ).

Avant MC version 1.12.7051 : Non disponible

Chemin d’accès -w

Le compilateur ignore cet argument et valide automatiquement le manifeste.

Avant MC version 1.12.7051 : Utilisez cet argument pour spécifier le dossier qui contient le fichier de schéma Eventman.xsd, que le compilateur utilise pour valider votre manifeste. Le Kit de développement logiciel (SDK) Windows inclut le fichier de schéma Eventman.xsd dans le dossier \Include. Si vous ne spécifiez pas cet argument, le compilateur ne valide pas votre manifeste.

-Wchemin d’accès

Le compilateur ignore cet argument.

Avant MC version 1.12.7051 : Utilisez cet argument pour spécifier le dossier qui contient le fichier Winmeta.xml. Le fichier Winmeta.xml contient les types d’entrée et de sortie reconnus, ainsi que les canaux, niveaux et opcodes prédéfinis. Le Kit de développement logiciel (SDK) Windows inclut le fichier Winmeta.xml dans le dossier \Include.

Arguments spécifiques à la génération de code que votre fournisseur utiliserait pour journaliser les événements

Vous pouvez utiliser les arguments de compilateur suivants pour générer du code en mode noyau ou en mode utilisateur que vous pouvez utiliser pour journaliser des événements. Vous pouvez également demander au compilateur de générer du code pour prendre en charge l’écriture d’événements sur des ordinateurs antérieurs à Windows Vista. Si votre application est écrite en C#, le compilateur peut générer une classe C# que vous pouvez utiliser pour journaliser les événements. Ces arguments sont disponibles à partir de MC version 1.12.7051 fournie avec la version Windows 7 du Kit de développement logiciel (SDK) Windows.

-co

Utilisez cet argument pour que le service de journalisation appelle votre fonction définie par l’utilisateur pour chaque événement que vous journalisez (la fonction est appelée après que l’événement a été journalisé). Votre fonction définie par l’utilisateur doit avoir la signature suivante.

VOID
pFnUserFunction(
    __in REGHANDLE RegHandle,
    __in PCEVENT_DESCRIPTOR Descriptor,
    __in ULONG EventDataCount,
    __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData
    );

Vous devez également inclure la directive suivante dans votre code.

#define MCGEN_CALLOUT pFnUserFunction

Vous devez garder votre implémentation aussi courte que possible pour éviter les problèmes de journalisation ; le service ne journalisera plus vos événements tant que la fonction ne sera pas retournée.

Vous pouvez utiliser cet argument avec l’argument -km ou -um .

Espace de noms-cs

Utilisez cet argument pour que le compilateur génère une classe C# basée sur la classe EventProvider .NET 3.5.

Espace de noms-css

Utilisez cet argument pour que le compilateur génère une classe C# statique basée sur la classe EventProvider .NET 3.5.

-km

Utilisez cet argument pour que le compilateur génère le code en mode noyau que vous utiliseriez pour journaliser les événements définis dans votre manifeste.

-Mof

DÉPRÉCIÉ. Utilisez cet argument pour que le compilateur génère du code que vous pouvez utiliser pour journaliser des événements sur des ordinateurs antérieurs à Windows Vista. Cette option crée également un fichier MOF qui contient les classes MOF pour chaque événement défini dans le manifeste. Pour inscrire les classes dans le fichier MOF afin que les consommateurs puissent décoder les événements, utilisez le compilateur MOF (Mofcomp.exe). Pour plus d’informations sur l’utilisation du compilateur MOF, consultez Format d’objet managé.

Pour utiliser ce commutateur, vous devez respecter les restrictions suivantes :

  • Chaque définition d’événement doit inclure les attributs de tâche et d’opcode
  • Chaque tâche doit inclure l’attribut eventGuid
  • Les données de modèle que l’événement référence ne peuvent pas contenir :
    • Éléments de données qui spécifient les types d’entrée win:Binary ou win:SYSTEMTIME
    • Structures
    • Tableaux de taille variable ; toutefois, vous pouvez spécifier des tableaux de longueur fixe
    • Les types de données chaîne ne peuvent pas spécifier l’attribut length

Vous devez utiliser cet argument avec l’argument -um, -cs, -css ou -km

-ppréfixe

Utilisez cet argument pour remplacer le préfixe par défaut que le compilateur utilise pour les noms de macros de journalisation et les noms de méthode. Le préfixe par défaut est « EventWrite ». La chaîne est sensible à la casse.

Vous pouvez utiliser cet argument avec l’argument -um, -cs, -css ou -km .

Préfixe -P

Utilisez cet argument pour supprimer des caractères au début du nom symbolique que vous avez spécifié pour l’événement. La comparaison respecte la casse. Le compilateur utilise le nom symbolique pour former les noms des macros de journalisation et des noms de méthode.

Le nom par défaut d’une macro de journalisation est EventWriteSymbolName, où SymbolName est le nom symbolique que vous avez spécifié pour l’événement. Par exemple, si vous définissez l’attribut symbol de l’événement sur PrinterConnection, le nom de la macro est EventWritePrinterConnection. Pour supprimer l’imprimante du nom, utilisez -PPrinter, ce qui entraîne EventWriteConnection.

Vous pouvez utiliser cet argument avec l’argument -um, -cs, -css ou -km .

-um

Utilisez cet argument pour que le compilateur génère le code en mode utilisateur que vous utiliseriez pour journaliser les événements définis dans votre manifeste.

Pour que le compilateur génère du code de journalisation, vous devez spécifier l’argument -um, -cs, -css ou -km ; ces arguments s’excluent mutuellement.

Pour spécifier où placer les fichiers .h, .cs et .mof générés par le compilateur, utilisez l’argument -h . Si vous ne spécifiez pas l’argument -h , les fichiers sont placés dans le dossier actif.

Pour spécifier où placer le fichier .rc et les fichiers binaires (qui contiennent les ressources de métadonnées) générés par le compilateur, utilisez l’argument -r . Si vous ne spécifiez pas l’argument -r , les fichiers sont placés dans le dossier actif.

Le compilateur utilise le nom de base du fichier d’entrée comme nom de base des fichiers qu’il génère. Pour spécifier un nom de base, utilisez l’argument -z .

Arguments spécifiques aux fichiers texte de message

-Un

Utilisez cet argument pour spécifier que le fichier d’entrée de nom de fichier contient du contenu dans la page de codes Windows ANSI par défaut (CP_ACP). Il s’agit de la valeur par défaut. Utilisez -u pour Unicode. Si le fichier d’entrée contient une nomenclature, cet argument est ignoré.

-Un

DÉPRÉCIÉ. Utilisez cet argument pour spécifier que les messages du fichier .bin de sortie doivent être ANSI.

-B

Utilisez cet argument pour que le compilateur utilise le nom de base du fichier d’entrée de nom de fichier pour les noms de fichiers .bin. La valeur par défaut consiste à utiliser « MSG ».

-d

Utilisez cet argument pour utiliser des valeurs décimales pour les constantes Severity et Facility dans le fichier d’en-tête au lieu des valeurs hexadécimales.

-¡n

Utilisez cet argument pour spécifier que les messages se terminent immédiatement après le corps du message. La valeur par défaut consiste à terminer le corps du message avec un CR/LF.

-O

Utilisez cet argument pour que le compilateur génère un fichier d’en-tête OLE2 à l’aide de définitions HRESULT au lieu de codes status. L’utilisation de codes status est la valeur par défaut.

-U

Utilisez cet argument pour spécifier que le fichier d’entrée de nom de fichier contient du contenu UTF-16LE. La valeur par défaut est le contenu ANSI. Si le fichier d’entrée contient une nomenclature, cet argument est ignoré.

-U

Utilisez cet argument pour spécifier que les messages du fichier .bin de sortie doivent être Unicode. Il s’agit de la valeur par défaut.

-C

Utilisez cet argument pour générer une sortie détaillée.

-xpath

Utilisez cet argument pour spécifier le dossier dans lequel vous souhaitez que le compilateur place le fichier include .dbg C. Le fichier .dbg mappe les ID de message à leurs noms symboliques.

Notes

Les arguments -A et -mof sont déconseillés et seront supprimés ultérieurement.

Le compilateur accepte comme entrée un fichier manifeste (.man) ou un fichier texte de message (.mc) et génère les fichiers suivants :

  • filename.h

    Un fichier d’en-tête C/C++ qui contient les descripteurs d’événements, le GUID du fournisseur et les noms de symboles que vous référencez dans votre application.

  • Fichier TEMP.bin

    Fichier de ressources binaire qui contient les métadonnées du fournisseur et de l’événement. Il s’agit de la ressource de modèle, qui est indiquée par le suffixe TEMP du nom de base du fichier.

  • Msg00001.bin

    Fichier de ressources binaire pour chaque langage que vous spécifiez (par exemple, si votre manifeste contient des chaînes de message en-US et fr-FR, le compilateur génère Msg00001.bin et Msg00002.bin).

  • filename.rc

    Script du compilateur de ressources qui contient les instructions permettant d’inclure chaque fichier .bin en tant que ressource.

Pour les arguments qui prennent un chemin, le chemin peut être un chemin absolu, relatif ou UNC et il peut contenir des variables d’environnement.

Avant mc version 1.12.7051 : Le compilateur n’autorise pas les chemins d’accès relatifs ou les variables d’environnement.

Le Kit de développement logiciel (SDK) Windows inclut le compilateur (mc.exe) dans le dossier \Bin.

Exemples

L’exemple suivant compile un manifeste à l’aide des valeurs par défaut du compilateur.

mc spooler.man

L’exemple suivant compile le manifeste et place les fichiers d’en-tête et de ressources dans les dossiers spécifiés.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]