Meddelandekompilerare (MC.exe)
Meddelandekompileraren (mc.exe) används för att kompilera instrumentationsmanifest och meddelandetextfiler. Kompilatorn genererar de meddelanderesursfiler som programmet länkar till.
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>]
Not
Meddelandekompilatorn levereras med Windows SDK och finns i mappen \Bin.
Argument som är gemensamma för både meddelandetextfiler och manifestfiler
-
?
-
Visar användningsinformationen för meddelandekompileraren.
-
-c
-
Använd det här argumentet om du vill att kompilatorn ska ange kundbiten (bit 28) i alla meddelande-ID:t. Information om kundbiten finns i winerror.h.
-
-cpkodning
-
Använd det här argumentet om du vill ange den teckenkodning som används för alla genererade textfiler. Giltiga namn inkluderar "ansi" (standard), "utf-8" och "utf-16". Unicode-kodningarna lägger till ett byteordningsmärke.
-
-etillägg
-
Använd det här argumentet om du vill ange det tillägg som ska användas för huvudfilen. Du kan ange upp till ett tillägg med tre tecken, exklusive perioden. Standardvärdet är .h.
-
-hsökväg
-
Använd det här argumentet för att ange den mapp som du vill att kompilatorn ska placera den genererade huvudfilen i. Standardvärdet är den aktuella katalogen.
-
-mlängd
-
Använd det här argumentet om du vill att kompilatorn ska generera en varning om meddelandet överskrider längd tecken.
-
-rsökväg
-
Använd det här argumentet för att ange i vilken mapp kompilatorn ska placera det genererade resurskompileringsskriptet (.rc-filen) och de genererade .bin filer (binära resurser) som resurskompileringsskriptet innehåller. Standardvärdet är den aktuella katalogen.
-
-znamn
-
Använd det här argumentet för att åsidosätta standardbasnamnet som kompilatorn använder för de filer som genereras. Standardvärdet är att använda basnamnet för filnamn indatafil.
-
filnamn
-
Instrumentationsmanifestfilen eller meddelandetextfilen. Filen måste finnas i den aktuella katalogen. Du kan ange en manifestfil, en meddelandetextfil eller båda. Filnamnet måste innehålla tillägget. Konventionen är att använda ett .man-tillägg för manifestfiler och ett .mc-tillägg för meddelandetextfiler.
Argument som är specifika för manifestfiler
-
-ssökväg
-
Använd det här argumentet för att skapa en baslinje för din instrumentation. Ange sökvägen till mappen som innehåller originalmanifestfilerna. För efterföljande versioner använder du sedan argumentet -t för att kontrollera det nya manifestet mot baslinjen för kompatibilitetsproblem.
Före MC version 1.12.7051: Inte tillgänglig
-
-tsökväg
-
Använd det här argumentet när du skapar en ny version av manifestet och vill kontrollera om det finns programkompatibilitet mot baslinjen som du skapade med argumentet -s. Sökvägen måste peka på mappen som innehåller . BIN-filer som baslinjeåtgärden skapade (se växeln -s).
Före MC version 1.12.7051: Inte tillgänglig
-
-wsökväg
-
Kompilatorn ignorerar det här argumentet och validerar manifestet automatiskt.
Före MC-version 1.12.7051: Använd det här argumentet för att ange mappen som innehåller schemafilen Eventman.xsd, som kompilatorn använder för att verifiera manifestet. Windows SDK innehåller schemafilen Eventman.xsd i mappen \Include. Om du inte anger det här argumentet verifierar kompilatorn inte manifestet.
-
-Wsökväg
-
Kompilatorn ignorerar det här argumentet.
Före MC version 1.12.7051: Använd det här argumentet för att ange mappen som innehåller filen Winmeta.xml. Filen Winmeta.xml innehåller de identifierade indata- och utdatatyperna samt fördefinierade kanaler, nivåer och opcodes. Windows SDK innehåller filen Winmeta.xml i mappen \Include.
Argument som är specifika för att generera kod som providern använder för att logga händelser
Du kan använda följande kompilatorargument för att generera kod i kernelläge eller användarläge som du kan använda för att logga händelser. Du kan också begära att kompilatorn genererar kod som stöd för att skriva händelser på datorer före Windows Vista. Om ditt program är skrivet C#, kan kompilatorn generera en C#-klass som du kan använda för att logga händelser. Dessa argument är tillgängliga från och med MC version 1.12.7051 som levereras med Windows 7-versionen av Window SDK.
-
-co
-
Använd det här argumentet om du vill att loggningstjänsten ska anropa den användardefinierade funktionen för varje händelse som du loggar (funktionen anropas efter att händelsen har loggats). Din användardefinierade funktion måste ha följande signatur.
VOID pFnUserFunction( __in REGHANDLE RegHandle, __in PCEVENT_DESCRIPTOR Descriptor, __in ULONG EventDataCount, __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData );
Du måste också inkludera följande direktiv i koden.
#define MCGEN_CALLOUT pFnUserFunction
Du bör hålla implementeringen så kort som möjligt för att förhindra loggningsproblem. tjänsten loggar inte längre dina händelser förrän funktionen returneras.
Du kan använda det här argumentet med argumentet -km eller -um.
-
-csnamnområde
-
Använd det här argumentet om du vill att kompilatorn ska generera en C#-klass baserat på klassen .NET 3.5 EventProvider.
-
-cssnamnområde
-
Använd det här argumentet om du vill att kompilatorn ska generera en statisk C#-klass baserat på klassen .NET 3.5 EventProvider.
-
km
-
Använd det här argumentet om du vill att kompilatorn ska generera den kernellägeskod som du använder för att logga de händelser som definierats i manifestet.
-
-mof
-
DEPRECATED. Använd det här argumentet om du vill att kompilatorn ska generera kod som du kan använda för att logga händelser på datorer före Windows Vista. Det här alternativet skapar också en MOF-fil som innehåller MOF-klasserna för varje händelse som definieras i manifestet. Om du vill registrera klasserna i MOF-filen så att konsumenterna kan avkoda händelserna använder du MOF-kompilatorn (Mofcomp.exe). Mer information om hur du använder MOF-kompilatorn finns i Managed Object Format.
Om du vill använda den här växeln måste du följa följande begränsningar:
- Varje händelsedefinition måste innehålla aktivitets- och opcode-attributen
- Varje uppgift måste innehålla attributet eventGuid
- Malldata som händelsereferenserna inte kan innehålla:
- Dataobjekt som anger indatatyperna win:Binary eller win:SYSTEMTIME
- Strukturer
- Matriser med variabel storlek; Du kan dock ange matriser med fast längd
- Strängdatatyper kan inte ange längdattributet
Du måste använda det här argumentet med argumentet -um, -cs, -csseller argumentet -km
-
-pprefix
-
Använd det här argumentet för att åsidosätta standardprefixet som kompilatorn använder för att logga makronamn och metodnamn. Standardprefixet är "EventWrite". Strängen är skiftlägeskänslig.
Du kan använda det här argumentet med argumentet -um, -cs, -csseller -km argument.
-
-Pprefix
-
Använd det här argumentet om du vill ta bort tecken från början av det symboliska namn som du angav för händelsen. Jämförelsen är skiftlägeskänslig. Kompilatorn använder det symboliska namnet för att skapa loggningsmakronnamnen och metodnamnen.
Standardnamnet för ett loggningsmakro är EventWriteSymbolName, där SymbolName är det symboliska namn som du angav för händelsen. Om du till exempel anger symbolattributet för händelsen till PrinterConnection blir makronamnet EventWritePrinterConnection. Om du vill ta bort skrivaren från namnet använder du -PPrinter, vilket resulterar i EventWriteConnection.
Du kan använda det här argumentet med argumentet -um, -cs, -csseller -km argument.
-
-um
-
Använd det här argumentet om du vill att kompilatorn ska generera den användarlägeskod som du använder för att logga de händelser som definierats i manifestet.
Om du vill att kompilatorn ska generera loggningskod måste du ange argumentet -um, -cs, -csseller -km. dessa argument är ömsesidigt uteslutande.
Om du vill ange var du vill placera filerna .h, .cs och .mof som kompilatorn genererar använder du argumentet -h. Om du inte anger argumentet -h placeras filerna i den aktuella mappen.
Om du vill ange var du vill placera .rc-filen och binära filer (som innehåller metadataresurserna) som kompilatorn genererar använder du argumentet -r. Om du inte anger argumentet -r placeras filerna i den aktuella mappen.
Kompilatorn använder basnamnet för indatafilen som basnamn för de filer som genereras. Om du vill ange ett basnamn använder du argumentet -z.
Argument som är specifika för meddelandetextfiler
-
- en
-
Använd det här argumentet om du vill ange att filnamn indatafil innehåller innehåll på systemstandardsidan för Windows ANSI-kod (CP_ACP). Det här är standardinställningen. Använd -u för Unicode. Om indatafilen innehåller en strukturlista ignoreras det här argumentet.
-
-A
-
DEPRECATED. Använd det här argumentet för att ange att meddelandena i utdata .bin filen ska vara ANSI.
-
-b
-
Använd det här argumentet om du vill att kompilatorn ska använda basnamnet för filnamn indatafil för .bin filnamn. Standardvärdet är att använda "MSG".
-
-d
-
Använd det här argumentet om du vill använda decimalvärden för konstanterna Allvarlighetsgrad och Anläggning i rubrikfilen i stället för hexadecimala värden.
-
-n
-
Använd det här argumentet om du vill ange att meddelanden ska avslutas omedelbart efter meddelandetexten. Standardvärdet är att avsluta meddelandetexten med en CR/LF.
-
-o
-
Använd det här argumentet om du vill att kompilatorn ska generera en OLE2-huvudfil med hjälp av HRESULT- definitioner i stället för statuskoder. Standardinställningen är att använda statuskoder.
-
-u
-
Använd det här argumentet för att ange att filnamn indatafil innehåller UTF-16LE-innehåll. Standardvärdet är ANSI-innehåll. Om indatafilen innehåller en strukturlista ignoreras det här argumentet.
-
-U
-
Använd det här argumentet om du vill ange att meddelandena i utdatafilen .bin ska vara Unicode. Det här är standardinställningen.
-
-v
-
Använd det här argumentet för att generera utförliga utdata.
-
-xsökväg
-
Använd det här argumentet för att ange den mapp som du vill att kompilatorn ska placera .dbg C-inkluderingsfilen i. .dbg-filen mappar meddelande-ID:n till deras symboliska namn.
Anmärkningar
Argumenten -A och -mof är inaktuella och tas bort i framtiden.
Kompilatorn accepterar som indata en manifestfil (.man) eller en meddelandetextfil (.mc) och genererar följande filer:
filnamn.h
En C/C++-huvudfil som innehåller de händelsebeskrivningar, provider-GUID och symbolnamn som du refererar till i ditt program.
filnamnTEMP.bin
En binär resursfil som innehåller providern och händelsemetadata. Det här är mallresursen som är signifierad av TEMP-suffixet för filens basnamn.
Msg00001.bin
En binär resursfil för varje språk som du anger (till exempel om manifestet innehåller meddelandesträngar i en-US och fr-FRgenererar kompilatorn Msg00001.bin och Msg00002.bin).
filnamn.rc
Ett resurskompilatorskript som innehåller de instruktioner som ska innehålla varje .bin fil som en resurs.
För argument som använder en sökväg kan sökvägen vara en absolut, relativ eller UNC-sökväg och den kan innehålla miljövariabler.
Före MC version 1.12.7051: Kompilatorn tillåter inte relativa sökvägar eller miljövariabler.
Exempel
I följande exempel kompileras ett manifest med hjälp av kompilatorns standardvärden.
mc spooler.man
I följande exempel kompileras manifestet och huvudet och resursfilerna placeras i de angivna mapparna.
mc -h <pathgoeshere> -r <pathgoeshere> spooler.man
Krav
Krav | Värde |
---|---|
Lägsta klient som stöds | Windows 2000 Professional [endast skrivbordsappar] |
Lägsta server som stöds | Windows 2000 Server [endast skrivbordsappar] |