Berichtcompilator (MC.exe)
De Message Compiler (mc.exe) wordt gebruikt om instrumentatiemanifesten en berichttekstbestanden te compileren. De compiler genereert de berichtbronbestanden waaraan uw toepassing is gekoppeld.
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>]
Notitie
De Message Compiler wordt geleverd met de Windows SDK en vindt u in de map \Bin.
Argumenten die gebruikelijk zijn voor zowel berichttekstbestanden als manifestbestanden
-
-?
-
Geeft de gebruiksgegevens voor de berichtcompilatie weer.
-
-c
-
Gebruik dit argument om de compiler de bit van de klant (bit 28) in alle bericht-id's in te stellen. Zie winerror.h voor meer informatie over de bit van de klant.
-
-cpcodering
-
Gebruik dit argument om de tekencodering op te geven die wordt gebruikt voor alle gegenereerde tekstbestanden. Geldige namen zijn 'ansi' (standaard), 'utf-8' en 'utf-16'. Met de Unicode-coderingen wordt een bytevolgordemarkering toegevoegd.
-
-e-extensie
-
Gebruik dit argument om de extensie op te geven die moet worden gebruikt voor het headerbestand. U kunt maximaal drie tekens opgeven, niet de punt. De standaardwaarde is .h.
-
-hpad
-
Gebruik dit argument om de map op te geven waarin u wilt dat de compiler het gegenereerde headerbestand plaatst. De standaardwaarde is de huidige map.
-
-mlengte
-
Gebruik dit argument om ervoor te zorgen dat de compiler een waarschuwing genereert als het bericht groter is dan lengte tekens.
-
-rpad
-
Gebruik dit argument om de map op te geven waarin u wilt dat de compiler het gegenereerde resourcecompilerscript (.rc-bestand) en de gegenereerde .bin bestanden (binaire resources) die het compilerscript voor de resource bevat. De standaardwaarde is de huidige map.
-
-znaam
-
Gebruik dit argument om de standaardbasisnaam te overschrijven die de compiler gebruikt voor de bestanden die worden gegenereerd. De standaardwaarde is het gebruik van de basisnaam van de bestandsnaam invoerbestand.
-
bestandsnaam
-
Het manifestbestand van de instrumentatie of het tekstbestand van het bericht. Het bestand moet aanwezig zijn in de huidige map. U kunt een manifestbestand, een tekstbestand voor berichten of beide opgeven. De bestandsnaam moet de extensie bevatten. De conventie is om een .man-extensie te gebruiken voor manifestbestanden en een .mc-extensie voor berichttekstbestanden.
Argumenten die specifiek zijn voor manifestbestanden
-
-spad
-
Gebruik dit argument om een basislijn van uw instrumentatie te maken. Geef het pad op naar de map die uw basislijnmanifestbestanden bevat. Voor volgende releases gebruikt u vervolgens het argument -t om het nieuwe manifest te controleren op basis van de basislijn voor compatibiliteitsproblemen.
Vóór MC versie 1.12.7051: Niet beschikbaar
-
-tpad
-
Gebruik dit argument wanneer u een nieuwe versie van het manifest maakt en deze wilt controleren op toepassingscompatibiliteit ten opzichte van de basislijn die u hebt gemaakt met behulp van het argument
-s. Het pad moet verwijzen naar de map die de map bevat. BIN-bestanden die door de basislijnbewerking zijn gemaakt (zie de -s switch). Vóór MC versie 1.12.7051: Niet beschikbaar
-
-wpad
-
De compiler negeert dit argument en valideert het manifest automatisch.
Vóór MC-versie 1.12.7051: Gebruik dit argument om de map op te geven die het schemabestand Eventman.xsd bevat, dat door de compiler wordt gebruikt om uw manifest te valideren. De Windows SDK bevat het schemabestand Eventman.xsd in de map \Include. Als u dit argument niet opgeeft, valideert de compiler uw manifest niet.
-
-Wpad
-
Dit argument wordt genegeerd door de compiler.
Vóór MC-versie 1.12.7051: Gebruik dit argument om de map met het Winmeta.xml-bestand op te geven. Het bestand Winmeta.xml bevat de herkende invoer- en uitvoertypen, evenals de vooraf gedefinieerde kanalen, niveaus en opcodes. De Windows SDK bevat het Winmeta.xml bestand in de map \Include.
Argumenten die specifiek zijn voor het genereren van code die uw provider zou gebruiken voor het vastleggen van gebeurtenissen
U kunt de volgende compilerargumenten gebruiken om kernelmodus- of gebruikersmoduscode te genereren die u kunt gebruiken om gebeurtenissen te registreren. U kunt ook aanvragen dat de compiler code genereert ter ondersteuning van schrijfevenementen op computers vóór Windows Vista. Als uw toepassing C# is geschreven, kan de compiler een C#-klasse genereren die u kunt gebruiken om gebeurtenissen te registreren. Deze argumenten zijn beschikbaar vanaf MC-versie 1.12.7051 die wordt geleverd met de Windows 7-versie van de Windows SDK.
-
-co-
-
Gebruik dit argument om ervoor te zorgen dat de logboekregistratieservice uw door de gebruiker gedefinieerde functie aanroept voor elke gebeurtenis die u aanmeldt (de functie wordt aangeroepen nadat de gebeurtenis is vastgelegd). De door de gebruiker gedefinieerde functie moet de volgende handtekening hebben.
VOID pFnUserFunction( __in REGHANDLE RegHandle, __in PCEVENT_DESCRIPTOR Descriptor, __in ULONG EventDataCount, __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData );
U moet ook de volgende instructie in uw code opnemen.
#define MCGEN_CALLOUT pFnUserFunction
U moet uw implementatie zo kort mogelijk houden om logboekregistratieproblemen te voorkomen; de service zal niet meer van uw gebeurtenissen registreren totdat de functie wordt geretourneerd.
U kunt dit argument gebruiken met het argument -km of -um argument.
-
-csnaamruimte
-
Gebruik dit argument om ervoor te zorgen dat de compiler een C#-klasse genereert op basis van de klasse .NET 3.5 EventProvider.
-
-cssnaamruimte
-
Gebruik dit argument om ervoor te zorgen dat de compiler een statische C#-klasse genereert op basis van de klasse .NET 3.5 EventProvider.
-
-km
-
Gebruik dit argument om ervoor te zorgen dat de compiler de kernelmoduscode genereert die u zou gebruiken om de gebeurtenissen te registreren die in uw manifest zijn gedefinieerd.
-
-mof-
-
VEROUDERD. Gebruik dit argument om de compiler code te laten genereren die u kunt gebruiken voor het registreren van gebeurtenissen op computers vóór Windows Vista. Met deze optie maakt u ook een MOF-bestand dat de MOF-klassen bevat voor elke gebeurtenis die in het manifest is gedefinieerd. Als u de klassen in het MOF-bestand wilt registreren zodat gebruikers de gebeurtenissen kunnen decoderen, gebruikt u de MOF-compiler (Mofcomp.exe). Zie Managed Object Formatvoor meer informatie over het gebruik van de MOF-compiler.
Als u deze switch wilt gebruiken, moet u voldoen aan de volgende beperkingen:
- Elke gebeurtenisdefinitie moet de taak- en opcodekenmerken bevatten
- Elke taak moet het kenmerk eventGuid bevatten
- De sjabloongegevens die de gebeurtenisverwijzingen niet mogen bevatten:
- Gegevensitems die de invoertypen win:Binary of win:SYSTEMTIME opgeven
- Structuren
- Matrices van variabele grootte; U kunt echter wel matrices met een vaste lengte opgeven
- Gegevenstypen voor tekenreeksen kunnen het lengtekenmerk niet opgeven
U moet dit argument gebruiken met het argument -um, -cs, -cssof -km argument
-
-pvoorvoegsel
-
Gebruik dit argument om het standaardvoorvoegsel te overschrijven dat door de compiler wordt gebruikt voor de macronamen en methodenamen voor logboekregistratie. Het standaardvoorvoegsel is EventWrite. De tekenreeks is hoofdlettergevoelig.
U kunt dit argument gebruiken met het argument -um, -cs, -cssof -km argument.
-
-Pvoorvoegsel
-
Gebruik dit argument om tekens te verwijderen uit het begin van de symbolische naam die u voor de gebeurtenis hebt opgegeven. De vergelijking is niet hoofdlettergevoelig. De compiler gebruikt de symbolische naam om de macronamen en methodenamen voor logboekregistratie te vormen.
De standaardnaam voor een macro voor logboekregistratie is EventWriteSymbolName, waarbij SymbolName de symbolische naam is die u voor de gebeurtenis hebt opgegeven. Als u bijvoorbeeld het symboolkenmerk van de gebeurtenis instelt op PrinterConnection, is de macronaam EventWritePrinterConnection. Als u printer uit de naam wilt verwijderen, gebruikt u -PPrinter, wat resulteert in EventWriteConnection.
U kunt dit argument gebruiken met het argument -um, -cs, -cssof -km argument.
-
-
-
Gebruik dit argument om ervoor te zorgen dat de compiler de code voor de gebruikersmodus genereert die u zou gebruiken om de gebeurtenissen te registreren die in uw manifest zijn gedefinieerd.
Als u de compiler logboekregistratiecode wilt laten genereren, moet u de -um, -cs, -cssof -km argument opgeven; deze argumenten sluiten elkaar wederzijds uit.
Als u wilt opgeven waar u de .h-, .cs- en .mof-bestanden wilt plaatsen die door de compiler worden gegenereerd, gebruikt u het argument -h. Als u het argument -h niet opgeeft, worden de bestanden in de huidige map geplaatst.
Als u wilt opgeven waar het RC-bestand en de binaire bestanden (die de metagegevensbronnen bevatten) die de compiler genereert, gebruikt u het argument -r. Als u het argument -r niet opgeeft, worden de bestanden in de huidige map geplaatst.
De compiler gebruikt de basisnaam van het invoerbestand als de basisnaam van de bestanden die worden gegenereerd. Als u een basisnaam wilt opgeven, gebruikt u het argument -z.
Argumenten die specifiek zijn voor berichttekstbestanden
-
-a
-
Gebruik dit argument om op te geven dat de bestandsnaam invoerbestand inhoud bevat op de standaard Windows ANSI-codepagina (CP_ACP). Dit is de standaardwaarde. Gebruik -u voor Unicode. Als het invoerbestand een BOM bevat, wordt dit argument genegeerd.
-
-A-
-
VEROUDERD. Gebruik dit argument om op te geven dat de berichten in het uitvoerbestand .bin ANSI moeten zijn.
-
-b
-
Gebruik dit argument als u wilt dat de compiler de basisnaam van de bestandsnaam van de invoerbestand gebruikt voor de .bin bestandsnamen. De standaardwaarde is het gebruik van 'MSG'.
-
-d-
-
Gebruik dit argument om decimale waarden te gebruiken voor de constanten Ernst en Faciliteit in het headerbestand in plaats van hexadecimale waarden.
-
-n
-
Gebruik dit argument om op te geven dat berichten direct na de berichttekst worden beëindigd. De standaardinstelling is om de berichttekst te beëindigen met een CR/LF.
-
-o
-
Gebruik dit argument om ervoor te zorgen dat de compiler een OLE2-headerbestand genereert met behulp van HRESULT definities in plaats van statuscodes. Het gebruik van statuscodes is de standaardinstelling.
-
-u-
-
Gebruik dit argument om op te geven dat de bestandsnaam invoerbestand UTF-16LE-inhoud bevat. De standaardwaarde is ANSI-inhoud. Als het invoerbestand een BOM bevat, wordt dit argument genegeerd.
-
-U-
-
Gebruik dit argument om op te geven dat de berichten in de uitvoer .bin-bestand Unicode moeten zijn. Dit is de standaardwaarde.
-
-v-
-
Gebruik dit argument om uitgebreide uitvoer te genereren.
-
-xpad
-
Gebruik dit argument om de map op te geven waarin u wilt dat de compiler het .dbg C-bestand opneemt. Het .dbg-bestand wijst bericht-id's toe aan hun symbolische namen.
Opmerkingen
De argumenten -A en -mof worden afgeschaft en worden in de toekomst verwijderd.
De compiler accepteert als invoer een manifestbestand (.man) of een berichttekstbestand (.mc) en genereert de volgende bestanden:
bestandsnaam.h
Een C/C++-headerbestand met de gebeurtenisdescriptors, provider-GUID en symboolnamen waarnaar u in uw toepassing verwijst.
bestandsnaamTEMP.bin
Een binair resourcebestand dat de metagegevens van de provider en gebeurtenis bevat. Dit is de sjabloonresource, die wordt opgegeven door het ACHTERvoegsel TEMP van de basisnaam van het bestand.
Msg00001.bin
Een binair resourcebestand voor elke taal die u opgeeft (bijvoorbeeld als uw manifest berichttekenreeksen bevat in en-US en fr-FR, genereert de compiler Msg00001.bin en Msg00002.bin).
bestandsnaam.rc
Een resourcecompilatorscript dat de instructies bevat om elk .bin-bestand als een resource op te nemen.
Voor argumenten die een pad nemen, kan het pad een absoluut, relatief of UNC-pad zijn en kan het omgevingsvariabelen bevatten.
Vóór MC-versie 1.12.7051: De compiler staat geen relatieve paden of omgevingsvariabelen toe.
Voorbeelden
In het volgende voorbeeld wordt een manifest gecompileerd met behulp van de standaardinstellingen van de compiler.
mc spooler.man
In het volgende voorbeeld wordt het manifest gecompileerd en worden de header- en resourcebestanden in de opgegeven mappen opgeslagen.
mc -h <pathgoeshere> -r <pathgoeshere> spooler.man
Eisen
Eis | Waarde |
---|---|
Minimaal ondersteunde client | Windows 2000 Professional [alleen desktop-apps] |
Minimaal ondersteunde server | Windows 2000 Server [alleen desktop-apps] |