Pliki komunikatów
Każdy źródła zdarzeń powinien rejestrować pliki komunikatów zawierające ciągi opisu dla każdego identyfikatora zdarzeń , kategorii zdarzeń i parametru . Zarejestruj te pliki w EventMessageFile, CategoryMessageFilei ParametrMessageFile wartości rejestru dla źródła zdarzeń.
Można utworzyć jeden plik komunikatu zawierający opisy identyfikatorów zdarzeń, kategorii i parametrów lub utworzyć trzy oddzielne pliki komunikatów. Identyfikatory komunikatów dla wszystkich komunikatów powinny być unikatowe, niezależnie od tego, czy komunikaty są określone w jednym pliku, czy w trzech plikach. Kilka aplikacji może współużytkować ten sam plik komunikatu. Aby uzyskać więcej informacji na temat plików komunikatów, zobacz Kompilator komunikatów. Aby uzyskać szczegółowe informacje na temat składni pliku komunikatów, zobacz Message Text Files.
Przykładowy plik komunikatu
Poniżej znajduje się przykładowy plik komunikatu.
; /* --------------------------------------------------------
; 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
.
Aplikacja wyświetlając zdarzenia może użyć poniższej procedury, aby uzyskać dostęp do ciągów komunikatów w pliku DLL komunikatu.
Aby uzyskać ciągi opisu
- Wywołaj funkcję RegOpenKey, aby otworzyć źródło zdarzeń.
- Wywołaj funkcję RegQueryValueEx, aby uzyskać zawartość EventMessageFile wartości źródła zdarzeń, która jest nazwą biblioteki DLL komunikatu.
- Wywołaj funkcję LoadLibraryEx, aby załadować bibliotekę DLL komunikatu określoną w kroku 2.
- Wywołaj funkcję FormatMessage z identyfikatorem komunikatu, aby uzyskać opis z biblioteki DLL. (Należy pamiętać, że identyfikatory komunikatów są zdefiniowane w obiekcie . Plik H wygenerowany przez kompilator komunikatów). Funkcja FormatMessage zastąpi ciągi wstawiania przy użyciu przekazanych wartości argumentów, ale nie zastąpi ciągów wstawiania parametrów; Przed wyświetleniem ciągu należy zastąpić ciągi wstawiania parametrów.