EventLogMsgs.mc — Создание файла ресурсов (DLL)

В настоящее время у меня есть файл ресурсов, который я использую для своего пользовательского журнала событий. Кажется, все работает отлично, когда я записываю событие в журнал с намерениями информационных целей/успеха. Но когда я пишу одно из намерений ошибки, я получаю...

Не удается найти описание события с идентификатором 301 из источника X...

Мне интересно... Это связано с тем, что все мои категории Серьезность=Успех? Нужна ли мне также категория для Службы с Severity=Error?


Пример успешной записи в журнале:

Идентификатор события: 101, уровень: информация, категория задачи: (8) обслуживание

Пример НЕуспешной записи в журнале:

Идентификатор события: 301, уровень: ошибка, категория задачи: (8) служба


Ниже приведен мой текущий файл текстовых сообщений, который я конвертирую в файл ресурсов для категорий и сообщений...

; // EventLogMsgs.mc
; // ********************************************************
; // Use the following commands to build this file:
; //   mc -s EventLogMsgs.mc
; //   rc EventLogMsgs.rc
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res 

; // ********************************************************
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************

MessageId=0x1
Severity=Success
SymbolicName=GENERAL_CATEGORY
Language=English
General
.

MessageId=0x2
Severity=Success
SymbolicName=DATABASE_CATEGORY
Language=English
Database Query
.

MessageId=0x3
Severity=Success
SymbolicName=LOGON_CATEGORY
Language=English
Logon
.

MessageId=0x4
Severity=Success
SymbolicName=LOGOFF_CATEGORY
Language=English
Logoff
.

MessageId=0x5
Severity=Success
SymbolicName=EMAIL_CATEGORY
Language=English
Email
.

MessageId=0x6
Severity=Success
SymbolicName=PRINTER_CATEGORY
Language=English
Printer
.

MessageId=0x7
Severity=Success
SymbolicName=IO_CATEGORY
Language=English
IO
.

MessageId=0x8
Severity=Success
SymbolicName=SERVICE_CATEGORY
Language=English
Service
.

MessageId=0x9
Severity=Success
SymbolicName=DEBUG_CATEGORY
Language=English
Debug
.

; // - Event messages -
; // *********************************

MessageId = 100
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID100
Language=English
%1
.

MessageId = 101
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID101
Language=English
%1
.

MessageId = 102
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID102
Language=English
%1
.

MessageId = 103
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID103
Language=English
%1
.

MessageId = 104
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID104
Language=English
%1
.

MessageId = 105
Severity = Success
Facility = Application
SymbolicName = SMESSAGE_ID105
Language=English
%1
.

MessageId = 200
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID200
Language=English
%1
.

MessageId = 201
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID201
Language=English
%1
.

MessageId = 202
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID202
Language=English
%1
.

MessageId = 203
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID203
Language=English
%1
.

MessageId = 204
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID204
Language=English
%1
.

MessageId = 205
Severity = Warning
Facility = Application
SymbolicName = WMESSAGE_ID205
Language=English
%1
.

MessageId = 300
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID300
Language=English
%1
.

MessageId = 301
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID301
Language=English
%1
.

MessageId = 302
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID302
Language=English
%1
.

MessageId = 303
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID303
Language=English
%1
.

MessageId = 304
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID304
Language=English
%1
.

MessageId = 305
Severity = Error
Facility = Application
SymbolicName = EMESSAGE_ID305
Language=English
%1
.

person Arvo Bowen    schedule 29.07.2014    source источник


Ответы (1)


Реальная проблема: я неправильно создавал файл, и номера событий, которые, как мне казалось, я создавал, на самом деле разные. Я узнал, что происходит, покопавшись в файле myfile.c, созданном при запуске команд mc.exe и rc.exe. При просмотре этого файла я понял, что значения DWORD (HEX) не соответствуют целому числу, которое я ожидал.

Моя проблема: Суть в том, что моя проблема заключалась просто в том, что я использовал «Серьезность = Предупреждение» для # 200, а не «Серьезность = Успех». Когда я изменил это, я наконец получил номера событий, которые я искал. Было несколько других улучшений, которые я внес в свой файл (как показано ниже), но это была основная причина, по которой у меня возникла проблема.

Исправленный файл сообщения журнала событий: ниже вы найдете правильный файл сообщения журнала событий. Я также решил разбить его на два файла, разделив категории и события. (Вы не должны)

categories.mc

; // EventLogMsgs.mc
; // ********************************************************
; // Use the following commands to build this file:
; //   mc -s EventLogMsgs.mc
; //   rc EventLogMsgs.rc
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res 

; // ********************************************************
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************

MessageIdTypedef = WORD

LanguageNames = (English=0x409:MSG00409)

MessageId = 0x1
SymbolicName=GENERAL_CATEGORY
Language=English
General
.

MessageId = 0x2
SymbolicName=DATABASE_CATEGORY
Language=English
Database
.

MessageId = 0x3
SymbolicName=LOGON_CATEGORY
Language=English
Logon
.

MessageId = 0x4
SymbolicName=LOGOFF_CATEGORY
Language=English
Logoff
.

MessageId = 0x5
SymbolicName=EMAIL_CATEGORY
Language=English
Email
.

MessageId = 0x6
SymbolicName=PRINTER_CATEGORY
Language=English
Printer
.

MessageId = 0x7
SymbolicName=IO_CATEGORY
Language=English
IO
.

MessageId = 0x8
SymbolicName=SERVICE_CATEGORY
Language=English
Service
.

MessageId = 0x9
SymbolicName=DEBUG_CATEGORY
Language=English
Debug
.

events.mc

; // EventLogMsgs.mc
; // ********************************************************
; // Use the following commands to build this file:
; //   mc -s EventLogMsgs.mc
; //   rc EventLogMsgs.rc
; //   link /DLL /SUBSYSTEM:WINDOWS /NOENTRY /MACHINE:x86 EventLogMsgs.Res 

; // ********************************************************
; // - Event categories -
; // Categories must be numbered consecutively starting at 1.
; // ********************************************************

; // - Event messages -
; // *********************************

MessageIdTypedef = DWORD

LanguageNames = (English=0x409:MSG00409)

MessageId = 100
SymbolicName = SMESSAGE_ID100
Language=English
%1
.

MessageId = 101
SymbolicName = SMESSAGE_ID101
Language=English
%1
.

MessageId = 102
SymbolicName = SMESSAGE_ID102
Language=English
%1
.

MessageId = 103
SymbolicName = SMESSAGE_ID103
Language=English
%1
.

MessageId = 104
SymbolicName = SMESSAGE_ID104
Language=English
%1
.

MessageId = 105
SymbolicName = SMESSAGE_ID105
Language=English
%1
.

MessageId = 200
SymbolicName = WMESSAGE_ID200
Language=English
%1
.

MessageId = 201
SymbolicName = WMESSAGE_ID201
Language=English
%1
.

MessageId = 202
SymbolicName = WMESSAGE_ID202
Language=English
%1
.

MessageId = 203
SymbolicName = WMESSAGE_ID203
Language=English
%1
.

MessageId = 204
SymbolicName = WMESSAGE_ID204
Language=English
%1
.

MessageId = 205
SymbolicName = WMESSAGE_ID205
Language=English
%1
.

MessageId = 300
SymbolicName = EMESSAGE_ID300
Language=English
%1
.

MessageId = 301
SymbolicName = EMESSAGE_ID301
Language=English
%1
.

MessageId = 302
SymbolicName = EMESSAGE_ID302
Language=English
%1
.

MessageId = 303
SymbolicName = EMESSAGE_ID303
Language=English
%1
.

MessageId = 304
SymbolicName = EMESSAGE_ID304
Language=English
%1
.

MessageId = 305
SymbolicName = EMESSAGE_ID305
Language=English
%1
.
person Arvo Bowen    schedule 01.08.2014