Compilador de Mensagens (MC.exe)
O Compilador de Mensagens (mc.exe) é usado para compilar manifestos de instrumentação e arquivos de texto de mensagem. O compilador gera os arquivos de recurso de mensagem aos quais o aplicativo é vinculado.
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
O Compilador de Mensagens é fornecido com o SDK do Windows e pode ser encontrado na pasta \Bin.
Argumentos comuns a arquivos de texto de mensagem e arquivos de manifesto
-
- ?
-
Exibe as informações de uso do Compilador de Mensagens.
-
-c
-
Use esse argumento para que o compilador defina o bit do cliente (bit 28) em todas as IDs de mensagem. Para obter informações sobre o bit do cliente, consulte winerror.h.
-
-cpcodificação
-
Use esse argumento para especificar a codificação de caracteres usada para todos os arquivos de texto gerados. Os nomes válidos incluem "ansi" (padrão), "utf-8" e "utf-16". As codificações Unicode adicionarão uma marca de pedido de byte.
-
de extensão
-e -
Use esse argumento para especificar a extensão a ser usada para o arquivo de cabeçalho. Você pode especificar até uma extensão de três caracteres, sem incluir o período. O padrão é .h.
-
-hcaminho
-
Use esse argumento para especificar a pasta na qual você deseja que o compilador coloque o arquivo de cabeçalho gerado. O padrão é o diretório atual.
-
-mcomprimento
-
Use esse argumento para que o compilador gere um aviso se a mensagem exceder comprimento caracteres.
-
-rcaminho
-
Use esse argumento para especificar a pasta na qual você deseja que o compilador coloque o script do compilador de recursos gerado (arquivo.rc) e os arquivos de .bin gerados (recursos binários) que o script do compilador de recursos inclui. O padrão é o diretório atual.
-
-znome
-
Use esse argumento para substituir o nome base padrão que o compilador usa para os arquivos gerados. O padrão é usar o nome base do arquivo de entrada nome de arquivo.
-
de nome de arquivo
-
O arquivo de manifesto de instrumentação ou o arquivo de texto da mensagem. O arquivo deve existir no diretório atual. Você pode especificar um arquivo de manifesto, um arquivo de texto de mensagem ou ambos. O nome do arquivo deve incluir a extensão. A convenção é usar uma extensão .man para arquivos de manifesto e uma extensão .mc para arquivos de texto de mensagem.
Argumentos específicos para arquivos de manifesto
-
de
de -
Use esse argumento para criar uma linha de base de sua instrumentação. Especifique o caminho para a pasta que contém seus arquivos de manifesto de linha de base. Para versões subsequentes, você usaria o argumento -t para verificar o novo manifesto na linha de base para problemas de compatibilidade.
Antes do MC versão 1.12.7051: Não disponível
-
-tcaminho
-
Use esse argumento ao criar uma nova versão do manifesto e desejar verificar se há compatibilidade do aplicativo com relação à linha de base que você criou usando o argumento
-s. O caminho deve apontar para a pasta que contém o . Arquivos BIN que a operação de linha de base criou (consulte a opção do). Antes do MC versão 1.12.7051: Não disponível
-
-wcaminho
-
O compilador ignora esse argumento e valida automaticamente o manifesto.
Antes do MC versão 1.12.7051: Use esse argumento para especificar a pasta que contém o arquivo de esquema Eventman.xsd, que o compilador usa para validar seu manifesto. O SDK do Windows inclui o arquivo de esquema Eventman.xsd na pasta \Include. Se você não especificar esse argumento, o compilador não validará seu manifesto.
-
-Wcaminho
-
O compilador ignora esse argumento.
Antes do MC versão 1.12.7051: Use esse argumento para especificar a pasta que contém o arquivo Winmeta.xml. O arquivo Winmeta.xml contém os tipos de entrada e saída reconhecidos, bem como os canais, níveis e opcodes predefinidos. O SDK do Windows inclui o arquivo Winmeta.xml na pasta \Include.
Argumentos específicos para gerar código que seu provedor usaria para registrar eventos em log
Você pode usar os seguintes argumentos do compilador para gerar o código do modo kernel ou do modo de usuário que você pode usar para registrar eventos em log. Você também pode solicitar que o compilador gere código para dar suporte à gravação de eventos em computadores antes do Windows Vista. Se o aplicativo for gravado em C#, o compilador poderá gerar uma classe C# que você pode usar para registrar eventos em log. Esses argumentos estão disponíveis a partir da versão MC 1.12.7051 que é fornecida com a versão do Windows 7 do SDK da Janela.
-
-co
-
Use esse argumento para que o serviço de registro em log chame sua função definida pelo usuário para cada evento que você registra (a função é chamada depois que o evento é registrado). Sua função definida pelo usuário deve ter a assinatura a seguir.
VOID pFnUserFunction( __in REGHANDLE RegHandle, __in PCEVENT_DESCRIPTOR Descriptor, __in ULONG EventDataCount, __in_ecount(EventDataCount) PEVENT_DATA_DESCRIPTOR EventData );
Você também deve incluir a seguinte diretiva em seu código.
#define MCGEN_CALLOUT pFnUserFunction
Você deve manter sua implementação o mais breve possível para evitar problemas de registro em log; o serviço não registrará mais seus eventos até que a função retorne.
Você pode usar esse argumento com o argumento -km ou -um.
-
-csnamespace
-
Use esse argumento para que o compilador gere uma classe C# com base na classe EventProvider do .NET 3.5
. -
-cssnamespace
-
Use esse argumento para que o compilador gere uma classe C# estática com base na classe eventProvider do .NET 3.5
. -
-km
-
Use esse argumento para que o compilador gere o código do modo kernel que você usaria para registrar os eventos definidos em seu manifesto.
-
-mof
-
DEPRECADO. Use esse argumento para que o compilador gere código que você pode usar para registrar eventos em computadores antes do Windows Vista. Essa opção também cria um arquivo MOF que contém as classes MOF para cada evento definido no manifesto. Para registrar as classes no arquivo MOF para que os consumidores possam decodificar os eventos, use o compilador MOF (Mofcomp.exe). Para obter detalhes sobre como usar o compilador MOF, consulte Managed Object Format.
Para usar essa opção, você deve seguir as seguintes restrições:
- Cada definição de evento deve incluir os atributos de tarefa e opcode
- Cada tarefa deve incluir o atributo eventGuid
- Os dados de modelo que as referências de evento não podem conter:
- Itens de dados que especificam os tipos de entrada win:Binary ou win:SYSTEMTIME
- Estruturas
- Matrizes de tamanho variável; no entanto, você pode especificar matrizes de comprimento fixo
- Os tipos de dados de cadeia de caracteres não podem especificar o atributo de comprimento
Você deve usar esse argumento com o argumento -um, -cs, -cssou -km
-
-pprefixo
-
Use esse argumento para substituir o prefixo padrão que o compilador usa para registrar nomes de macro e nomes de método. O prefixo padrão é "EventWrite". A cadeia de caracteres diferencia maiúsculas de minúsculas.
Você pode usar esse argumento com o argumento -um, -cs, -cssou -km.
-
-Pprefixo
-
Use esse argumento para remover caracteres do início do nome simbólico especificado para o evento. A comparação não diferencia maiúsculas de minúsculas. O compilador usa o nome simbólico para formar os nomes de macro de log e os nomes de método.
O nome padrão de uma macro de log é EventWriteSymbolName, em que SymbolName é o nome simbólico especificado para o evento. Por exemplo, se você definir o atributo de símbolo do evento como PrinterConnection, o nome da macro será EventWritePrinterConnection. Para remover Impressora do nome, use -PPrinter, o que resulta em EventWriteConnection.
Você pode usar esse argumento com o argumento -um, -cs, -cssou -km.
-
-um
-
Use esse argumento para que o compilador gere o código do modo de usuário que você usaria para registrar em log os eventos definidos em seu manifesto.
Para que o compilador gere código de registro em log, especifique o argumento -um, -cs, -cssou -km; esses argumentos são mutuamente exclusivos.
Para especificar onde colocar os arquivos .h, .cs e .mof gerados pelo compilador, use o argumento -h. Se você não especificar o argumento -h, os arquivos serão colocados na pasta atual.
Para especificar onde colocar o arquivo .rc e os arquivos binários (que contêm os recursos de metadados) gerados pelo compilador, use o argumento -r. Se você não especificar o argumento -r, os arquivos serão colocados na pasta atual.
O compilador usa o nome base do arquivo de entrada como o nome base dos arquivos que ele gera. Para especificar um nome base, use o argumento -z.
Argumentos específicos para arquivos de texto de mensagem
-
-um
-
Use esse argumento para especificar que o nome de arquivo arquivo de entrada contém conteúdo na página de código ANSI do Windows padrão do sistema (CP_ACP). Esse é o padrão. Use -u para Unicode. Se o arquivo de entrada contiver um BOM, esse argumento será ignorado.
-
-Um
-
DEPRECADO. Use esse argumento para especificar que as mensagens no arquivo de .bin de saída devem ser ANSI.
-
-b
-
Use esse argumento para que o compilador use o nome base do arquivo de arquivo de entrada para os nomes de arquivo .bin. O padrão é usar "MSG".
-
-d
-
Use esse argumento para usar valores decimais para as constantes Severidade e Instalação no arquivo de cabeçalho em vez de valores hexadecimal.
-
-n
-
Use esse argumento para especificar que as mensagens terminem imediatamente após o corpo da mensagem. O padrão é encerrar o corpo da mensagem com um CR/LF.
-
-o
-
Use esse argumento para que o compilador gere um arquivo de cabeçalho OLE2 usando definições de HRESULT em vez de códigos de status. Usar códigos de status é o padrão.
-
-u
-
Use esse argumento para especificar que o arquivo de entrada contém conteúdo UTF-16LE. O padrão é o conteúdo ANSI. Se o arquivo de entrada contiver um BOM, esse argumento será ignorado.
-
-U
-
Use esse argumento para especificar que as mensagens no arquivo de .bin de saída devem ser Unicode. Esse é o padrão.
-
-v
-
Use esse argumento para gerar uma saída detalhada.
-
-xcaminho
-
Use esse argumento para especificar a pasta na qual você deseja que o compilador coloque o arquivo de inclusão .dbg C. O arquivo .dbg mapeia IDs de mensagens para seus nomes simbólicos.
Observações
Os argumentos
O compilador aceita como entrada um arquivo de manifesto (.man) ou um arquivo de texto de mensagem (.mc) e gera os seguintes arquivos:
nome de arquivo.h
Um arquivo de cabeçalho C/C++ que contém os descritores de evento, o GUID do provedor e os nomes de símbolo que você referencia em seu aplicativo.
TEMP.bin de nome de arquivo
Um arquivo de recurso binário que contém o provedor e os metadados de evento. Esse é o recurso de modelo, que é assinado pelo sufixo TEMP do nome base do arquivo.
Msg00001.bin
Um arquivo de recurso binário para cada idioma especificado (por exemplo, se o manifesto contiver cadeias de caracteres de mensagem em en-US e fr-FR, o compilador gerará Msg00001.bin e Msg00002.bin).
nome de arquivo.rc
Um script do compilador de recursos que contém as instruções para incluir cada arquivo .bin como um recurso.
Para argumentos que tomam um caminho, o caminho pode ser um caminho absoluto, relativo ou UNC e pode conter variáveis de ambiente.
Antes do MC versão 1.12.7051: O compilador não permite caminhos relativos ou variáveis de ambiente.
Exemplos
O exemplo a seguir compila um manifesto usando os padrões do compilador.
mc spooler.man
O exemplo a seguir compila o manifesto e coloca o cabeçalho e os arquivos de recurso nas pastas especificadas.
mc -h <pathgoeshere> -r <pathgoeshere> spooler.man
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 Professional [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |