EVENT_TRACE_PROPERTIES_V2 struttura (evntrace.h)
La struttura EVENT_TRACE_PROPERTIES_V2 contiene informazioni su una sessione di traccia eventi. Questa struttura viene usata con API, ad esempio StartTrace e ControlTrace durante la definizione, l'aggiornamento o l'esecuzione di query sulle proprietà di una sessione.
Nota
Si tratta di una struttura versione 2 estesa dalla struttura EVENT_TRACE_PROPERTIES . Questa struttura è supportata a partire da Windows 10 versione 1703. Se usato con versioni precedenti di Windows, i campi aggiuntivi (ad esempio FilterDesc e V2Options) verranno ignorati.
Sintassi
typedef struct _EVENT_TRACE_PROPERTIES_V2 {
WNODE_HEADER Wnode;
ULONG BufferSize;
ULONG MinimumBuffers;
ULONG MaximumBuffers;
ULONG MaximumFileSize;
ULONG LogFileMode;
ULONG FlushTimer;
ULONG EnableFlags;
union {
LONG AgeLimit;
LONG FlushThreshold;
} DUMMYUNIONNAME;
ULONG NumberOfBuffers;
ULONG FreeBuffers;
ULONG EventsLost;
ULONG BuffersWritten;
ULONG LogBuffersLost;
ULONG RealTimeBuffersLost;
HANDLE LoggerThreadId;
ULONG LogFileNameOffset;
ULONG LoggerNameOffset;
union {
struct {
ULONG VersionNumber : 8;
} DUMMYSTRUCTNAME;
ULONG V2Control;
} DUMMYUNIONNAME2;
ULONG FilterDescCount;
PEVENT_FILTER_DESCRIPTOR FilterDesc;
union {
struct {
ULONG Wow : 1;
ULONG QpcDeltaTracking : 1;
ULONG LargeMdlPages : 1;
ULONG ExcludeKernelStack : 1;
} DUMMYSTRUCTNAME;
ULONG64 V2Options;
} DUMMYUNIONNAME3;
} EVENT_TRACE_PROPERTIES_V2, *PEVENT_TRACE_PROPERTIES_V2;
Members
Wnode
Struttura WNODE_HEADER . È necessario specificare i membri BufferSize, Flag e Guid . Facoltativamente, è possibile specificare il membro ClientContext .
Importante
Per poter riconoscere i campi della versione 2 , ad esempio FilterDesc e V2Options, è necessario impostare il WNODE_FLAG_VERSIONED_PROPERTIES
flag in Wnode.Flags
.
BufferSize
Kilobyte di memoria allocata per ogni buffer sessione di traccia eventi. La dimensione minima del buffer è 4 (4 KB). La dimensione massima del buffer è 16384 (16 MB). La maggior parte delle sessioni di traccia deve usare una dimensione del buffer di 64 KB o meno per evitare la perdita di memoria e spazio su disco. Prima di Windows 8: la dimensione massima del buffer è 1024 (1 MB).
Le dimensioni del buffer più piccole riducono l'utilizzo della memoria sessione. Dimensioni più grandi del buffer (fino a 64 KB) supportano la raccolta di eventi più grandi: ETW non può raccogliere eventi superiori alle dimensioni del buffer e non può raccogliere eventi superiori a 64 KB indipendentemente dalle dimensioni del buffer. Negli scenari che coinvolgono una velocità effettiva dei dati estremamente elevata, le dimensioni del buffer più grandi possono ridurre il sovraccarico della CPU.
- Una sessione con piccoli eventi e una frequenza di eventi ridotta (alcuni KB/s) devono usare una dimensione di buffer ridotta (da 4 KB a 16 KB).
- Una sessione con piccoli eventi e una frequenza di eventi moderata devono usare una dimensione del buffer media (da 16 KB a 32 KB).
- Una sessione con eventi di grandi dimensioni o una frequenza di eventi elevata (alcuni MB/s) deve usare una dimensione del buffer di grandi dimensioni (da 64 KB a 128 KB).
- In rari casi, quando una grande quantità di memoria deve essere riservata per una traccia di diagnostica con centinaia di megabyte di dati al secondo, una grande dimensione del buffer (da 256 KB a 1024 KB) può ridurre il sovraccarico della CPU.
ETW può modificare il buffersize richiesto verso l'alto in determinati scenari. Ad esempio, quando si scrive un file di traccia in un disco, ETW può aumentare le dimensioni del buffer a più dimensioni del blocco fisico del disco.
Importante
BufferSize è uno dei parametri più importanti per una sessione di traccia. Buffer di grandi dimensioni in genere sprecare memoria e spazio su disco. Le sessioni di traccia con buffer di grandi dimensioni (256 KB o più grandi) devono essere usate solo per indagini diagnostiche o test, non per la traccia di produzione.
Suggerimento
Non usare BufferSize per controllare l'utilizzo della memoria della sessione di traccia. Selezionare invece le dimensioni del buffer in base alle dimensioni degli eventi e alla frequenza degli eventi della sessione, quindi usare i parametri MinimumBuffers e MaximumBuffers per modificare l'utilizzo della memoria sessione.
MinimumBuffers
Numero minimo di buffer riservati per il pool di buffer della sessione di traccia.
ETW può modificare questo valore in determinati scenari.
- Se la modalità di registrazione include il
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING
flag, ETW riserva almeno 2 buffer. - Se la modalità di registrazione non include il
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING
flag, ETW riserva almeno 2 buffer per ogni processore logico. - Se questo valore è maggiore di un limite determinato da ETW, ETW può ridurlo al limite per evitare un utilizzo eccessivo della memoria.
Per le tracce in modalità file e in tempo reale con frequenza di eventi moderata, la maggior parte degli utenti deve ridurre al minimo l'utilizzo della memoria impostando MinimumBuffers su 0 o su un minimo minimo (ad esempio 4 o 8), consentendo a ETW di modificare il valore verso l'alto in base al numero di processori. ETW riserva il numero minimo (modificato) di buffer al momento dell'avvio della traccia. Se i buffer vengono riempiti più rapidamente di quanto possano essere elaborati, ETW allocherà i buffer di aggiunta, fino al numero specificato da MaximumBuffers.
Per le tracce di buffering (circolare in memoria), gli utenti devono impostare il parametro MinimumBuffers in base alla quantità totale di memoria che si vuole riservare per la sessione. Questa operazione viene in genere calcolata in base alla frequenza di eventi prevista e alla quantità di tempo che si vuole coprire la traccia. Ad esempio, se si prevede una velocità dei dati di 16 KB al secondo e si vuole che la traccia registri almeno 60 secondi di dati, è necessario 960 KB. Supponendo una dimensione del buffer di 32 KB, si imposta MinimumBuffers su 30 (totale 960 KB / 32 KB per buffer = 30 buffer). ETW riserva il numero minimo (modificato) di buffer al momento dell'avvio della traccia. Quando tutti i buffer vengono riempiti, ETW ririuserà il buffer riempito meno recente per nuovi eventi. Si noti che ETW non allocherà buffer aggiuntivi (ETW ignora MaximumBuffers per le tracce in modalità buffering).
MaximumBuffers
Numero massimo di buffer da allocare per il pool di buffer della sessione di traccia.
ETW può modificare questo valore in determinati scenari.
- Se questo valore è minore del valore corretto di MinimumBuffers, ETW può aumentarlo a un valore adatto uguale o maggiore di MinimumBuffers.
- Se questo valore è maggiore di un limite determinato da ETW, ETW può ridurlo al limite.
La maggior parte degli utenti deve avviare l'ottimizzazione della sessione impostando MinimumBuffers e MaximumBuffers sullo stesso valore. È quindi possibile aumentare il valore di MaximumBuffers se la traccia elimina gli eventi durante i picchi di frequenza degli eventi.
Nota
ETW ignora questo campo per le sessioni in modalità buffering (sessioni che includono la modalità EVENT_TRACE_BUFFERING_MODE
di registrazione). Le sessioni in modalità buffer allocano sempre MinimumBuffer all'inizio della raccolta di traccia e non allocano mai buffer aggiuntivi.
MaximumFileSize
Dimensioni massime del file utilizzato per registrare eventi, in megabyte o zero per nessun limite di dimensioni. In genere, si usa questo membro per limitare le dimensioni di un file di log circolare quando si imposta LogFileMode su EVENT_TRACE_FILE_MODE_CIRCULAR
. Questo membro deve essere impostato su un valore diverso da zero se LogFileMode contiene EVENT_TRACE_FILE_MODE_PREALLOCATE
o EVENT_TRACE_FILE_MODE_CIRCULAR
EVENT_TRACE_FILE_MODE_NEWFILE
.
Se si usa l'unità di sistema (l'unità che contiene il sistema operativo) per la registrazione, ETW verifica la presenza di un ulteriore 200 MB di spazio su disco, indipendentemente dal fatto che si usi il parametro di dimensioni massime del file. Pertanto, se si specifica 100 MB come dimensione massima del file di traccia nell'unità di sistema, è necessario disporre di 300 MB di spazio libero nell'unità.
LogFileMode
Flag di registrazione per la sessione di traccia eventi. Questo membro consente di specificare se si desidera che gli eventi scritti in un buffer circolare in memoria, un file di log o un consumer in tempo reale. È anche possibile usare questo membro per specificare altre caratteristiche della sessione, ad esempio che la sessione è una sessione di logger privata. Per un elenco di flag possibili, vedere Costanti della modalità di registrazione.
Non specificare la registrazione in tempo reale a meno che un consumer in tempo reale non sia pronto per l'utilizzo degli eventi. Eventi di buffer ETW per sessioni in tempo reale quando non sono presenti consumer in tempo reale. per la sessione. Una sessione in tempo reale senza consumatori perderà le risorse del sistema. Si noti che questo buffering è limitato. Se il limite viene raggiunto, i nuovi eventi verranno ignorati e le funzioni di registrazione hanno esito negativo con STATUS_LOG_FILE_FULL
. Prima di Windows Vista: Se non è presente alcun consumer in tempo reale, gli eventi vengono eliminati e la registrazione continua.
Se un consumer inizia a elaborare eventi in tempo reale, gli eventi nel file di riproduzione vengono usati prima. Dopo l'utilizzo di tutti gli eventi nel file di riproduzione, la sessione inizierà a segnalare nuovi eventi.
FlushTimer
Con quale frequenza, in secondi, viene scaricato qualsiasi buffer di traccia non vuoto.
- Per le sessioni in modalità file, il tempo minimo di scaricamento è 1 secondo. L'impostazione di FlushTimer su 0 disabilita gli scaricamenti basati sul tempo (lo scaricamento si verifica quando il buffer viene riempito, quando la sessione viene arrestata o quando la sessione viene scaricata in modo esplicito). La maggior parte delle tracce in modalità file deve impostare FlushTimer su 0 per evitare spazio sprecato nel file di traccia. È possibile impostare il timer su un valore diverso da zero se è possibile che la traccia non venga chiusa, ad esempio se si desidera ottenere eventi anche se il sistema si arresta in modo anomalo.
- Per le sessioni in tempo reale, il tempo minimo di scaricamento è 1 secondo. Se FlushTimer è impostato su 0, verrà usato un timeout predefinito di 1 secondo. Le sessioni in tempo reale devono impostare il timer di scaricamento in base alla velocità di ricezione dei dati. Si noti che un valore timer superiore ridurrà il sovraccarico della CPU per la traccia. La maggior parte delle tracce in tempo reale deve iniziare con un timer di 5 o 10 secondi e ottimizzare il timer in base alla necessità.
- Per le sessioni con buffer (circolare in memoria), FlushTimer non viene usato. I dati di traccia verranno scaricati solo su richiesta(ad esempio scaricati in un file tramite ControlTrace).
EnableFlags
Una sessione del logger di sistema può impostare EnableFlags per indicare quali eventi SystemTraceProvider devono essere inclusi nella traccia.
Nota
EnableFlags è valido solo per i loggger di sistema, ovvero le sessioni di traccia avviate usando il EVENT_TRACE_SYSTEM_LOGGER_MODE
flag della modalità logger, il KERNEL_LOGGER_NAME
nome della sessione, il GUID della sessione o il SystemTraceControlGuid
GUID della GlobalLoggerGuid
sessione.
Questo membro può contenere uno o più dei valori seguenti. Oltre agli eventi specificati, a meno che non si specifica EVENT_TRACE_FLAG_NO_SYSCONFIG
, il logger registra anche gli eventi di configurazione hardware in Windows XP e gli eventi di configurazione del sistema in Windows Server 2003 o versioni successive.
EVENT_TRACE_FLAG_ALPC (0x00100000 )
Abilita i tipi di evento ALPC .
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_CSWITCH (0x00000010 )
Abilita il tipo di evento Thread seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_DBGPRINT (0x00040000)
Consente di convertire le chiamate DbgPrint e DbgPrintEx in eventi ETW.
EVENT_TRACE_FLAG_DISK_FILE_IO (0x00000200)
Abilita il tipo di evento FileIo seguente (è necessario abilitare anche EVENT_TRACE_FLAG_DISK_IO):
EVENT_TRACE_FLAG_DISK_IO (0x00000100)
Abilita i tipi di evento DiskIo seguenti:
EVENT_TRACE_FLAG_DISK_IO_INIT (0x00000400)
Abilita il tipo di evento DiskIo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_DISPATCHER (0x00000800)
Abilita il tipo di evento Thread seguente:
Questo valore è supportato in Windows 7, Windows Server 2008 R2 e versioni successive.
EVENT_TRACE_FLAG_DPC (0x00000020)
Abilita il tipo di evento PerfInfo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_DRIVER (0x00800000 )
Abilita i tipi di evento DiskIo seguenti:
- DriverCompleteRequest
- DriverCompleteRequestReturn
- DriverCompletionRoutine
- DriverMajorFunctionCall
- DriverMajorFunctionReturn
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_FILE_IO (0x02000000)
Abilita i tipi di evento FileIo seguenti:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_FILE_IO_INIT (0x04000000)
Abilita il tipo di evento FileIo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_IMAGE_LOAD (0x00000004)
Abilita il tipo di evento Image seguente:
EVENT_TRACE_FLAG_INTERRUPT (0x00000040)
Abilita il tipo di evento PerfInfo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_JOB (0x00080000)
Questo valore è supportato in Windows 10
EVENT_TRACE_FLAG_MEMORY_HARD_FAULTS (0x00002000)
Abilita il tipo di evento PageFault_V2 seguente:
EVENT_TRACE_FLAG_MEMORY_PAGE_FAULTS (0x00001000)
Abilita il tipo di evento PageFault_V2 seguente:
EVENT_TRACE_FLAG_NETWORK_TCPIP (0x00010000)
EVENT_TRACE_FLAG_NO_SYSCONFIG (0x10000000)
Non eseguire un rundown della configurazione di sistema.
Questo valore è supportato in Windows 8, Windows Server 2012 e versioni successive.
EVENT_TRACE_FLAG_PROCESS (0x00000001)
Abilita il tipo di evento Process seguente:
EVENT_TRACE_FLAG_PROCESS_COUNTERS (0x00000008 )
Abilita il tipo di evento Process_V2 seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_PROFILE (0x01000000)
Abilita il tipo di evento PerfInfo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_REGISTRY (0x00020000)
Abilita i tipi di eventi del Registro di sistema .
EVENT_TRACE_FLAG_SPLIT_IO (0x00200000)
Abilita i tipi di evento SplitIo .
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_SYSTEMCALL (0x00000080)
Abilita il tipo di evento PerfInfo seguente:
Questo valore è supportato in Windows Vista e versioni successive.
EVENT_TRACE_FLAG_THREAD (0x00000002)
Abilita il tipo di evento Thread seguente:
EVENT_TRACE_FLAG_VAMAP (0x00008000)
Abilita il tipo di evento map e unmap (esclusi i file di immagine).
Questo valore è supportato in Windows 8, Windows Server 2012 e versioni successive.
EVENT_TRACE_FLAG_VIRTUAL_ALLOC (0x00004000)
Abilita il tipo di evento PageFault_V2 seguente:
Questo valore è supportato in Windows 7, Windows Server 2008 R2 e versioni successive.
DUMMYUNIONNAME
Non usato.
DUMMYUNIONNAME.AgeLimit
Non usato.
Windows 2000: Ritardo di tempo prima che i buffer inutilizzati vengano liberati, in minuti. Il valore predefinito è 15 minuti.
DUMMYUNIONNAME.FlushThreshold
NumberOfBuffers
Nell'output il numero di buffer allocati per il pool di buffer della sessione di traccia eventi.
FreeBuffers
In output il numero di buffer allocati ma inutilizzati nel pool di buffer della sessione di traccia eventi.
EventsLost
In output il numero di eventi che non sono stati registrati.
BuffersWritten
In output il numero di buffer scritti.
LogBuffersLost
Nell'output il numero di buffer che non è stato possibile scrivere nel file di log.
RealTimeBuffersLost
In output il numero di buffer che non è stato possibile recapitare in tempo reale al consumer.
LoggerThreadId
Nell'output l'identificatore del thread per la sessione di traccia eventi.
LogFileNameOffset
Offset (in byte) dall'inizio della memoria allocata della struttura all'inizio della stringa con terminazione nul contenente il nome del file di log.
Il nome del file in genere ha un'estensione .etl
. Tutte le cartelle nel percorso devono già esistere (ETW non creerà cartelle per l'utente). Il percorso può essere relativo, assoluto, locale o remoto. Le variabili di ambiente nel percorso non verranno espanse. L'utente deve disporre dell'autorizzazione per scrivere nella cartella.
Il nome del file di log è limitato a 1.024 caratteri. Se si imposta LogFileMode su EVENT_TRACE_PRIVATE_LOGGER_MODE o EVENT_TRACE_FILE_MODE_NEWFILE, assicurarsi di riservare memoria sufficiente per includere l'identificatore di processo che verrà aggiunto al nome file per le sessioni dei loggger privati e il numero sequenziale aggiunto ai file di log creati usando la nuova modalità di log file.
Se non si desidera registrare gli eventi in un file di log, ad esempio se si specifica solo EVENT_TRACE_REAL_TIME_MODE , impostare LogFileNameOffset su 0. Se si specifica solo la registrazione in tempo reale e si specifica anche un offset con un nome di file di log valido, ETW userà il nome del file di log per creare un file di log sequenziale e registrare gli eventi nel file di log oltre a inviare gli eventi ai consumer in tempo reale. ETW crea anche il file di log sequenziale se LogFileMode è 0 e viene fornito un offset con un nome di file di log valido.
Se si desidera registrare gli eventi in un file di log, è necessario riservare memoria sufficiente per questa struttura per includere il nome del file di log e il nome della sessione seguendo la struttura. Il nome del file di log deve seguire il nome della sessione in memoria. Vedere le osservazioni per un esempio.
I file di traccia vengono creati usando il descrittore di sicurezza predefinito, ovvero che il file di log avrà lo stesso elenco di controllo di accesso della directory padre. Se si vuole accedere ai file con restrizioni, creare una directory padre con gli elenchi di controllo di accesso appropriati.
LoggerNameOffset
Offset (in byte) dall'inizio della memoria allocata della struttura all'inizio della stringa con terminazione nul che contiene il nome della sessione.
Importante
Usare un nome descrittivo per la sessione in modo che la proprietà e l'utilizzo della sessione possano essere determinate dal nome della sessione. Non usare un GUID o un altro valore non descrittivo. Non aggiungere cifre casuali per rendere univoco il nome della sessione. Le sessioni ETW sono una risorsa limitata in modo che il componente non inizi più sessioni. Se la sessione del componente è già in esecuzione all'avvio del componente, il componente deve pulire la sessione orfana anziché creare una seconda sessione.
Il nome della sessione è limitato a 1.024 caratteri. Il nome della sessione è senza distinzione tra maiuscole e minuscole. Il sistema non avvierà una nuova sessione se un'altra sessione con lo stesso nome è già in esecuzione.
Windows 2000: I nomi di sessione sono distinzione tra maiuscole e minuscole. Di conseguenza, le sessioni con nomi diversi solo nel caso siano consentite. Tuttavia, per ridurre la confusione, è necessario assicurarsi che i nomi delle sessioni siano univoci.
DUMMYUNIONNAME2
Non usato.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME
Non usato.
DUMMYUNIONNAME2.DUMMYSTRUCTNAME.VersionNumber
Versione della struttura. Questa opzione deve essere impostata su "2".
Nota
Questo campo e tutti i campi successivi verranno riconosciuti solo se il campo Wnode.Flags include il WNODE_FLAG_VERSIONED_PROPERTIES
flag e il runtime ETW sottostante riconosce la nuova versione della struttura (Windows 10 versione 1703 e successiva).
DUMMYUNIONNAME2.V2Control
Non usato.
FilterDescCount
Numero di filtri a cui punta FilterDesc . Questo deve essere zero a meno che non si configura un logger privato a livello di sistema.
FilterDesc
Tipi di filtro EVENT_FILTER_DESCRIPTOR supportati per i loggger privati a livello di sistema: EVENT_FILTER_TYPE_EXECUTABLE_NAME e EVENT_FILTER_TYPE_PID
Puntatore a una matrice di strutture EVENT_FILTER_DESCRIPTOR che puntano ai dati del filtro. Il numero di elementi nella matrice viene specificato nel membro FilterDescCount . Può essere presente un solo filtro per un tipo di filtro specifico, come specificato dal membro Type della struttura EVENT_FILTER_DESCRIPTOR .
Ciò deve essere NULL a meno che non si configuri un logger privato a livello di sistema.
DUMMYUNIONNAME3
Non usato.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME
Non usato.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.Wow
Non usato.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.QpcDeltaTracking
Non usato.
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.LargeMdlPages
DUMMYUNIONNAME3.DUMMYSTRUCTNAME.ExcludeKernelStack
DUMMYUNIONNAME3.V2Options
Non usato.
Commenti
Questa struttura si comporta in modo analogo a EVENT_TRACE_PROPERTIES con alcune eccezioni.
L'inizio della struttura è definito esattamente come EVENT_TRACE_PROPERTIES per consentire a questa nuova struttura di essere compatibile con i sistemi che eseguono versioni di Windows prima di Windows 10, versione 1703 e verrà considerato come EVENT_TRACE_PROPERTIES.
Quando si usa questa struttura, assicurarsi di includere WNODE_FLAG_VERSIONED_PROPERTIES
in Wnode.Flags per indicare che si tratta della struttura versione-2.
Si noti che i filtri passati a StartTrace e ControlTrace tramite questa struttura hanno la stessa semantica dei filtri usati dalla funzione EnableTraceEx2 .
Quando si alloca la memoria per questa struttura, è necessario allocare memoria sufficiente per includere il nome della sessione e il nome del file di log seguendo la struttura. Il nome della sessione deve venire prima del nome del file di log in memoria. È necessario copiare il nome del file di log nell'offset, ma non copiare il nome della sessione nell'offset. La funzione StartTrace copia il nome.
Assicurarsi di inizializzare la memoria per questa struttura su zero prima di impostare i membri. Ad esempio:
typedef struct EventTracePropertyData2 {
EVENT_TRACE_PROPERTIES_V2 Props;
WCHAR LoggerName[128];
WCHAR LogFileName[1024];
} EventTracePropertyData2;
EventTracePropertyData2 data = { 0 };
data.Props.Wnode.BufferSize = sizeof(data);
data.Props.Wnode.Flags = WNODE_FLAG_TRACED_GUID | WNODE_FLAG_VERSIONED_PROPERTIES;
data.Props.LogFileNameOffset = offsetof(EventTracePropertyData2, LogFileName);
data.Props.LoggerNameOffset = offsetof(EventTracePropertyData2, LoggerName);
Gli eventi dei provider vengono scritti nei buffer di una sessione. Quando un buffer in un file o una sessione in tempo reale è pieno (o al termine di FlushTimer), la sessione scarica il buffer scrivendo gli eventi in un file di log, recapitandoli a un consumer in tempo reale o entrambi. Se i buffer di una sessione vengono riempiti più velocemente di quanto possano essere scaricati, i nuovi buffer vengono allocati e aggiunti al pool di buffer della sessione, fino a MaximumBuffers. Oltre questo limite, la sessione elimina gli eventi in ingresso fino a quando non diventa disponibile un buffer. Ogni sessione mantiene un record del numero di eventi ignorati (vedere il membro EventsLost ).
ETW non libera i buffer inutilizzati.
Windows 2000: ETW libera i buffer inutilizzati in base al valore del membro AgeLimit .
Per visualizzare le statistiche della sessione, ad esempio EventsLost durante l'esecuzione della sessione, chiamare la funzione ControlTrace e impostare il parametro ControlCode su EVENT_TRACE_CONTROL_QUERY
.
Requisiti
Client minimo supportato | Windows 10 [solo app desktop] |
Server minimo supportato | Windows Server 2016 [solo app desktop] |
Intestazione | evntrace.h |