TRACE_PERIODIC_CAPTURE_STATE_INFO struttura (evntrace.h)

Usato con TraceQueryInformation e TraceSetInformation per ottenere o impostare informazioni relative a uno stato di acquisizione periodico.

Sintassi

typedef struct _TRACE_PERIODIC_CAPTURE_STATE_INFO {
  ULONG  CaptureStateFrequencyInSeconds;
  USHORT ProviderCount;
  USHORT Reserved;
} TRACE_PERIODIC_CAPTURE_STATE_INFO, *PTRACE_PERIODIC_CAPTURE_STATE_INFO;

Members

CaptureStateFrequencyInSeconds

Frequenza di acquisizione dello stato in secondi.

ProviderCount

Numero di provider.

Reserved

Riservato per utilizzi futuri.

Commenti

Lo stato di acquisizione periodico è un modo per consentire l'invio routine delle notifiche sullo stato ai provider. Quando questa operazione è abilitata, le notifiche verranno inviate solo alle registrazioni del provider abilitate in precedenza alla sessione corrente. Ogni provider può definire la propria risposta (se disponibile) a una notifica. Si noti che gli eventi registrati dal provider in risposta a una notifica verranno inviati a ogni sessione ETW abilitata dal provider, simile a uno stato di acquisizione richiesto manualmente.

Per usare lo stato di acquisizione periodico:

  1. Allocare un buffer di tipo TRACE_PERIODIC_CAPTURE_STATE_INFO. Le dimensioni del buffer devono essere: sizeof(TRACE_PERIODIC_CAPTURE_STATE_INFO) + (x * sizeof(GUID)), dove x è il numero di provider che si desidera abilitare.
  2. Chiamare TraceQueryInformation usando TracePeriodicCaptureStateInfo per l'enumerazione TRACE_INFO_CLASS . Passare il buffer e le relative dimensioni come parametri TraceInformation e InformationLength di TraceQueryInformation.
  3. Impostare CaptureStateFrequencyInSeconds da TRACE_PERIODIC_CAPTURE_STATE_INFO alla frequenza minima supportata dalla versione di Windows. Questo valore può cambiare in futuro, quindi non è consigliabile scrivere codice rigido. Se la frequenza è inferiore al minimo, la chiamata a TraceSetInformation avrà esito negativo.
  4. Impostare ProviderCount da TRACE_PERIODIC_CAPTURE_STATE_INFO al numero di GUID del provider passati.
  5. Aggiungere i GUID di ogni provider dopo la fine della struttura TRACE_PERIODIC_CAPTURE_STATE_INFO . Questo usa lo spazio aggiuntivo allocato da (x * sizeof(GUID)) dal primo passaggio.
  6. Chiamare TraceSetInformation usando TracePeriodicCaptureStateListInfo dall'enumerazione TRACE_INFO_CLASS .
  7. Per disattivare lo stato di acquisizione periodico, chiamare di nuovo TraceSetInformation con TracePeriodicCaptureStateListInfo dalla TRACE_INFO_CLASS, NULL per TraceInformation e 0 come InformationLength.

Requisiti

   
Intestazione evntrace.h