Condividi tramite


Come si definiscono i tipi di dati personalizzati?

Event Tracing for Windows (ETW) definisce diversi tipi semplici e complessi da usare nelle funzioni di traccia. Questi tipi vengono dichiarati nel file Defaultwpp.ini. Tuttavia, è possibile creare tipi di dati personalizzati.

Si usa un tipo di dati personalizzato quando si desidera dichiarare le variabili e usare termini significativi, anziché integer, per descrivere il valore delle variabili.

Ad esempio, la variabile DiskState contiene lo stato del disco. Di seguito sono riportati i valori di DiskState:

DiskOffline = 0
DiskOnline = 1
DiskFailed = 2
DiskStalled = 3

Invece di leggere "DiskState=2" in un messaggio di traccia e quindi dover cercare il significato di 2, è possibile definire un tipo personalizzato denominato DiskState, per ottenere un messaggio di traccia che indica " DiskState is Failed".

Creazione di un tipo di dati personalizzato

Per creare un tipo di dati personalizzato, completare la procedura seguente:

  1. Creare un file di configurazione locale con il nome file che ha l'estensione .ini, come localwpp.ini. Non è possibile aggiungere un tipo personalizzato a un'intestazione o a un file di origine.

  2. Usare la costante TYPEMACRO per definire il tipo di dati personalizzato.

  3. Identificare i dati di configurazione nelle origini o nel file di intestazione.

  4. Aggiungere il parametro -ini alla macro RUN_WPP nel file di origine.

  5. Usare il tipo di dati personalizzato nei messaggi di traccia.

Definizione di una costante TYPEMACRO

Definire una costante TYPEMACRO con il formato seguente. I valori vengono definiti come un elenco di stringhe.

TYPEMACRO(Type,{ItemListLong | ItemListShort | ItemListByteShort | ItemListByteLong},(Value1,Value2...));

dove:

ItemListShort
Intero con segno a 16 bit.

ItemListLong
Intero (32 bit) con o senza segno.

ItemSetByteShort
Valore a 16 bit con segno.

ItemSetByteLong
Valore numerico a 32 bit con segno o senza segno.

Per esempio:

TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));

Identificazione dei dati di configurazione

Se è stato aggiunto il tipo di dati personalizzato a un file con altro codice, ad esempio un file di origine o un file di intestazione, usare le istruzioni begin_wpp config e end_wpp per identificare i dati di configurazione nel file. Per esempio:

// begin_wpp config
    //TYPEMACRO(DiskState,ItemListLong(DiskOffline,DiskOnline,DiskFailed,DiskStalled));
// end_wpp

Se è stato aggiunto il tipo di dati personalizzato a un file di configurazione locale, non sono necessarie le istruzioni begin_wpp config e end_wpp .

Aggiungere il parametro -ini

Quando si crea un file di configurazione locale per un tipo personalizzato, è necessario aggiungere il parametro -ini all'istruzione RUN_WPP che richiama il preprocessore WPP.

Il parametro -ini indica a ETW di cercare i dati di configurazione nei file di configurazione (.ini), oltre a usare Defaultwpp.ini. Per esempio:

RUN_WPP -km -ini:localwpp.ini

Importante

Non è necessario specificare l'opzione -km nella direttiva RUN_WPP per le applicazioni in modalità utente o le librerie a collegamento dinamico (DLL).

Uso del tipo di dati personalizzato

Dopo aver definito un tipo di dati personalizzato, è possibile usarlo nei messaggi di traccia. Precedere il nome del tipo con un segno di percentuale (%) e racchiuderlo con punti esclamativi (!). Per esempio:

DoTraceMessage(INFO,"Disk State is %!diskstate!",DiskState); 

Il messaggio di traccia risultante usa la costante definita per rappresentare il valore:

DiskState is Offline.