Поделиться через


Файлы сообщений

Каждый источник событий должен регистрировать файлы сообщений, содержащие строки описания для каждого идентификатора,категории события и параметра. Зарегистрируйте эти файлы в значениях реестра 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 сообщений.

Получение строк описания

  1. Вызовите функцию RegOpenKey , чтобы открыть источник события.
  2. Вызовите функцию RegQueryValueEx , чтобы получить содержимое значения EventMessageFile для источника события, которое является именем библиотеки DLL сообщения.
  3. Вызовите функцию LoadLibraryEx , чтобы загрузить библиотеку DLL сообщения, определенную на шаге 2.
  4. Вызовите функцию FormatMessage с идентификатором сообщения, чтобы получить описание из библиотеки DLL. (Обратите внимание, что идентификаторы сообщений определены в . H-файл, созданный компилятором сообщений.) Функция FormatMessage заменит строки вставки, используя значения аргументов, которые вы передаете, но не заменит строки вставки параметров. Перед отображением строки необходимо самостоятельно заменить строки вставки параметров.