訊息檔

每個 事件來源 都應該註冊訊息檔,其中包含每個 事件識別碼事件類別目錄和 參數的描述字串。 在事件來源的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 函式會使用您傳遞的引數值來取代插入字串,但不會取代參數插入字串;您必須自行取代參數插入字串,才能顯示字串。