Compilatore di messaggi (MC.exe)
Il compilatore di messaggi (mc.exe) viene usato per compilare i manifesti di strumentazione e i file di testo dei messaggi. Il compilatore genera i file di risorse dei messaggi 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>]
Nota
Il compilatore di messaggi viene fornito con Windows SDK e si trova nella cartella \Bin.
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 bit del cliente (bit 28) del compilatore in tutti gli ID messaggio. Per informazioni sul bit del cliente, vedere winerror.h.
-
-cpcodifica
-
Utilizzare questo argomento per specificare la codifica dei caratteri utilizzata 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 dei byte.
-
-e estensione
-
Utilizzare questo argomento per specificare l'estensione da utilizzare per il file di intestazione. È possibile specificare fino a un'estensione di tre caratteri, senza includere il punto. Il valore predefinito è .h.
-
-hpercorso
-
Utilizzare questo argomento per specificare la cartella in cui si desidera che il compilatore inserisca il file di intestazione generato. Il valore predefinito è la directory corrente.
-
-mlunghezza
-
Utilizzare questo argomento per fare in modo che il compilatore generi un avviso se il messaggio supera lunghezza caratteri.
-
-rpercorso
-
Usare questo argomento per specificare la cartella in cui si vuole che il compilatore inserisca lo script del compilatore di risorse generato (file RC) e i file di .bin generati (risorse binarie) inclusi nello script del compilatore di risorse. Il valore predefinito è la directory corrente.
-
-z nome
-
Utilizzare questo argomento per eseguire l'override del nome di base predefinito utilizzato dal compilatore per i file generati. L'impostazione predefinita consiste nell'usare il nome di base del nome file file di input.
-
nome file
-
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 dei file manifesto
-
-spercorso
-
Usare questo argomento per creare una linea di base della strumentazione. Specificare il percorso della cartella che contiene i file manifesto di base. Per le versioni successive, si userà quindi l'argomento -t per controllare il nuovo manifesto rispetto alla baseline per verificare la presenza di problemi di compatibilità.
precedente a MC versione 1.12.7051: Non disponibile
-
-tpercorso
-
Usare questo argomento quando si crea una nuova versione del manifesto e si vuole verificarne la compatibilità con la baseline creata usando l'argomento
-s. Il percorso deve puntare alla cartella che contiene . File BIN creati dall'operazione di base (vedere l'opzione -s). precedente a MC versione 1.12.7051: Non disponibile
-
-wpercorso
-
Il compilatore ignora questo argomento e convalida automaticamente il manifesto.
Precedente a MC versione 1.12.7051: Utilizzare questo argomento per specificare la cartella contenente il file dello schema Eventman.xsd, usato dal compilatore per convalidare il manifesto. Windows SDK include il file di schema Eventman.xsd nella cartella \Include. Se non si specifica questo argomento, il compilatore non convalida il manifesto.
-
-Wpercorso
-
Il compilatore ignora questo argomento.
Precedente a MC versione 1.12.7051: Utilizzare questo argomento per specificare la cartella contenente il file Winmeta.xml. Il file Winmeta.xml contiene i tipi di input e output riconosciuti, nonché i canali, i livelli e i codici operativo predefiniti. Windows SDK include il file Winmeta.xml nella cartella \Include.
Argomenti specifici per la generazione di 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 al compilatore di generare 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 MC 1.12.7051 fornita con la versione windows 7 di Window SDK.
-
-co
-
Usare questo argomento per fare in modo che il servizio di registrazione chiami 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 fino a quando la funzione non viene restituita.
È possibile usare questo argomento con l'argomento -km o -um.
-
-csspazio dei nomi
-
Usare questo argomento per fare in modo che il compilatore generi una classe C# basata sulla classe .NET 3.5 EventProvider.
-
-cssspazio dei nomi
-
Usare questo argomento per fare in modo che il compilatore generi una classe C# statica basata sulla classe .NET 3.5
EventProvider. -
-km
-
Usare questo argomento per fare in modo che il compilatore generi il codice in modalità kernel da usare per registrare gli eventi definiti nel manifesto.
-
-mof
-
DEPRECATO. Utilizzare questo argomento per fare in modo che il compilatore generi il codice che è possibile usare per registrare gli eventi nei computer prima di 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 Managed Object Format.
Per usare questa opzione, è necessario rispettare le restrizioni seguenti:
- Ogni definizione di evento deve includere gli attributi task e opcode
- Ogni attività deve includere l'attributo eventGuid
- I dati del modello a cui fa riferimento l'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 a lunghezza fissa
- I tipi di dati stringa non possono specificare l'attributo length
È necessario usare questo argomento con l'argomento -um, -cs, -csso -km
-
-pprefisso
-
Utilizzare questo argomento per eseguire l'override del prefisso predefinito utilizzato dal compilatore per i nomi delle macro di registrazione e dei metodi. Il prefisso predefinito è "EventWrite". La stringa fa distinzione tra maiuscole e minuscole.
È possibile usare questo argomento con l'argomento -um, -cs, -csso -km.
-
-Pprefisso
-
Utilizzare 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 è EventWriteSymbolName, dove SymbolName è 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 Printer dal nome, usare -PPrinter, che restituisce EventWriteConnection.
È possibile usare questo argomento con l'argomento -um, -cs, -csso -km.
-
-um
-
Usare questo argomento per fare in modo che il compilatore generi il codice in modalità utente da usare per registrare gli eventi definiti nel manifesto.
Per fare in modo che il codice di registrazione venga generato dal compilatore, è necessario specificare l'argomento -um -um , -csso -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 dei file di testo dei messaggi
-
-a
-
Utilizzare questo argomento per specificare che il nome file file di input contiene contenuto nella tabella codici ANSI di Windows predefinita del sistema (CP_ACP). Si tratta dell'impostazione predefinita. Usare -u per Unicode. Se il file di input contiene una distinta base, questo argomento verrà ignorato.
-
-A
-
DEPRECATO. Utilizzare questo argomento per specificare che i messaggi nell'output .bin file devono essere ANSI.
-
-b
-
Utilizzare questo argomento per fare in modo che il compilatore usi il nome di base del nome file file di input per i nomi di file .bin. L'impostazione predefinita consiste nell'usare "MSG".
-
-d
-
Utilizzare questo argomento per usare i valori decimali per le costanti Gravità e Struttura nel file di intestazione anziché valori esadecimali.
-
-n
-
Utilizzare questo argomento per specificare che i messaggi terminano immediatamente dopo il corpo del messaggio. L'impostazione predefinita consiste nel terminare il corpo del messaggio con cr/LF.
-
-o
-
Utilizzare questo argomento per fare in modo che il compilatore generi un file di intestazione OLE2 usando definizioni di HRESULT anziché codici di stato. L'uso dei codici di stato è l'impostazione predefinita.
-
-u
-
Utilizzare questo argomento per specificare che il nome file file di input contiene contenuto UTF-16LE. Il valore predefinito è il contenuto ANSI. Se il file di input contiene una distinta base, questo argomento verrà ignorato.
-
-U
-
Utilizzare questo argomento per specificare che i messaggi nell'output .bin file devono essere Unicode. Si tratta dell'impostazione predefinita.
-
-v
-
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 con estensione dbg C. Il file con estensione dbg esegue il mapping degli ID dei messaggi ai relativi nomi simbolici.
Osservazioni
Gli argomenti -A e -mof sono deprecati e verranno rimossi in futuro.
Il compilatore accetta come input un file manifesto (man) o un file di testo del messaggio (con estensione mc) e genera i file seguenti:
nome file.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.
nome fileTEMP.bin
File di risorse binario che contiene il provider e i metadati dell'evento. Si tratta della risorsa modello, che è indicata dal suffisso TEMP del nome di base del file.
Msg00001.bin
Un file di risorse binario per ogni linguaggio specificato, ad esempio se il manifesto contiene stringhe di messaggio in en-US e fr-FR, il compilatore genererà Msg00001.bin e Msg00002.bin.
nome filerc
Script del compilatore di risorse che contiene le istruzioni da includere ogni .bin file 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.
Precedente a MC versione 1.12.7051: Il compilatore non consente percorsi relativi o variabili di ambiente.
Esempi
Nell'esempio seguente viene compilato un manifesto usando le impostazioni predefinite del compilatore.
mc spooler.man
Nell'esempio seguente viene compilato il manifesto e i file di intestazione e risorse vengono inseriti nelle cartelle specificate.
mc -h <pathgoeshere> -r <pathgoeshere> spooler.man
Fabbisogno
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |