Compilatore di messaggi (MC.exe)

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

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 a entrambi i file di testo dei messaggi e i file manifesto

-?

Visualizza le informazioni sull'utilizzo del compilatore di messaggi.

-c

Usare questo argomento per fare in modo che il compilatore imposti il bit Customer (bit 28) in tutti gli ID messaggio. Per informazioni sul bit del cliente, vedere Winerror. h.

- codifica CP

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". Con le codifiche Unicode viene aggiunto un byte order mark.

estensione -e

Utilizzare questo argomento per specificare l'estensione da utilizzare per il file di intestazione. È possibile specificare fino a un'estensione di tre caratteri, escluso il punto. Il valore predefinito è. h.

-h percorso

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.

lunghezza -m

Usare questo argomento per fare in modo che il compilatore generi un avviso se il messaggio supera i caratteri di lunghezza .

-r percorso

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. 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. Per impostazione predefinita, viene utilizzato il nome di base del file di input del nome file.

filename

Il file manifesto di strumentazione o il file di testo del messaggio. Il file deve essere presente 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 prevede l'uso di un'estensione. Man per i file manifesto e di un'estensione MC per i file di testo del messaggio.

Argomenti specifici dei file manifesto

-s percorso

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 verificare il nuovo manifesto rispetto alla linea di base per i problemi di compatibilità.

Prima della versione MC 1.12.7051: Non disponibile

-t percorso

Usare questo argomento quando si crea una nuova versione del manifesto e si vuole controllare la compatibilità delle applicazioni con la linea di base creata con l'argomento -s . Il percorso deve puntare alla cartella che contiene. File BIN creati dall'operazione di base (vedere l'opzione -s ).

Prima della versione MC 1.12.7051: Non disponibile

-w percorso

Il compilatore ignora questo argomento e convalida automaticamente il manifesto.

Prima della versione MC 1.12.7051: Utilizzare questo argomento per specificare la cartella che contiene il file di schema EventName. xsd, utilizzato dal compilatore per convalidare il manifesto. Il Windows SDK include il file di schema EventName. xsd nella \ cartella di inclusione. Se non si specifica questo argomento, il compilatore non convalida il manifesto.

-W percorso

Il compilatore ignora questo argomento.

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

Argomenti specifici della generazione di codice che il provider utilizzerebbe per registrare gli eventi

È possibile utilizzare gli argomenti del compilatore seguenti per generare codice in modalità kernel o utente che è possibile utilizzare per registrare gli eventi. È inoltre possibile richiedere al compilatore di generare codice per supportare la scrittura di eventi nei computer precedenti a Windows Vista. Se l'applicazione è scritta in C#, il compilatore può generare una classe C# che può essere usata 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 che l'evento è stato registrato). 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
    );

È inoltre necessario includere la direttiva seguente nel codice.

#define MCGEN_CALLOUT pFnUserFunction

Per evitare problemi di registrazione, è consigliabile tenere l'implementazione più breve possibile. il servizio non registrerà più gli eventi fino a quando la funzione non restituisce.

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

-cs ( spazio dei nomi )

Usare questo argomento per fare in modo che il compilatore generi una classe C# basata sulla classe EventProvider di .NET 3,5.

- spazio dei nomi CSS

Usare questo argomento per fare in modo che il compilatore generi una classe C# statica basata sulla classe EventProvider di .NET 3,5.

-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 codice che è possibile utilizzare 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 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 utilizzare questo argomento con l'argomento -um, -CS, -CSS o -km

prefisso -p

Utilizzare questo argomento per sostituire il prefisso predefinito utilizzato dal compilatore per i nomi delle macro di registrazione e i nomi dei metodi. Il prefisso predefinito è "EventWrite". Per la stringa viene fatta distinzione tra maiuscole e minuscole.

È possibile utilizzare questo argomento con l'argomento -um, -CS, -CSS o -km .

Prefisso -P

Usare questo argomento per rimuovere i caratteri dall'inizio del nome simbolico specificato per l'evento. Il confronto viene eseguito senza 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 di una macro di registrazione è EventWrite symbolName, dove symbolName è il nome simbolico specificato per l'evento. Se, ad esempio, si imposta l'attributo symbol dell'evento su PrinterConnection, il nome della macro sarà EventWritePrinterConnection. Per rimuovere la stampante dal nome, usare -P Printer, che restituisce EventWriteConnection.

È possibile utilizzare questo argomento con l'argomento -um, -CS, -CSS o -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 compilatore generi il codice di registrazione, è 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 (contenenti 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 del messaggio

-a

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

-A

Deprecato. Utilizzare questo argomento per specificare che i messaggi nel file. bin di output devono essere ANSI.

-b

Usare questo argomento per fare in modo che il compilatore usi il nome di base del file di input del nome file per i nomi di file con estensione bin. Per impostazione predefinita, viene usato "MSG".

-d

Utilizzare questo argomento per utilizzare valori decimali per le costanti di gravità e di funzione nel file di intestazione anziché valori esadecimali.

-n

Utilizzare questo argomento per specificare che i messaggi terminano immediatamente dopo il corpo del messaggio. Per impostazione predefinita, il corpo del messaggio viene terminato con CR/LF.

-o

Usare questo argomento per fare in modo che il compilatore generi un file di intestazione OLE2 usando le definizioni HRESULT anziché i codici di stato. L'utilizzo dei codici di stato è il valore predefinito.

-u

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

-U

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

-v

Usare questo argomento per generare l'output dettagliato.

-x percorso

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

Commenti

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 (. MC) e genera i file seguenti:

  • nomefile. h

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

  • nome file TEMP. bin

    Un file di risorse binario che contiene i metadati dell'evento e del provider. Si tratta della risorsa modello, che è contraddistinta dal suffisso temporaneo 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 messaggio in en-US e fr-FR, il compilatore genererà Msg00001. bin e Msg00002. bin).

  • nomefile. RC

    Uno script del compilatore di risorse che contiene le istruzioni per includere ogni file con estensione 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 della versione MC 1.12.7051: Il compilatore non consente percorsi relativi o variabili di ambiente.

Il 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 posizionati i file di intestazione e di 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]