메시지 파일
각 이벤트 원본 은 각 이벤트 식별자, 이벤트 범주 및 매개 변수에 대한 설명 문자열을 포함하는 메시지 파일을 등록해야 합니다. 이벤트 원본에 대한 EventMessageFile, CategoryMessageFile 및 ParameterMessageFile 레지스트리 값에 이러한 파일을 등록합니다.
이벤트 식별자, 범주 및 매개 변수에 대한 설명이 포함된 메시지 파일을 하나 만들거나 세 개의 개별 메시지 파일을 만들 수 있습니다. 한 파일 또는 세 개의 파일에 메시지를 지정하든 모든 메시지에 대한 메시지 식별자는 고유해야 합니다. 여러 애플리케이션에서 동일한 메시지 파일을 공유할 수 있습니다. 메시지 파일에 대한 자세한 내용은 메시지 컴파일러를 참조하세요. 메시지 파일의 구문에 대한 자세한 내용은 메시지 텍스트 파일을 참조하세요.
예제 메시지 파일
다음은 예제 메시지 파일입니다.
; /* --------------------------------------------------------
; HEADER SECTION
;*/
SeverityNames=(Success=0x0:STATUS_SEVERITY_SUCCESS
Informational=0x1:STATUS_SEVERITY_INFORMATIONAL
Warning=0x2:STATUS_SEVERITY_WARNING
Error=0x3:STATUS_SEVERITY_ERROR
)
;
;
FacilityNames=(System=0x0:FACILITY_SYSTEM
Runtime=0x2:FACILITY_RUNTIME
Stubs=0x3:FACILITY_STUBS
Io=0x4:FACILITY_IO_ERROR_CODE
)
;
;/* ------------------------------------------------------------------
; MESSAGE DEFINITION SECTION
;*/
MessageIdTypedef=WORD
MessageId=0x1
SymbolicName=CAT_1
Language=English
Category 1
.
MessageId=0x2
SymbolicName=CAT_2
Language=English
Category 2
.
MessageId=0x3
SymbolicName=CAT_3
Language=English
Category 3
.
MessageIdTypedef=DWORD
MessageId=0x100
Severity=Error
Facility=Runtime
SymbolicName=MSG_COMMAND_ERR
Language=English
The command is incorrect.
.
MessageId=0x101
Severity=Success
Facility=System
SymbolicName=MSG_STRIKE_ANY_KEY
Language=English
Press any key to continue . . . %0
.
MessageId=0x102
Severity=Error
Facility=System
SymbolicName=MSG_FILE_BAD_CONTENTS
Language=English
File %1 contains %2, which is in error
.
MessageId=0x103
Severity=Warning
Facility=System
SymbolicName=MSG_RETRYS
Language=English
There have been %1 retrys with %2 success! Disconnect from
the server and retry later.
.
MessageId=0x104
Severity=Informational
Facility=System
SymbolicName=MSG_INSERT_DISK
Language=English
Insert %%1000 in %%1001 and hit any key when ready...
.
;/* Insert string parameters */
;
MessageId=1000
Severity=Success
Facility=System
SymbolicName=DISK
Language=English
disk%0
.
MessageId=1001
Severity=Success
Facility=System
SymbolicName=DRIVE
Language=English
drive%0
.
이벤트 보기 애플리케이션은 다음 절차를 사용하여 메시지 DLL의 메시지 문자열 에 액세스할 수 있습니다.
설명 문자열을 가져오려면
- RegOpenKey 함수를 호출하여 이벤트 원본을 엽니다.
- RegQueryValueEx 함수를 호출하여 이벤트 원본에 대한 EventMessageFile 값의 내용(메시지 DLL의 이름)을 가져옵니다.
- LoadLibraryEx 함수를 호출하여 2단계에서 결정한 메시지 DLL을 로드합니다.
- 메시지 식별자를 사용하여 FormatMessage 함수를 호출하여 DLL에서 설명을 가져옵니다. (메시지 식별자는 에 정의되어 있습니다. 메시지 컴파일러에서 생성된 H 파일입니다.) FormatMessage 함수는 전달하는 인수 값을 사용하여 삽입 문자열을 대체하지만 매개 변수 삽입 문자열은 대체하지 않습니다. 문자열을 표시하기 전에 매개 변수 삽입 문자열을 직접 바꿔야 합니다.