Condividi tramite


Identificatori di evento (registrazione eventi)

Gli identificatori di evento identificano in modo univoco un determinato evento. Ogni 'origine evento può definire i propri eventi numerati e le stringhe di descrizione a cui viene eseguito il mapping nel file di messaggio. I visualizzatori di eventi possono presentare queste stringhe all'utente. Dovrebbero aiutare l'utente a capire cosa è andato storto e suggerire le azioni da intraprendere. Indirizzare la descrizione agli utenti che risolvono i propri problemi, non agli amministratori o ai tecnici di supporto. Per altre informazioni, vedere linee guida per i messaggi di errore .

Formato

Il diagramma seguente illustra il formato di un identificatore di evento.

  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

Severità. La gravità è definita come segue:

00 - Esito positivo
01 - Informativo
10 - Avviso
11 - Errore

C

Bit del cliente. Questo bit è definito come segue:

0 - Codice di sistema
1 - Codice cliente

R

Bit riservato.

Struttura

Codice della struttura. Questo valore può essere FACILITY_NULL.

codice

Codice di stato per la struttura.

Definizioni dei messaggi

I messaggi vengono definiti nel file dei messaggi dell'evento. Le stringhe di descrizione nel file del messaggio di evento vengono indicizzate in base all'identificatore dell'evento, consentendo al Visualizzatore eventi di visualizzare testo specifico dell'evento per qualsiasi evento in base all'identificatore dell'evento. Tutte le descrizioni sono localizzate e dipendenti dalla lingua. Per altre informazioni sulla creazione di un file di messaggio, vedere file di testo del messaggio.

Le stringhe di descrizione possono contenere segnaposto stringa di inserimento, del modulo %n, dove %1 indica la prima stringa di inserimento e così via. Ad esempio, di seguito è riportata una voce di esempio nel file mc:

MessageId=0x4
Severity=Error
Facility=System
SymbolicName=MSG_CMD_DELETE
Language=English
File %1 contains %2, which is in error.
.

In questo caso, il buffer restituito da ReadEventLog contiene stringhe di inserimento. Il membro NumStrings della strutturaEVENTLOGRECORDindica il numero di stringhe di inserimento. Il stringOffset membro della struttura EVENTLOGRECORD indica la posizione della prima stringa di inserimento nel buffer. È possibile passare una matrice di DWORD_PTRs che puntano all'indirizzo di ogni stringa nel buffer quando si chiama la funzione FormatMessage e le stringhe verranno inserite nel messaggio.

La stringa di descrizione può contenere anche segnaposto per le stringhe di parametri dal file di messaggio dei parametri. I segnaposto sono del formato %%n, dove %%1 viene sostituito dalla stringa di parametro con l'identificatore 1 e così via. Tuttavia, è necessario inserire le stringhe di parametro nella stringa del messaggio che FormatMessage restituisce. In genere, si chiama FormatMessage per ottenere la stringa di messaggio per l'evento. Si analizza quindi la stringa del messaggio per %%n parametri. Se il messaggio contiene uno o più parametri, caricare il valore ParameterMessageFile del Registro di sistema per l'origine. Per ogni parametro nella stringa del messaggio, ottenere l'identificatore e passarlo a FormatMessage per ottenere la stringa del parametro. Sostituire il parametro nella stringa del messaggio con la stringa di parametro che FormatMessage restituito.

Stringhe di inserimento

Le stringhe di inserimento sono stringhe facoltative indipendenti dal linguaggio usate per inserire i valori per i segnaposto nelle stringhe di descrizione. Poiché le stringhe non sono localizzate, è fondamentale usare questi segnaposto solo per rappresentare stringhe indipendenti dalla lingua, ad esempio valori numerici, nomi di file, nomi utente e così via. La lunghezza della stringa non deve superare i 32 kilobyte - 1 caratteri.

Evitare di usare più stringhe per creare una descrizione più ampia. Una stringa di inserimento deve essere considerata come dati, non come testo. Nell'esempio seguente, ad esempio, pszString1 e pszString2 non devono essere usati come stringhe di inserimento per pszDescription.

LPSTR pszString1 = "successfully"; 
LPSTR pszString2 = "not"; 
LPSTR pszDescription = "The user was %1 added to the database.";

Nell'esempio seguente è opportuno usare pszString1 o pszString2 per la stringa di inserimento in pszDescription.

LPSTR pszString1 = "c:\\testapp1.c"; 
LPSTR pszString2 = "c:\\testapp2.c"; 
LPSTR pszDescription = "Access denied. Attempted to open the file %1."