消息文件

每个 事件源 应注册包含每个 事件标识符事件类别参数的说明字符串的消息文件。 在事件源的 EventMessageFileCategoryMessageFileParameterMessageFile 注册表值中注册这些文件。

可以创建一个包含事件标识符、类别和参数说明的消息文件,或创建三个单独的消息文件。 无论是在一个文件还是三个文件中指定消息,所有消息的消息标识符都应是唯一的。 多个应用程序可以共享同一消息文件。 有关消息文件的详细信息,请参阅 消息编译器。 有关消息文件语法的详细信息,请参阅 消息文本文件

示例消息文件

下面是一个示例消息文件。

; /* --------------------------------------------------------
; 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 获取说明。 (请注意,消息标识符在 中定义。由消息 compiler.) FormatMessage 函数将使用您传递的参数值替换插入字符串,但它不会替换参数插入字符串;在显示字符串之前,必须自行替换参数插入字符串。