Compilatore di messaggi (MC.exe)

Usato per compilare i manifesti di strumentazione e i file di testo dei messaggi. Il compilatore genera i file di risorse del messaggio a cui l'applicazione collega.

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

Argomenti comuni sia ai file di testo dei messaggi che ai file manifesto

-?

Visualizza le informazioni sull'utilizzo per il compilatore di messaggi.

-C

Usare questo argomento per impostare il compilatore bit del cliente (bit 28) in tutti gli ID messaggio. Per informazioni sul bit del cliente, vedere winerror.h.

-cpcodifica

Usare questo argomento per specificare la codifica dei caratteri usata per tutti i file di testo generati. I nomi validi includono "ansi" (impostazione predefinita), "utf-8" e "utf-16". Le codifiche Unicode aggiungeranno un contrassegno di ordine byte.

-eextension

Usare questo argomento per specificare l'estensione da usare per il file di intestazione. È possibile specificare fino a un'estensione di tre caratteri, non incluso il punto. Il valore predefinito è .h.

-hpercorso

Usare questo argomento per specificare la cartella in cui si vuole che il compilatore inserisca il file di intestazione generato. Il valore predefinito è la directory corrente.

-mlunghezza

Usare questo argomento per generare un avviso se il messaggio supera i caratteri di lunghezza .

-rpath

Usare questo argomento per specificare la cartella in cui si vuole che il compilatore inserisca lo script del compilatore di risorse generato (file con estensione rc) e i file con estensione bin generati (risorse binarie) inclusi nello script del compilatore di risorse. Il valore predefinito è la directory corrente.

-zname

Usare questo argomento per eseguire l'override del nome di base predefinito usato dal compilatore per i file generati. Il valore predefinito consiste nell'usare il nome di base del file di input del nome file .

Filename

File manifesto di strumentazione o file di testo del messaggio. Il file deve esistere nella directory corrente. È possibile specificare un file manifesto, un file di testo del messaggio o entrambi. Il nome del file deve includere l'estensione. La convenzione consiste nell'usare un'estensione man per i file manifesto e un'estensione mc per i file di testo dei messaggi.

Argomenti specifici per i file manifesto

-spercorso

Usare questo argomento per creare una baseline della strumentazione. Specificare il percorso della cartella contenente i file manifesto di base. Per le versioni successive, si userebbe quindi l'argomento -t per controllare il nuovo manifesto rispetto alla baseline per i problemi di compatibilità.

Prima di MC versione 1.12.7051: Non disponibile

-tpercorso

Usare questo argomento quando si crea una nuova versione del manifesto e si vuole verificare la compatibilità dell'applicazione rispetto alla baseline creata usando l'argomento -s . Il percorso deve puntare alla cartella contenente l'oggetto . File BIN creati dall'operazione di base (vedere l'opzione -s ).

Prima di MC versione 1.12.7051: Non disponibile

-wpath

Il compilatore ignora questo argomento e convalida automaticamente il manifesto.

Prima di MC versione 1.12.7051: Usare questo argomento per specificare la cartella contenente il file dello schema Eventman.xsd, che il compilatore usa per convalidare il manifesto. Windows SDK include il file dello schema Eventman.xsd nella cartella \Include. Se non si specifica questo argomento, il compilatore non convalida il manifesto.

-Wpercorso

Il compilatore ignora questo argomento.

Prima di MC versione 1.12.7051: Usare questo argomento per specificare la cartella contenente il file Winmeta.xml. Il file Winmeta.xml contiene i tipi di input e di output riconosciuti, nonché i canali, i livelli e i codici opcode predefiniti. Windows SDK include il file di Winmeta.xml nella cartella \Include.

Argomenti specifici per generare codice che il provider userebbe per registrare gli eventi

È possibile usare gli argomenti del compilatore seguenti per generare codice in modalità kernel o in modalità utente che è possibile usare per registrare gli eventi. È anche possibile richiedere che il compilatore generi codice per supportare la scrittura di eventi nei computer prima di Windows Vista. Se l'applicazione è scritta in C#, il compilatore può generare una classe C# che è possibile usare per registrare gli eventi. Questi argomenti sono disponibili a partire dalla versione 1.12.7051 che viene fornita con la versione windows 7 di Window SDK.

-Co

Usare questo argomento per avere il servizio di registrazione chiamare la funzione definita dall'utente per ogni evento registrato (la funzione viene chiamata dopo la registrazione dell'evento). La funzione definita dall'utente deve avere la firma seguente.

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

È anche necessario includere la direttiva seguente nel codice.

#define MCGEN_CALLOUT pFnUserFunction

È consigliabile mantenere l'implementazione il più breve possibile per evitare problemi di registrazione; il servizio non registra più gli eventi finché la funzione non viene restituita.

È possibile usare questo argomento con l'argomento -km o -um .

-csspazio dei nomi

Usare questo argomento per generare una classe C# basata sulla classe EventProvider .NET 3.5.

Spazio dei nomi-css

Usare questo argomento per generare una classe C# statica basata sulla classe EventProvider .NET 3.5.

-km

Usare questo argomento per generare il codice in modalità kernel che si userà per registrare gli eventi definiti nel manifesto.

-Mof

DEPRECATO. Usare questo argomento per generare il codice del compilatore che è possibile usare per registrare gli eventi nei computer precedenti a Windows Vista. Questa opzione crea anche un file MOF che contiene le classi MOF per ogni evento definito nel manifesto. Per registrare le classi nel file MOF in modo che i consumer possano decodificare gli eventi, usare il compilatore MOF (Mofcomp.exe). Per informazioni dettagliate sull'uso del compilatore MOF, vedere Formato oggetto gestito.

Per usare questa opzione, è necessario rispettare le restrizioni seguenti:

  • Ogni definizione di evento deve includere gli attributi attività e opcode
  • Ogni attività deve includere l'attributo eventGuid
  • I dati del modello che i riferimenti all'evento non possono contenere:
    • Elementi di dati che specificano i tipi di input win:Binary o win:SYSTEMTIME
    • Strutture
    • Matrici di dimensioni variabili; tuttavia, è possibile specificare matrici di lunghezza fissa
    • I tipi di dati stringa non possono specificare l'attributo length

È necessario usare questo argomento con l'argomento -um, -cs, -css o -km

-pprefisso

Usare questo argomento per eseguire l'override del prefisso predefinito usato dal compilatore per i nomi e i nomi dei metodi della macro di registrazione. Il prefisso predefinito è "EventWrite". Per la stringa viene fatta distinzione tra maiuscole e minuscole.

È possibile usare questo argomento con l'argomento -um, -cs, -css o -km .

-Pprefisso

Usare questo argomento per rimuovere i caratteri dall'inizio del nome simbolico specificato per l'evento. Il confronto non fa distinzione tra maiuscole e minuscole. Il compilatore usa il nome simbolico per formare i nomi delle macro di registrazione e i nomi dei metodi.

Il nome predefinito per una macro di registrazione è EventWrite SymbolName, doveSymbolName è il nome simbolico specificato per l'evento. Ad esempio, se si imposta l'attributo simbolo dell'evento su PrinterConnection, il nome della macro sarà EventWritePrinterConnection. Per rimuovere la stampante dal nome, usare -P Printer, che genera EventWriteConnection.

È possibile usare questo argomento con l'argomento -um, -cs, -css o -km .

-um

Usare questo argomento per generare il codice in modalità utente che si userà per registrare gli eventi definiti nel manifesto.

Per avere il codice di registrazione generato dal compilatore, è necessario specificare l'argomento -um, -cs, -css o -km ; questi argomenti si escludono a vicenda.

Per specificare dove inserire i file con estensione h, .cs e mof generati dal compilatore, usare l'argomento -h . Se non si specifica l'argomento -h , i file vengono inseriti nella cartella corrente.

Per specificare dove inserire il file rc e i file binari (che contengono le risorse di metadati) generati dal compilatore, usare l'argomento -r . Se non si specifica l'argomento -r , i file vengono inseriti nella cartella corrente.

Il compilatore usa il nome di base del file di input come nome di base dei file generati. Per specificare un nome di base, usare l'argomento -z .

Argomenti specifici per i file di testo dei messaggi

-Un

Usare questo argomento per specificare che il file di input del nome file contiene contenuto nella tabella codici windows ANSI predefinita del sistema (CP_ACP). Questo è il valore predefinito. Usare -u per Unicode. Se il file di input contiene un BOM, questo argomento verrà ignorato.

-Un

DEPRECATO. Usare questo argomento per specificare che i messaggi nel file con estensione bin di output devono essere ANSI.

-B

Usare questo argomento per avere il compilatore usare il nome di base del file di input del nome file per i nomi dei file bin. Il valore predefinito consiste nell'usare "MSG".

-D

Usare questo argomento per usare i valori decimali per le costanti Gravità e Facility nel file di intestazione anziché i valori esadecimali.

-N

Usare questo argomento per specificare che i messaggi terminano immediatamente dopo il corpo del messaggio. Il valore predefinito è quello di terminare il corpo del messaggio con un CR/LF.

-o

Usare questo argomento per generare un file di intestazione OLE2 usando definizioni HRESULT anziché codici di stato. L'uso dei codici di stato è l'impostazione predefinita.

-U

Usare questo argomento per specificare che il file di input del nome file contiene contenuto UTF-16LE. Il valore predefinito è il contenuto ANSI. Se il file di input contiene un BOM, questo argomento verrà ignorato.

-U

Usare questo argomento per specificare che i messaggi nel file con estensione bin di output devono essere Unicode. Questo è il valore predefinito.

-Presso

Usare questo argomento per generare un output dettagliato.

-xpercorso

Usare questo argomento per specificare la cartella in cui si vuole che il compilatore inserisca il file di inclusione di .dbg C. Il file con estensione dbg esegue il mapping degli ID messaggio ai relativi nomi simbolici.

Commenti

Gli argomenti -A e -mof sono deprecati e verranno rimossi in futuro.

Il compilatore accetta come file manifesto (con estensione man) o un file di testo del messaggio (.mc) e genera i file seguenti:

  • filename.h

    File di intestazione C/C++ che contiene i descrittori di eventi, il GUID del provider e i nomi dei simboli a cui si fa riferimento nell'applicazione.

  • Filename TEMP.bin

    File di risorse binario che contiene il provider e i metadati degli eventi. Si tratta della risorsa modello, che è significata dal suffisso TEMP del nome di base del file.

  • Msg00001.bin

    Un file di risorse binario per ogni lingua specificata, ad esempio se il manifesto contiene stringhe di messaggi in en-US e fr-FR, il compilatore genererà Msg00001.bin e Msg00002.bin.

  • filename.rc

    Script del compilatore di risorse che contiene le istruzioni da includere ogni file bin come risorsa.

Per gli argomenti che accettano un percorso, il percorso può essere un percorso assoluto, relativo o UNC e può contenere variabili di ambiente.

Prima di MC versione 1.12.7051: Il compilatore non consente percorsi relativi o variabili di ambiente.

Windows SDK include il compilatore (mc.exe) nella cartella \Bin.

Esempio

Nell'esempio seguente viene compilato un manifesto usando le impostazioni predefinite del compilatore.

mc spooler.man

Nell'esempio seguente viene compilato il manifesto e vengono inseriti i file di intestazione e risorse nelle cartelle specificate.

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

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]