消息文件
每个 事件源 都应注册包含每个 事件标识符、事件类别和 参数的说明字符串的消息文件。 在 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 函数将使用传递的参数值替换插入字符串,但不会替换参数插入字符串;在显示字符串之前,必须自行替换参数插入字符串。