메시지 컴파일러(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

컴파일러가 모든 메시지 ID에서 고객 비트(비트 28)를 설정하도록 하려면 이 인수를 사용합니다. 고객 비트에 대한 자세한 내용은 winerror.h를 참조하세요.

-cpencoding

이 인수를 사용하여 생성된 모든 텍스트 파일에 사용되는 문자 인코딩을 지정합니다. 유효한 이름에는 "ansi"(기본값), "utf-8" 및 "utf-16"이 포함됩니다. 유니코드 인코딩은 바이트 순서 표시를 추가합니다.

-eextension

헤더 파일에 사용할 확장자를 지정하려면 이 인수를 사용합니다. 마침표가 포함되지 않은 최대 3자의 확장명을 지정할 수 있습니다. 기본값은 .h입니다.

-hpath

컴파일러에서 생성된 헤더 파일을 배치할 폴더를 지정하려면 이 인수를 사용합니다. 기본값은 현재 디렉터리입니다.

-mlength

메시지가 길이 문자를 초과하는 경우 컴파일러에서 경고를 생성하도록 하려면 이 인수를 사용합니다.

-rpath

이 인수를 사용하여 컴파일러에서 생성된 리소스 컴파일러 스크립트(.rc 파일) 및 리소스 컴파일러 스크립트에 포함된 생성된 .bin 파일(이진 리소스)을 배치할 폴더를 지정합니다. 기본값은 현재 디렉터리입니다.

-zname

컴파일러가 생성하는 파일에 사용하는 기본 기본 이름을 재정의하려면 이 인수를 사용합니다. 기본값은 파일 이름 입력 파일의 기본 이름을 사용하는 것입니다.

파일

계측 매니페스트 파일 또는 메시지 텍스트 파일입니다. 파일이 현재 디렉터리에 있어야 합니다. 매니페스트 파일, 메시지 텍스트 파일 또는 둘 다를 지정할 수 있습니다. 파일 이름에는 확장명을 포함해야 합니다. 규칙은 매니페스트 파일에 .man 확장명과 메시지 텍스트 파일에 .mc 확장을 사용하는 것입니다.

매니페스트 파일과 관련된 인수

-spath

계측 기준을 만들려면 이 인수를 사용합니다. 기준 매니페스트 파일이 포함된 폴더의 경로를 지정합니다. 이후 릴리스의 경우 -t 인수를 사용하여 호환성 문제에 대한 기준에 대해 새 매니페스트를 확인합니다.

MC 버전 1.12.7051 이전: 사용할 수 없음

-tpath

매니페스트의 새 버전을 만들고 -s 인수를 사용하여 만든 기준과 애플리케이션 호환성을 확인하려는 경우 이 인수를 사용합니다. 경로는 .을 포함하는 폴더를 가리킬 수 있어야 합니다. 기준 작업이 만든 BIN 파일입니다( -s 스위치 참조).

MC 버전 1.12.7051 이전: 사용할 수 없음

-wpath

컴파일러는 이 인수를 무시하고 매니페스트의 유효성을 자동으로 검사합니다.

MC 버전 1.12.7051 이전: 이 인수를 사용하여 컴파일러가 매니페스트의 유효성을 검사하는 데 사용하는 Eventman.xsd 스키마 파일이 포함된 폴더를 지정합니다. Windows SDK는 \Include 폴더에 Eventman.xsd 스키마 파일을 포함합니다. 이 인수를 지정하지 않으면 컴파일러가 매니페스트의 유효성을 검사하지 않습니다.

-Wpath

컴파일러는 이 인수를 무시합니다.

MC 버전 1.12.7051 이전: 이 인수를 사용하여 Winmeta.xml 파일이 포함된 폴더를 지정합니다. Winmeta.xml 파일에는 인식된 입력 및 출력 형식뿐만 아니라 미리 정의된 채널, 수준 및 opcode가 포함됩니다. Windows SDK는 \Include 폴더에 Winmeta.xml 파일을 포함합니다.

공급자가 이벤트를 기록하는 데 사용할 코드 생성과 관련된 인수

다음 컴파일러 인수를 사용하여 이벤트를 기록하는 데 사용할 수 있는 커널 모드 또는 사용자 모드 코드를 생성할 수 있습니다. Vista를 Windows 전에 컴파일러가 컴퓨터에서 이벤트 작성을 지원하는 코드를 생성하도록 요청할 수도 있습니다. 애플리케이션이 C#으로 작성된 경우 컴파일러는 이벤트를 기록하는 데 사용할 수 있는 C# 클래스를 생성할 수 있습니다. 이러한 인수는 Windows 7 버전의 Window SDK와 함께 제공되는 MC 버전 1.12.7051부터 사용할 수 있습니다.

-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 인수와 함께 이 인수를 사용할 수 있습니다.

-csnamespace

컴파일러가 .NET 3.5 EventProvider 클래스를 기반으로 C# 클래스를 생성하도록 하려면 이 인수를 사용합니다.

-cssnamespace

컴파일러가 .NET 3.5 EventProvider 클래스를 기반으로 정적 C# 클래스를 생성하도록 하려면 이 인수를 사용합니다.

-km

이 인수를 사용하여 컴파일러가 매니페스트에 정의된 이벤트를 기록하는 데 사용할 커널 모드 코드를 생성하도록 합니다.

-mof

사용되지 않습니다. 이 인수를 사용하여 컴파일러에서 vista를 Windows 전에 컴퓨터에서 이벤트를 기록하는 데 사용할 수 있는 코드를 생성하도록 합니다. 또한 이 옵션은 매니페스트에 정의된 각 이벤트에 대한 MOF 클래스를 포함하는 MOF 파일을 만듭니다. 소비자가 이벤트를 디코딩할 수 있도록 MOF 파일에 클래스를 등록하려면 MOF 컴파일러(Mofcomp.exe)를 사용합니다. MOF 컴파일러 사용에 대한 자세한 내용은 관리되는 개체 형식을 참조하세요.

이 스위치를 사용하려면 다음 제한 사항을 준수해야 합니다.

  • 모든 이벤트 정의에는 태스크 및 opcode 특성이 포함되어야 합니다.
  • 모든 작업에 eventGuid 특성이 포함되어야 합니다.
  • 이벤트 참조에 포함될 수 없는 템플릿 데이터는 다음과 같습니다.
    • win:Binary 또는 win:SYSTEMTIME 입력 형식을 지정하는 데이터 항목
    • 구조체
    • 가변 크기 배열; 그러나 고정 길이 배열을 지정할 수 있습니다.
    • 문자열 데이터 형식은 길이 특성을 지정할 수 없습니다.

-um, -cs, -css 또는 -km 인수와 함께 이 인수 사용해야 합니다.

-pprefix

이 인수를 사용하여 컴파일러가 로깅 매크로 이름 및 메서드 이름에 사용하는 기본 접두사로 재정의합니다. 기본 접두사는 "EventWrite"입니다. 문자열은 대/소문자를 구분합니다.

-um, -cs, -css 또는 -km 인수와 함께 이 인수를 사용할 수 있습니다.

-Pprefix

이벤트에 대해 지정한 기호 이름의 시작 부분에서 문자를 제거하려면 이 인수를 사용합니다. 비교는 대/소문자를 구분합니다. 컴파일러는 기호 이름을 사용하여 로깅 매크로 이름과 메서드 이름을 형성합니다.

로깅 매크로의 기본 이름은 EventWriteSymbolName입니다. 여기서 SymbolName 은 이벤트에 대해 지정한 기호 이름입니다. 예를 들어 이벤트의 기호 특성을 PrinterConnection으로 설정하면 매크로 이름은 EventWritePrinterConnection이 됩니다. 이름에서 프린터를 제거하려면 -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 를 사용합니다. 입력 파일에 BOM이 포함된 경우 이 인수는 무시됩니다.

-A

사용되지 않습니다. 출력 .bin 파일의 메시지가 ANSI여야 함을 지정하려면 이 인수를 사용합니다.

-b

컴파일러에서 .bin 파일 이름에 대한 파일 이름 입력 파일의 기본 이름을 사용하도록 하려면 이 인수를 사용합니다. 기본값은 "MSG"를 사용하는 것입니다.

-d

16진수 값 대신 헤더 파일의 심각도 및 Facility 상수에 10진수 값을 사용하려면 이 인수를 사용합니다.

-n

메시지 본문 바로 후에 메시지가 종료되도록 지정하려면 이 인수를 사용합니다. 기본값은 CR/LF를 사용하여 메시지 본문을 종료하는 것입니다.

-o

컴파일러가 상태 코드 대신 HRESULT 정의를 사용하여 OLE2 헤더 파일을 생성하도록 하려면 이 인수를 사용합니다. 상태 코드를 사용하는 것이 기본값입니다.

-u

이 인수를 사용하여 파일 이름 입력 파일에 UTF-16LE 콘텐츠가 포함되도록 지정합니다. 기본값은 ANSI 콘텐츠입니다. 입력 파일에 BOM이 포함된 경우 이 인수는 무시됩니다.

-U

출력 .bin 파일의 메시지가 유니코드여야 함을 지정하려면 이 인수를 사용합니다. 이것이 기본값입니다.

-v

자세한 출력을 생성하려면 이 인수를 사용합니다.

-xpath

컴파일러에서 .dbg C include 파일을 배치할 폴더를 지정하려면 이 인수를 사용합니다. .dbg 파일은 메시지 ID를 기호화된 이름에 매핑합니다.

설명

-A-mof 인수는 더 이상 사용되지 않으며 나중에 제거될 예정입니다.

컴파일러는 매니페스트(.man) 파일 또는 메시지 텍스트(.mc) 파일을 입력으로 수락하고 다음 파일을 생성합니다.

  • filename.h

    애플리케이션에서 참조하는 이벤트 설명자, 공급자 GUID 및 기호 이름을 포함하는 C/C++ 헤더 파일입니다.

  • 파일 TEMP.bin

    공급자 및 이벤트 메타데이터를 포함하는 이진 리소스 파일입니다. 파일의 기본 이름의 TEMP 접미사로 표시되는 템플릿 리소스입니다.

  • Msg00001.bin

    지정하는 각 언어에 대한 이진 리소스 파일입니다(예: 매니페스트에 en-US 및 fr-FR의 메시지 문자열이 포함된 경우 컴파일러는 Msg00001.bin 및 Msg00002.bin을 생성합니다).

  • filename.rc

    각 .bin 파일을 리소스로 포함할 문을 포함하는 리소스 컴파일러 스크립트입니다.

경로를 사용하는 인수의 경우 경로는 절대 경로, 상대 경로 또는 UNC 경로일 수 있으며 환경 변수를 포함할 수 있습니다.

MC 버전 1.12.7051 이전: 컴파일러는 상대 경로 또는 환경 변수를 허용하지 않습니다.

Windows SDK에는 \Bin 폴더에 컴파일러(mc.exe)가 포함됩니다.

예제

다음 예제에서는 컴파일러 기본값을 사용하여 매니페스트를 컴파일합니다.

mc spooler.man

다음 예제에서는 매니페스트를 컴파일하고 헤더 및 리소스 파일을 지정된 폴더에 배치합니다.

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

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]