Ereignisbezeichner (Ereignisprotokollierung)

Ereignisbezeichner identifizieren ein bestimmtes Ereignis eindeutig. Jede Ereignisquelle kann ihre eigenen nummerierten Ereignisse und die Beschreibungszeichenfolgen definieren, denen sie in ihrer Nachrichtendatei zugeordnet sind. Ereignisanzeigen können diese Zeichenfolgen dem Benutzer präsentieren. Sie sollten dem Benutzer helfen, zu verstehen, was schief gelaufen ist, und vorschläge, welche Aktionen er ergreifen soll. Richten Sie die Beschreibung an 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 wird wie folgt definiert:

00 – Erfolg
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 werden.

Code

Statuscode für die Einrichtung.

Nachrichtendefinitionen

Nachrichten werden in der Ereignismeldungsdatei definiert. Die Beschreibungszeichenfolgen in der Ereignismeldungsdatei werden per 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 der Form %n enthalten, wobei %1 die erste Einfügezeichenfolge angibt usw. Das folgende Beispiel ist beispielsweise ein Beispieleintrag in der MC-Datei:

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. Das NumStrings-Element der EVENTLOGRECORD-Struktur gibt die Anzahl der Einfügezeichenfolgen an. Das StringOffset-Element der EVENTLOGRECORD-Struktur gibt den Speicherort der ersten Einfügezeichenfolge im Puffer an. Sie können beim Aufrufen der FormatMessage-Funktion ein Array von DWORD_PTRs übergeben, die auf die Adresse der einzelnen Zeichenfolgen im Puffer verweisen, und die Zeichenfolgen werden in die Nachricht eingefügt.

Die Beschreibungszeichenfolge kann auch Platzhalter für Parameterzeichenfolgen aus der Parametermeldungsdatei enthalten. Die Platzhalter haben die Form %%n, wobei %%1 durch die Parameterzeichenfolge mit dem Bezeichner 1 ersetzt wird usw. Es liegt jedoch an Ihnen, die Parameterzeichenfolgen in die Nachrichtenzeichenfolge 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 Nachrichtenzeichenfolge auf %%n-Parameter . Wenn die Nachricht einen oder mehrere Parameter enthält, laden Sie den Registrierungswert ParameterMessageFile für die Quelle. Rufen Sie für jeden Parameter in der Nachrichtenzeichenfolge den Bezeichner ab, und übergeben Sie ihn an FormatMessage , um die Parameterzeichenfolge abzurufen. Ersetzen Sie den Parameter in der Nachrichtenzeichenfolge durch die Parameterzeichenfolge, die FormatMessage zurückgegeben hat.

Einfügen von Zeichenfolgen

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 KB nicht überschreiten – 1 Zeichen.

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 beispielsweise pszString1 und pszString2 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 empfiehlt es sich, 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."