메시지 컴파일러(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[데스크톱 앱만] |