Компилятор сообщений (MC.exe)

Используется для компиляции манифестов инструментирования и текстовых файлов сообщений. Компилятор создает файлы ресурсов сообщений, на которые ссылается ваше приложение.

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

Аргументы, общие как для текстовых файлов сообщений, так и для файлов манифеста

-?

Отображает сведения об использовании компилятора сообщений.

-C

Используйте этот аргумент, чтобы компилятор задал бит клиента (бит 28) во всех идентификаторах сообщений. Сведения о бите клиента см. в разделе winerror.h.

Кодировка -cp

Используйте этот аргумент, чтобы указать кодировку символов, используемую для всех созданных текстовых файлов. Допустимые имена: ansi (по умолчанию), utf-8 и utf-16. Кодировки Юникода добавят метку порядка байтов.

Расширение -e

Используйте этот аргумент, чтобы указать расширение, используемое для файла заголовка. Можно указать расширение до трех символов, не включая период. Значение по умолчанию — .h.

-hпуть

Используйте этот аргумент, чтобы указать папку, в которую компилятор поместит созданный файл заголовка. Значением по умолчанию является текущий каталог.

-mдлина

Используйте этот аргумент, чтобы компилятор выработать предупреждение, если сообщение превышает длину символов.

-rпуть

Используйте этот аргумент, чтобы указать папку, в которую компилятор будет помещать созданный скрипт компилятора ресурсов (RC-файл) и созданные bin-файлы (двоичные ресурсы), которые включает скрипт компилятора ресурсов. Значением по умолчанию является текущий каталог.

-zимя

Используйте этот аргумент, чтобы переопределить базовое имя по умолчанию, которое компилятор использует для создаваемых файлов. По умолчанию используется базовое имя входного файла имени файла .

Имени файла

Файл манифеста инструментирования или текстовый файл сообщения. Файл должен существовать в текущем каталоге. Можно указать файл манифеста, текстовый файл сообщения или и то, и другое. Имя файла должно содержать расширение . Соглашение заключается в использовании расширения .man для файлов манифеста и расширения .mc для текстовых файлов сообщений.

Аргументы, относящиеся к файлам манифеста

-spath

Используйте этот аргумент для создания базовых показателей инструментирования. Укажите путь к папке, содержащей базовые файлы манифеста. В последующих выпусках вы будете использовать аргумент -t, чтобы проверка новый манифест с базовым показателем для проблем совместимости.

До версии MC 1.12.7051: Недоступно

-tпуть

Используйте этот аргумент при создании новой версии манифеста и хотите проверка ее для совместимости приложений с базовым показателем, созданным с помощью аргумента -s. Путь должен указывать на папку, содержащую . BIN-файлы, созданные базовой операцией (см. параметр -s ).

До версии MC 1.12.7051: Недоступно

-wпуть

Компилятор игнорирует этот аргумент и автоматически проверяет манифест.

До версии MC 1.12.7051: Используйте этот аргумент, чтобы указать папку, содержащую файл схемы Eventman.xsd, который компилятор использует для проверки манифеста. Пакет WINDOWS SDK включает файл схемы Eventman.xsd в папку \Include. Если этот аргумент не указан, компилятор не проверяет манифест.

-Wпуть

Компилятор игнорирует этот аргумент.

До версии MC 1.12.7051: Используйте этот аргумент, чтобы указать папку, содержащую файл Winmeta.xml. Файл Winmeta.xml содержит распознанные типы входных и выходных данных, а также предопределенные каналы, уровни и коды операций. Пакет WINDOWS SDK содержит файл Winmeta.xml в папке \Include.

Аргументы, относящиеся к созданию кода, который поставщик будет использовать для регистрации событий

Следующие аргументы компилятора можно использовать для создания кода в режиме ядра или пользовательском режиме, который можно использовать для регистрации событий. Можно также запросить создание компилятором кода для поддержки записи событий на компьютерах до Windows Vista. Если приложение написано на C#, компилятор может создать класс C#, который можно использовать для регистрации событий. Эти аргументы доступны начиная с mc версии 1.12.7051, которая поставляется с windows 7 версии Windows SDK.

-Co

Используйте этот аргумент, чтобы служба ведения журнала вызывала определяемую пользователем функцию для каждого события, которое вы регистрируете (функция вызывается после регистрации события). Определяемая пользователем функция должна иметь следующую сигнатуру.

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

Кроме того, в код необходимо включить следующую директиву.

#define MCGEN_CALLOUT pFnUserFunction

Чтобы предотвратить проблемы с ведением журнала, следует как можно более короткую реализацию; служба не будет записывать в журнал ваши события до тех пор, пока функция не вернет.

Этот аргумент можно использовать с аргументом -km или -um .

Пространство имен-cs

Используйте этот аргумент, чтобы компилятор создавал класс C# на основе класса EventProvider .NET 3.5.

Пространство имен-css

Используйте этот аргумент, чтобы компилятор создавал статический класс C# на основе класса EventProvider .NET 3.5.

-Км

Используйте этот аргумент, чтобы компилятор сгенерировали код в режиме ядра, который будет использоваться для регистрации событий, определенных в манифесте.

-Mof

НЕ РЕКОМЕДУЕТСЯ. Используйте этот аргумент, чтобы компилятор создавал код, который можно использовать для регистрации событий на компьютерах до Windows Vista. Этот параметр также создает MOF-файл, содержащий классы MOF для каждого события, определенного в манифесте. Чтобы зарегистрировать классы в MOF-файле, чтобы потребители могли декодировать события, используйте компилятор MOF (Mofcomp.exe). Дополнительные сведения об использовании компилятора MOF см. в разделе Формат управляемого объекта.

Чтобы использовать этот параметр, необходимо соблюдать следующие ограничения:

  • Каждое определение события должно включать атрибуты task и opcode.
  • Каждая задача должна содержать атрибут eventGuid.
  • Данные шаблона, на которые ссылается событие, не могут содержать:
    • Элементы данных, определяющие типы входных данных win:Binary или win:SYSTEMTIME
    • Структуры
    • Массивы переменной величины; однако можно указать массивы фиксированной длины
    • Строковые типы данных не могут указывать атрибут length

Этот аргумент необходимо использовать с аргументами -um, -cs, -css или -km .

Префикс-p

Используйте этот аргумент для переопределения префикса по умолчанию, используемого компилятором для имен макросов и методов ведения журнала. Префикс по умолчанию — "EventWrite". Строка обрабатывается с учетом регистра.

Этот аргумент можно использовать с аргументами -um, -cs, -css или -km .

Префикс-P

Используйте этот аргумент, чтобы удалить символы из начала символьного имени, указанного для события. При сравнении регистр не учитывается. Компилятор использует символьное имя для формирования имен макросов журнала и имен методов.

Имя по умолчанию для макроса ведения журнала — EventWriteSymbolName, где SymbolName — это символьное имя, указанное для события. Например, если для атрибута символа события задано значение PrinterConnection, имя макроса будет EventWritePrinterConnection. Чтобы удалить printer из имени, используйте -PPrinter, что приведет к EventWriteConnection.

Этот аргумент можно использовать с аргументами -um, -cs, -css или -km .

-um

Используйте этот аргумент, чтобы компилятор сгенерировать код пользовательского режима, который будет использоваться для регистрации событий, определенных в манифесте.

Чтобы компилятор создавал код ведения журнала, необходимо указать аргумент -um, -cs, -css или -km ; эти аргументы являются взаимоисключающими.

Чтобы указать место для размещения файлов .h, .cs и .mof, создаваемых компилятором, используйте аргумент -h . Если аргумент -h не указан, файлы будут помещены в текущую папку.

Чтобы указать, где следует разместить RC-файл и двоичные файлы (содержащие ресурсы метаданных), создаваемые компилятором, используйте аргумент -r . Если аргумент -r не указан, файлы помещаются в текущую папку.

Компилятор использует базовое имя входного файла в качестве базового имени создаваемых файлов. Чтобы указать базовое имя, используйте аргумент -z .

Аргументы, относящиеся к текстовым файлам сообщений

-a

Используйте этот аргумент, чтобы указать, что входной файл имени файла содержит содержимое на системной кодовой странице Windows ANSI (CP_ACP). Это значение по умолчанию. Используйте -u для Юникода. Если входной файл содержит спецификацию спецификации, этот аргумент будет игнорироваться.

-A

НЕ РЕКОМЕДУЕТСЯ. Используйте этот аргумент, чтобы указать, что сообщения в выходном BIN-файле должны быть ANSI.

-B

Используйте этот аргумент, чтобы компилятор использовал базовое имя входного файла имени файла для bin-имен. По умолчанию используется "MSG".

-D

Используйте этот аргумент, чтобы использовать десятичные значения для констант Серьезность и Объект в файле заголовка вместо шестнадцатеричных значений.

-N

Используйте этот аргумент, чтобы указать, что сообщения завершаются сразу после текста сообщения. По умолчанию текст сообщения завершается с помощью CR/LF.

-O

Используйте этот аргумент, чтобы компилятор создавал файл заголовка OLE2 с помощью определений HRESULT , а не кодов состояния. По умолчанию используется коды состояния.

-U

Используйте этот аргумент, чтобы указать, что входной файл имени файла содержит содержимое UTF-16LE. По умолчанию используется содержимое ANSI. Если входной файл содержит спецификацию спецификации, этот аргумент будет игнорироваться.

-U

Используйте этот аргумент, чтобы указать, что сообщения в выходном BIN-файле должны быть в Юникоде. Это значение по умолчанию.

-V

Используйте этот аргумент для создания подробных выходных данных.

-xпуть

Используйте этот аргумент, чтобы указать папку, в которую компилятор будет помещать dbg-файл C include. DBG-файл сопоставляет идентификаторы сообщений с их символьными именами.

Комментарии

Аргументы -A и -mof являются устаревшими и будут удалены в будущем.

Компилятор принимает в качестве входных данных файл манифеста (.man) или текстовый файл сообщения (.mc) и создает следующие файлы:

  • filename.h

    Файл заголовка C/C++, содержащий дескрипторы событий, GUID поставщика и имена символов, на которые ссылается приложение.

  • Имени файла TEMP.bin

    Двоичный файл ресурсов, содержащий метаданные поставщика и события. Это ресурс шаблона, который обозначается суффиксом TEMP базового имени файла.

  • Msg00001.bin

    Двоичный файл ресурсов для каждого указанного языка (например, если манифест содержит строки сообщений в en-US и fr-FR, компилятор создаст msg00001.bin и Msg00002.bin).

  • filename.rc

    Скрипт компилятора ресурсов, содержащий инструкции для включения каждого BIN-файла в качестве ресурса.

Для аргументов, которые принимают путь, путь может быть абсолютным, относительным или UNC-путем и может содержать переменные среды.

До версии MC 1.12.7051: Компилятор не разрешает относительные пути или переменные среды.

Пакет SDK для Windows включает компилятор (mc.exe) в папку \Bin.

Примеры

В следующем примере выполняется компиляция манифеста с использованием значений по умолчанию компилятора.

mc spooler.man

В следующем примере выполняется компиляция манифеста и помещает файлы заголовков и ресурсов в указанные папки.

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

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]