다음을 통해 공유


메시지 컴파일러(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를 참조하세요.

-cp인코딩

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

-e확장

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

-h경로

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

-m길이

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

-r경로

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

-z이름

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

파일

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

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

-s경로

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

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

-t경로

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

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

-w경로

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

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

-W경로

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

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

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

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

-공동

이 인수를 사용하여 로깅 서비스가 로그하는 각 이벤트에 대해 사용자 정의 함수를 호출하도록 합니다(이벤트가 기록된 후 함수가 호출됨). 사용자 정의 함수에는 다음 서명이 있어야 합니다.

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네임스페이스

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

-css네임스페이스

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

-km

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

-Mof

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

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

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

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

-p접두사

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

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

-P접두사

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

로깅 매크로의 기본 이름은 EventWriteSymbolName입니다. 여기서 SymbolName 은 이벤트에 대해 지정한 기호 이름입니다. 예를 들어 이벤트의 기호 특성을 PrinterConnection으로 설정하면 매크로 이름은 EventWritePrinterConnection입니다. 이름에서 프린터를 제거하려면 -P프린터를 사용하여 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진수 값 대신 헤더 파일의 심각도 및 시설 상수에 10진수 값을 사용하려면 이 인수를 사용합니다.

-N

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

-O

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

-U

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

-U

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

-V

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

-x경로

컴파일러에서 .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[데스크톱 앱만]