Condividi tramite


Utilizzo di eventi (traccia eventi)

I consumer di traccia eventi possono elaborare gli eventi da uno o più provider. I consumer possono elaborare eventi da un file di log o in tempo reale. È possibile utilizzare gli eventi in tempo reale solo se il controller specifica la modalità di registrazione in tempo reale per la sessione. Per motivi di prestazioni, l'elaborazione in tempo reale non è consigliata prima di Windows Vista.

Per specificare la sessione di traccia da cui si desidera elaborare gli eventi, utilizzare la struttura EVENT_TRACE_LOGFILE . È necessario inizializzare una copia di questa struttura per ogni file di log o sessione in tempo reale che si desidera elaborare.

Per utilizzare gli eventi da un file di log, impostare il membro LogFileName sul nome del file di log. Per utilizzare gli eventi dalla sessione in tempo reale, impostare il membro LoggerName sul nome della sessione. Questa struttura viene usata anche per specificare il callback BufferCallback e il callback EventCallback o EventRecordCallback usati per elaborare gli eventi.

  • EventRecordCallback: riceve ed elabora tutti gli eventi (incluso l'evento di intestazione) da uno o più file di log e da una sessione in tempo reale. Questo callback viene implementato se si usano le funzioni helper per i dati di traccia per analizzare i dati dell'evento o recuperare i metadati relativi all'evento.
  • EventCallback: riceve ed elabora tutti gli eventi (incluso l'evento di intestazione) da uno o più file di log e da una sessione in tempo reale.
  • BufferCallback: riceve ed elabora informazioni di riepilogo sul buffer corrente, ad esempio gli eventi persi. ETW chiama il callback dopo aver recapitato tutti gli eventi nel buffer al consumer. Il consumer può anche usare questo callback per annullare l'elaborazione degli eventi; Tuttavia, se si utilizzano eventi in tempo reale, ETW recapita gli eventi fino a quando il controller non arresta la sessione.

Dopo aver definito una o più sessioni di traccia, chiamare la funzione OpenTrace per ogni sessione di traccia che si desidera elaborare; è possibile elaborare gli eventi da uno o più file di log, ma da una sola sessione in tempo reale. Si passa quindi l'elenco di handle di sessione di traccia restituiti da OpenTrace alla funzione ProcessTrace . La funzione ProcessTrace combina gli eventi, li ordina in ordine cronologico e quindi li recapita ai callback uno alla volta. Gli eventi possono essere filtrati in modo da includere solo quelli che rientrano in un intervallo di tempo specifico usando i parametri StartTime e EndTime . La funzione ProcessTrace blocca il thread finché il consumer elabora tutti gli eventi nelle sessioni di traccia, BufferCallback restituisce FALSE oppure si chiama CloseTrace.

Prima di Windows Vista: È possibile chiamare CloseTrace solo dopo la restituzione di ProcessTrace .

Per un esempio che illustra come utilizzare gli eventi pubblicati usando un manifesto, MOF o file TMF, vedere Recupero dei dati degli eventi tramite TDH. Si noti che, a partire da Windows Vista, è consigliabile usare le funzioni TDH (Trace Data Helper) per utilizzare gli eventi.

Per un esempio che illustra come utilizzare gli eventi pubblicati tramite MOF, vedere Recupero dei dati degli eventi tramite MOF.