Nachrichtencompiler (MC.exe)

Wird zum Kompilieren von Instrumentierungsmanifesten und Nachrichtentextdateien verwendet. Der Compiler generiert die Nachrichtenressourcendateien, mit denen Ihre Anwendung verknüpft ist.

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

Gemeinsame Argumente für Nachrichtentext- und Manifestdateien

-?

Zeigt die Nutzungsinformationen für den Nachrichtencompiler an.

-C

Verwenden Sie dieses Argument, damit der Compiler das Kundenbit (Bit 28) in allen Nachrichten-IDs festgelegt. Informationen zum Kundenbit finden Sie unter winerror.h.

-cp-Codierung

Verwenden Sie dieses Argument, um die Zeichencodierung anzugeben, die für alle generierten Textdateien verwendet wird. Gültige Namen sind "ansi" (Standard), "utf-8" und "utf-16". Die Unicode-Codierungen fügen eine Bytereihenfolgenmarkierung hinzu.

-e-Erweiterung

Verwenden Sie dieses Argument, um die Erweiterung anzugeben, die für die Headerdatei verwendet werden soll. Sie können eine Erweiterung mit bis zu drei Zeichen angeben, wobei der Zeitraum nicht eingeschlossen wird. Der Standardwert ist .h.

-h-Pfad

Verwenden Sie dieses Argument, um den Ordner anzugeben, in dem der Compiler die generierte Headerdatei platzieren soll. Der Standardwert ist das aktuelle Verzeichnis.

-mLänge

Verwenden Sie dieses Argument, damit der Compiler eine Warnung generiert, wenn die beliebige Nachricht Längenzeichen überschreitet.

-r-Pfad

Verwenden Sie dieses Argument, um den Ordner anzugeben, in dem der Compiler das generierte Ressourcencompilerskript (RC-Datei) und die generierten BIN-Dateien (binäre Ressourcen) platzieren soll, die das Ressourcencompilerskript enthält. Der Standardwert ist das aktuelle Verzeichnis.

-zname

Verwenden Sie dieses Argument, um den Standardbasisnamen zu überschreiben, den der Compiler für die generierten Dateien verwendet. Standardmäßig wird der Basisname der Dateiname-Eingabedatei verwendet.

Dateiname

Die Instrumentierungsmanifestdatei oder Nachrichtentextdatei. Die Datei muss im aktuellen Verzeichnis vorhanden sein. Sie können eine Manifestdatei, eine Nachrichtentextdatei oder beides angeben. Der Dateiname muss die Erweiterung enthalten. Die Konvention besteht darin, die Erweiterung ".man" für Manifestdateien und die Erweiterung ".mc" für Nachrichtentextdateien zu verwenden.

Spezifische Argumente für Manifestdateien

-sPfad

Verwenden Sie dieses Argument, um eine Basislinie Ihrer Instrumentierung zu erstellen. Geben Sie den Pfad zu dem Ordner an, der Die Basismanifestdateien enthält. Bei nachfolgenden Releases verwenden Sie dann das Argument -t , um das neue Manifest anhand der Baseline auf Kompatibilitätsprobleme zu überprüfen.

Vor MC-Version 1.12.7051: Nicht verfügbar

-tpath

Verwenden Sie dieses Argument, wenn Sie eine neue Version ihres Manifests erstellen und es auf Anwendungskompatibilität mit der Baseline überprüfen möchten, die Sie mit dem Argument -s erstellt haben. Der Pfad muss auf den Ordner verweisen, der den enthält. BIN-Dateien, die vom Baselinevorgang erstellt wurden (siehe Schalter -s ).

Vor MC-Version 1.12.7051: Nicht verfügbar

-w-Pfad

Der Compiler ignoriert dieses Argument und überprüft das Manifest automatisch.

Vor MC-Version 1.12.7051: Verwenden Sie dieses Argument, um den Ordner anzugeben, der die Schemadatei Eventman.xsd enthält, die der Compiler zum Überprüfen des Manifests verwendet. Das Windows SDK enthält die Schemadatei Eventman.xsd im Ordner \Include. Wenn Sie dieses Argument nicht angeben, überprüft der Compiler Ihr Manifest nicht.

-W-Pfad

Der Compiler ignoriert dieses Argument.

Vor MC-Version 1.12.7051: Verwenden Sie dieses Argument, um den Ordner anzugeben, der die Winmeta.xml-Datei enthält. Die Winmeta.xml-Datei enthält die erkannten Eingabe- und Ausgabetypen sowie die vordefinierten Kanäle, Ebenen und Opcodes. Das Windows SDK enthält die Winmeta.xml-Datei im Ordner \Include.

Spezifische Argumente für die Generierung von Code, den Ihr Anbieter zum Protokollieren von Ereignissen verwenden würde

Sie können die folgenden Compilerargumente verwenden, um Kernelmodus- oder Benutzermoduscode zu generieren, den Sie zum Protokollieren von Ereignissen verwenden können. Sie können auch anfordern, dass der Compiler Code generiert, um das Schreiben von Ereignissen auf Computern vor Windows Vista zu unterstützen. Wenn Ihre Anwendung in C# geschrieben ist, kann der Compiler eine C#-Klasse generieren, die Sie zum Protokollieren von Ereignissen verwenden können. Diese Argumente sind ab MC-Version 1.12.7051 verfügbar, die in der Windows 7-Version des Window SDK enthalten ist.

-Co

Verwenden Sie dieses Argument, damit der Protokollierungsdienst Ihre benutzerdefinierte Funktion für jedes Ereignis aufruft, das Sie protokollieren (die Funktion wird aufgerufen, nachdem das Ereignis protokolliert wurde). Ihre benutzerdefinierte Funktion muss über die folgende Signatur verfügen.

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

Sie müssen auch die folgende -Direktive in Ihren Code einschließen.

#define MCGEN_CALLOUT pFnUserFunction

Sie sollten Ihre Implementierung so kurz wie möglich halten, um Protokollierungsprobleme zu vermeiden. Der Dienst protokolliert Ihre Ereignisse nicht mehr, bis die Funktion zurückgegeben wird.

Sie können dieses Argument mit dem Argument -km oder -um verwenden.

-cs-Namespace

Verwenden Sie dieses Argument, damit der Compiler eine C#-Klasse basierend auf der EventProvider-Klasse von .NET 3.5 generiert.

-css-Namespace

Verwenden Sie dieses Argument, um den Compiler eine statische C#-Klasse basierend auf der .NET 3.5 EventProvider-Klasse zu generieren.

-Km

Verwenden Sie dieses Argument, damit der Compiler den Kernelmoduscode generiert, den Sie zum Protokollieren der in Ihrem Manifest definierten Ereignisse verwenden würden.

-Mof

VERALTET. Verwenden Sie dieses Argument, damit der Compiler Code generiert, den Sie zum Protokollieren von Ereignissen auf Computern vor Windows Vista verwenden können. Mit dieser Option wird auch eine MOF-Datei erstellt, die die MOF-Klassen für jedes im Manifest definierte Ereignis enthält. Um die Klassen in der MOF-Datei zu registrieren, damit Consumer die Ereignisse decodieren können, verwenden Sie den MOF-Compiler (Mofcomp.exe). Ausführliche Informationen zur Verwendung des MOF-Compilers finden Sie unter Managed Object Format.

Um diesen Schalter verwenden zu können, müssen Sie die folgenden Einschränkungen einhalten:

  • Jede Ereignisdefinition muss die Task- und opcode-Attribute enthalten.
  • Jede Aufgabe muss das eventGuid-Attribut enthalten.
  • Die Vorlagendaten, die die Ereignisverweise nicht enthalten können:
    • Datenelemente, die die Eingabetypen win:Binary oder win:SYSTEMTIME angeben
    • Strukturen
    • Arrays mit variabler Größe; Sie können jedoch Arrays mit fester Länge angeben.
    • Zeichenfolgendatentypen können das Length-Attribut nicht angeben.

Sie müssen dieses Argument mit den Argumenten -um, -cs, -css oder -km verwenden.

Präfix "-p"

Verwenden Sie dieses Argument, um das Standardpräfix zu überschreiben, das der Compiler für die Protokollierung von Makronamen und Methodennamen verwendet. Das Standardpräfix ist "EventWrite". Die Zeichenfolge beachtet die Groß-/Kleinschreibung.

Sie können dieses Argument mit dem Argument -um, -cs, -css oder -km verwenden.

Präfix -P

Verwenden Sie dieses Argument, um Zeichen vom Anfang des symbolischen Namens zu entfernen, den Sie für das Ereignis angegeben haben. Bei dem Vergleich wird Groß- und Kleinschreibung nicht unterschieden. Der Compiler verwendet den symbolischen Namen, um die Protokollierungsmakronamen und Methodennamen zu bilden.

Der Standardname für ein Protokollierungsmakro ist EventWriteSymbolName, wobei SymbolName der symbolische Name ist, den Sie für das Ereignis angegeben haben. Wenn Sie beispielsweise das Symbolattribute des Ereignisses auf PrinterConnection festlegen, lautet der Makroname EventWritePrinterConnection. Um Drucker aus dem Namen zu entfernen, verwenden Sie -PPrinter, was zu EventWriteConnection führt.

Sie können dieses Argument mit dem Argument -um, -cs, -css oder -km verwenden.

-um

Verwenden Sie dieses Argument, damit der Compiler den Benutzermoduscode generiert, den Sie zum Protokollieren der in Ihrem Manifest definierten Ereignisse verwenden würden.

Damit der Compiler Protokollierungscode generiert, müssen Sie das Argument -um, -cs, -css oder -km angeben. diese Argumente schließen sich gegenseitig aus.

Verwenden Sie das -h-Argument, um anzugeben, wo die vom Compiler generierten .h-, CS- und MOF-Dateien platziert werden sollen. Wenn Sie das Argument -h nicht angeben, werden die Dateien im aktuellen Ordner abgelegt.

Verwenden Sie das Argument -r , um anzugeben, wo die RC-Datei und die Binärdateien (die die Metadatenressourcen enthalten), die vom Compiler generiert werden sollen. Wenn Sie das Argument -r nicht angeben, werden die Dateien im aktuellen Ordner abgelegt.

Der Compiler verwendet den Basisnamen der Eingabedatei als Basisnamen der generierten Dateien. Um einen Basisnamen anzugeben, verwenden Sie das Argument -z .

Spezifische Argumente für Nachrichtentextdateien

-Eine

Verwenden Sie dieses Argument, um anzugeben, dass die Dateiname-Eingabedatei Inhalte auf der Systemstandard-Windows ANSI-Codepage (CP_ACP) enthält. Dies ist die Standardeinstellung. Verwenden Sie -u für Unicode. Wenn die Eingabedatei eine Stückliste enthält, wird dieses Argument ignoriert.

-Eine

VERALTET. Verwenden Sie dieses Argument, um anzugeben, dass die Nachrichten in der BIN-Ausgabedatei ANSI sein sollen.

-B

Verwenden Sie dieses Argument, damit der Compiler den Basisnamen der Dateiname-Eingabedatei für die BIN-Dateinamen verwendet. Standardmäßig wird "MSG" verwendet.

-d

Verwenden Sie dieses Argument, um Dezimalwerte für die Konstanten Schweregrad und Facility in der Headerdatei anstelle von Hexadezimalwerten zu verwenden.

-N

Verwenden Sie dieses Argument, um anzugeben, dass Nachrichten unmittelbar nach dem Nachrichtentext beendet werden. Standardmäßig wird der Nachrichtentext mit einem CR/LF beendet.

-O

Verwenden Sie dieses Argument, damit der Compiler eine OLE2-Headerdatei mithilfe von HRESULT-Definitionen anstelle von status Codes generiert. Die Standardeinstellung ist die Verwendung status Codes.

-U

Verwenden Sie dieses Argument, um anzugeben, dass die Dateiname-Eingabedatei UTF-16LE-Inhalt enthält. Der Standardwert ist ANSI-Inhalt. Wenn die Eingabedatei eine Stückliste enthält, wird dieses Argument ignoriert.

-U

Verwenden Sie dieses Argument, um anzugeben, dass die Nachrichten in der BIN-Ausgabedatei Unicode sein sollen. Dies ist die Standardeinstellung.

-V

Verwenden Sie dieses Argument, um ausführliche Ausgabe zu generieren.

-xPfad

Verwenden Sie dieses Argument, um den Ordner anzugeben, in dem der Compiler die .dbg C include-Datei platzieren soll. Die DBG-Datei ordnet Nachrichten-IDs ihren symbolischen Namen zu.

Bemerkungen

Die Argumente -A und -mof sind veraltet und werden in Zukunft entfernt.

Der Compiler akzeptiert als Eingabe eine Manifestdatei (.man) oder eine Nachrichtentextdatei (.mc) und generiert die folgenden Dateien:

  • dateiname.h

    Eine C/C++-Headerdatei, die die Ereignisdeskriptoren, die Anbieter-GUID und die Symbolnamen enthält, auf die Sie in Ihrer Anwendung verweisen.

  • Dateiname TEMP.bin

    Eine binäre Ressourcendatei, die die Anbieter- und Ereignismetadaten enthält. Dies ist die Vorlagenressource, die durch das TEMP-Suffix des Basisnamens der Datei gekennzeichnet ist.

  • Msg00001.bin

    Eine binäre Ressourcendatei für jede von Ihnen angegebene Sprache (wenn ihr Manifest beispielsweise Nachrichtenzeichenfolgen in en-US und fr-FR enthält, generiert der Compiler Msg00001.bin und Msg00002.bin).

  • dateiname.rc

    Ein Ressourcencompilerskript, das die Anweisungen enthält, um jede BIN-Datei als Ressource einzuschließen.

Bei Argumenten, die einen Pfad annehmen, kann der Pfad ein absoluter, relativer oder UNC-Pfad sein und Umgebungsvariablen enthalten.

Vor MC-Version 1.12.7051: Der Compiler lässt keine relativen Pfade oder Umgebungsvariablen zu.

Das Windows SDK enthält den Compiler (mc.exe) im Ordner \Bin.

Beispiele

Im folgenden Beispiel wird ein Manifest mithilfe der Compilerstandardeinstellungen kompiliert.

mc spooler.man

Im folgenden Beispiel wird das Manifest kompiliert und die Header- und Ressourcendateien in den angegebenen Ordnern platziert.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]