Freigeben über


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 präsentieren. Sie sollten dem Benutzer helfen zu verstehen, was schief gelaufen ist, und schlägt vor, welche Aktionen ausgeführt werden sollen. Leiten Sie die Beschreibung an Benutzer, die ihre eigenen Probleme lösen, nicht bei Administratoren oder Supporttechnikern. 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

Strenge. Der Schweregrad ist wie folgt definiert:

00 - Erfolg
01 - Informational
10 - Warnung
11 – Fehler

C

Kundenbit. Dieses Bit wird wie folgt definiert:

0 – Systemcode
1 - Kundencode

R

Reserviertes Bit.

-Anlage

Einrichtungscode. Dieser Wert kann FACILITY_NULL werden.

Code

Statuscode für die Einrichtung.

Nachrichtendefinitionen

Nachrichten werden in der Ereignisnachrichtendatei definiert. Die Beschreibungszeichenfolgen in der Ereignisnachrichtendatei werden anhand der Ereignis-ID indiziert, sodass die Ereignisanzeige ereignisspezifischen Text für jedes Ereignis basierend auf dem Ereignisbezeichner anzeigen kann. Alle Beschreibungen sind lokalisiert und sprachenabhängig. Weitere Informationen zum Erstellen einer Nachrichtendatei finden Sie unter Nachrichtentextdateien.

Die Beschreibungszeichenfolgen können Platzhalter für einfügezeichenfolgen enthalten, des Formulars %n, wobei %1 die erste Einfügezeichenfolge usw. angibt. Im Folgenden sehen Sie beispielsweise einen 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 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, das auf die Adresse jeder Zeichenfolge im Puffer verweist, wenn Sie die FormatMessage--Funktion aufrufen und die Zeichenfolgen in die Nachricht einfügen.

Die Beschreibungszeichenfolge kann auch Platzhalter für Parameterzeichenfolgen aus der Parameternachrichtendatei enthalten. Die Platzhalter sind das Formular %%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 für %%n Parameter. Wenn die Nachricht einen oder mehrere Parameter enthält, laden Sie den ParameterMessageFile Registrierungswert 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.

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

Vermeiden Sie die Verwendung mehrerer Zeichenfolgen, um eine größere Beschreibung zu erstellen. Eine Einfügezeichenfolge sollte als Daten behandelt werden, nicht als Text. Im folgenden Beispiel sollte "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."