다음을 통해 공유


메시지 파일

이벤트 원본 은 각 이벤트 식별자, 이벤트 범주매개 변수에 대한 설명 문자열을 포함하는 메시지 파일을 등록해야 합니다. 이벤트 원본에 대한 EventMessageFile, CategoryMessageFileParameterMessageFile 레지스트리 값에 이러한 파일을 등록합니다.

이벤트 식별자, 범주 및 매개 변수에 대한 설명이 포함된 메시지 파일을 하나 만들거나 세 개의 개별 메시지 파일을 만들 수 있습니다. 한 파일 또는 세 개의 파일에 메시지를 지정하든 모든 메시지에 대한 메시지 식별자는 고유해야 합니다. 여러 애플리케이션에서 동일한 메시지 파일을 공유할 수 있습니다. 메시지 파일에 대한 자세한 내용은 메시지 컴파일러를 참조하세요. 메시지 파일의 구문에 대한 자세한 내용은 메시지 텍스트 파일을 참조하세요.

예제 메시지 파일

다음은 예제 메시지 파일입니다.

; /* --------------------------------------------------------
; 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의 메시지 문자열 에 액세스할 수 있습니다.

설명 문자열을 가져오려면

  1. RegOpenKey 함수를 호출하여 이벤트 원본을 엽니다.
  2. RegQueryValueEx 함수를 호출하여 이벤트 원본에 대한 EventMessageFile 값의 내용(메시지 DLL의 이름)을 가져옵니다.
  3. LoadLibraryEx 함수를 호출하여 2단계에서 결정한 메시지 DLL을 로드합니다.
  4. 메시지 식별자를 사용하여 FormatMessage 함수를 호출하여 DLL에서 설명을 가져옵니다. (메시지 식별자는 에 정의되어 있습니다. 메시지 컴파일러에서 생성된 H 파일입니다.) FormatMessage 함수는 전달하는 인수 값을 사용하여 삽입 문자열을 대체하지만 매개 변수 삽입 문자열은 대체하지 않습니다. 문자열을 표시하기 전에 매개 변수 삽입 문자열을 직접 바꿔야 합니다.