Ereignisbezeichner (Ereignisprotokollierung)
Ereignisbezeichner identifizieren ein bestimmtes Ereignis eindeutig. Jede Ereignisquelle kann eigene nummerierte Ereignisse und die Beschreibungszeichenfolgen definieren, denen sie in der Nachrichtendatei zugeordnet sind. Ereignisanzeigen können diese Zeichenfolgen dem Benutzer anzeigen. Sie sollten dem Benutzer helfen, zu verstehen, was schief gelaufen ist, und vorschlagen, welche Maßnahmen ergriffen werden sollen. Leiten Sie die Beschreibung an die Benutzer, die ihre eigenen Probleme lösen, nicht an Administratoren oder Supporttechniker. Weitere Informationen finden Sie unter Richtlinien für Fehlermeldungen.
Format
Das folgende Diagramm veranschaulicht das Format eines Ereignisbezeichners.
3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+---+-+-+-----------------------+-------------------------------+
|Sev|C|R| Facility | Code |
+---+-+-+-----------------------+-------------------------------+
-
Sev
-
Schweregrad Der Schweregrad ist wie folgt definiert:
- 00 – Erfolgreich
- 01 – Information
- 10 – Warnung
- 11 – Fehler
-
C
-
Kundenbit. Dieses Bit wird wie folgt definiert:
- 0 – Systemcode
- 1– Kundencode
-
R
-
Reservierte Bitzahl.
-
Anlage
-
Einrichtungscode. Dieser Wert kann FACILITY _ NULL sein.
-
Code
-
Statuscode für die Einrichtung.
Nachrichtendefinitionen
Nachrichten werden in der Ereignismeldungsdatei definiert. Die Beschreibungszeichenfolgen in der Ereignismeldungsdatei werden nach Ereignisbezeichner indiziert, sodass Ereignisanzeige ereignisspezifischen Text für jedes Ereignis basierend auf dem Ereignisbezeichner anzeigen kann. Alle Beschreibungen sind lokalisiert und sprachabhängig. Weitere Informationen zum Erstellen einer Nachrichtendatei finden Sie unter Nachrichtentextdateien.
Die Beschreibungszeichenfolgen können Platzhalter für Einfügezeichenfolgen im Format %n enthalten, wobei %1 die erste Einfügezeichenfolge angibt usw. Im Folgenden ist beispielsweise ein Beispieleintrag in der MC-Datei enthalten:
MessageId=0x4
Severity=Error
Facility=System
SymbolicName=MSG_CMD_DELETE
Language=English
File %1 contains %2, which is in error.
.
In diesem Fall enthält der von ReadEventLog zurückgegebene Puffer Einfügezeichenfolgen. Der NumStrings-Member der EVENTLOGRECORD-Struktur gibt die Anzahl der Einfügezeichenfolgen an. Der StringOffset-Member der EVENTLOGRECORD-Struktur gibt die Position der ersten Einfügezeichenfolge im Puffer an. Sie können ein Array von _ DWORD-PTRs übergeben, die beim Aufrufen der FormatMessage-Funktion auf die Adresse jeder Zeichenfolge im Puffer zeigen, und die Zeichenfolgen werden in die Nachricht eingefügt.
Die Beschreibungszeichenfolge kann auch Platzhalter für Parameterzeichenfolgen aus der Parametermeldungsdatei enthalten. Die Platzhalter haben das Format %%n, wobei %%1 durch die Parameterzeichenfolge mit dem Bezeichner 1 ersetzt wird usw. Es liegt jedoch an Ihnen, die Parameterzeichenfolgen in die Meldungszeichenfolge einzufügen, die FormatMessage zurückgibt. In der Regel rufen Sie FormatMessage auf, um die Nachrichtenzeichenfolge für das Ereignis abzurufen. Anschließend analysieren Sie die Meldungszeichenfolge für %%n Parameter. Wenn die Nachricht einen oder mehrere Parameter enthält, laden Sie den ParameterMessageFile-Registrierungswert für die Quelle. Abrufen Sie für jeden Parameter in der Nachrichtenzeichenfolge den Bezeichner, und übergeben Sie ihn an FormatMessage, um die Parameterzeichenfolge abzurufen. Ersetzen Sie den Parameter in der Meldungszeichenfolge durch die Parameterzeichenfolge, die FormatMessage zurückgegeben hat.
Einfügezeichenfolgen
Einfügezeichenfolgen sind optionale sprachunabhängige Zeichenfolgen, die zum Ausfüllen von Werten für Platzhalter in Beschreibungszeichenfolgen verwendet werden. Da die Zeichenfolgen nicht lokalisiert sind, ist es wichtig, dass diese Platzhalter nur verwendet werden, um sprachunabhängige Zeichenfolgen wie numerische Werte, Dateinamen, Benutzernamen usw. darzustellen. Die Zeichenfolgenlänge darf 32 Kilobyte bis 1 Zeichen nicht überschreiten.
Vermeiden Sie die Verwendung mehrerer Zeichenfolgen, um eine größere Beschreibung zu erstellen. Eine Einfügezeichenfolge sollte als Daten und nicht als Text behandelt werden. Im folgenden Beispiel sollten pszString1 und pszString2 beispielsweise nicht als Einfügezeichenfolgen für pszDescription verwendet werden.
LPSTR pszString1 = "successfully";
LPSTR pszString2 = "not";
LPSTR pszDescription = "The user was %1 added to the database.";
Im folgenden Beispiel ist es sinnvoll, entweder pszString1 oder pszString2 für die Einfügezeichenfolge in pszDescription zu verwenden.
LPSTR pszString1 = "c:\\testapp1.c";
LPSTR pszString2 = "c:\\testapp2.c";
LPSTR pszDescription = "Access denied. Attempted to open the file %1."