Freigeben über


Nachrichtendateien

Hinweis

Die Ereignisprotokollierungs-API wurde für Anwendungen entwickelt, die auf dem Betriebssystem Windows Server 2003, Windows XP oder Windows 2000 ausgeführt werden. In Windows Vista wurde die Ereignisprotokollierungsinfrastruktur neu gestaltet. Anwendungen, die auf windows Vista oder höher ausgeführt werden sollen, sollten jetzt das Windows-Ereignisprotokoll verwenden.

Jede Ereignisquelle sollte Nachrichtendateien registrieren, die Beschreibungszeichenfolgen für jeden Ereignisbezeichner, ereigniskategorieund Parameterenthalten. Registrieren Sie diese Dateien im EventMessageFile-, CategoryMessageFile-und ParameterMessageFile Registrierungswerte für die Ereignisquelle.

Sie können eine Nachrichtendatei erstellen, die Beschreibungen für die Ereignisbezeichner, Kategorien und Parameter enthält, oder drei separate Nachrichtendateien erstellen. Die Nachrichten-IDs für alle Ihre Nachrichten sollten eindeutig sein, unabhängig davon, ob Sie die Nachrichten in einer Datei oder drei Dateien angeben. Mehrere Anwendungen können dieselbe Nachrichtendatei gemeinsam nutzen. Weitere Informationen zu Nachrichtendateien finden Sie unter Message Compiler. Ausführliche Informationen zur Syntax einer Nachrichtendatei finden Sie unter Nachrichtentextdateien.

Beispielnachrichtendatei

Im Folgenden sehen Sie eine Beispielnachrichtendatei.

; /* --------------------------------------------------------
; 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
.

Die Ereignisanzeigeanwendung kann das folgende Verfahren verwenden, um Zugriff auf die Nachrichtenzeichenfolgen in der Nachrichten-DLL zu erhalten.

Abrufen von Beschreibungszeichenfolgen

  1. Rufen Sie die RegOpenKey--Funktion auf, um die Ereignisquelle zu öffnen.
  2. Rufen Sie die RegQueryValueEx--Funktion auf, um den Inhalt des EventMessageFile- Werts für die Ereignisquelle abzurufen. Dies ist der Name der Nachrichten-DLL.
  3. Rufen Sie die LoadLibraryEx--Funktion auf, um die nachrichten-DLL zu laden, die durch Schritt 2 bestimmt wurde.
  4. Rufen Sie die FormatMessage--Funktion mit dem Nachrichtenbezeichner auf, um die Beschreibung von der DLL abzurufen. (Beachten Sie, dass die Nachrichtenbezeichner in der . H-Datei, die vom Nachrichtencompiler generiert wird.) Die FormatMessage--Funktion ersetzt die Einfügezeichenfolgen mithilfe der übergebenen Argumentwerte, ersetzt jedoch nicht die Einfügezeichenfolgen des Parameters. Sie müssen die Parametereinfügungszeichenfolgen selbst ersetzen, bevor Sie die Zeichenfolge anzeigen.