Costanti della modalità di registrazione

Le costanti seguenti rappresentano le modalità di registrazione possibili per una sessione di traccia eventi.

Le costanti vengono utilizzate nei membri LogFileMode delle strutture di EVENT_TRACE_LOGFILE, EVENT_TRACE_PROPERTIES e TRACE_LOGFILE_HEADER . Queste costanti sono definite nel file di intestazione Evntrace.h .

Mode Descrizione
EVENT_TRACE_FILE_MODE_NONE (0x00000000) Uguale a EVENT_TRACE_FILE_MODE_SEQUENTIAL senza dimensioni massime del file specificate.
EVENT_TRACE_FILE_MODE_SEQUENTIAL (0x00000001 ) Scrive gli eventi in un file di log in sequenza; si arresta quando il file raggiunge le dimensioni massime. Non usare con EVENT_TRACE_FILE_MODE_CIRCULAR o EVENT_TRACE_FILE_MODE_NEWFILE.
EVENT_TRACE_FILE_MODE_CIRCULAR (0x00000002) Scrive gli eventi in un file di log. Dopo che il file raggiunge le dimensioni massime, gli eventi meno recenti vengono sostituiti con gli eventi in ingresso. Si noti che il contenuto del file di log circolare potrebbe non essere ordinato nei computer multiprocessore.
Non usare con EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILE o EVENT_TRACE_FILE_MODE_SEQUENTIAL.
EVENT_TRACE_FILE_MODE_APPEND (0x00000004) Aggiunge eventi a un file di log sequenziale esistente. Se il file non esiste, viene creato. Utilizzare solo se si specifica l'ora di sistema per la risoluzione dell'orologio; in caso contrario, ProcessTrace restituirà eventi con timestamp non corretti. Quando si usa EVENT_TRACE_FILE_MODE_APPEND, i valori per BufferSize, NumberOfProcessors e ClockType devono essere specificati in modo esplicito e devono essere uguali sia nel logger che nel file da accodare.
Non usare con EVENT_TRACE_REAL_TIME_MODE, EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_NEWFILE o EVENT_TRACE_PRIVATE_LOGGER_MODE.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_FILE_MODE_NEWFILE (0x00000008) Passa automaticamente a un nuovo file di log quando il file raggiunge le dimensioni massime. È necessario impostare il membro MaximumFileSize di EVENT_TRACE_PROPERTIES . Il nome file specificato deve essere una stringa formattata, ad esempio la stringa contiene %d, ad esempio c:\test%d.etl. Ogni volta che viene creato un nuovo file, viene incrementato un contatore e viene usato il relativo valore, la stringa formattata viene aggiornata e la stringa risultante viene usata come nome file.
Questa opzione non è consentita per le sessioni di traccia eventi privati e non deve essere usata per le sessioni del logger del kernel NT.
Non usare con EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_APPEND o EVENT_TRACE_FILE_MODE_SEQUENTIAL.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_FILE_MODE_PREALLOCATE(0x00000020) Riserva EVENT_TRACE_PROPERTIES. MaximumFileSize byte di spazio su disco per il file di log in anticipo. Il file occupa l'intero spazio durante la registrazione, sia per i file di log circolari che per i file di log sequenziali. Quando si arresta la sessione, il file di log viene ridotto alle dimensioni necessarie. È necessario impostare EVENT_TRACE_PROPERTIES. MaximumFileSize.
Non è possibile usare la modalità per le sessioni di traccia degli eventi privati.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_NONSTOPPABLE_MODE(0x00000040) Impossibile arrestare la sessione di registrazione. Questa modalità è supportata solo da Autologger.Questa opzione è supportata in Windows Vista e versioni successive.
.
EVENT_TRACE_SECURE_MODE (0X00000080) Limita gli utenti che possono registrare gli eventi alla sessione a quelli con autorizzazione TRACELOG_LOG_EVENT . Questa opzione è supportata in Windows Vista e versioni successive.
EVENT_TRACE_REAL_TIME_MODE (0x00000100) Recapita gli eventi ai consumer in tempo reale. Gli eventi vengono recapitati quando i buffer vengono scaricati, non al momento in cui il provider scrive l'evento. Non è consigliabile abilitare la modalità in tempo reale se non sono presenti consumer per utilizzare gli eventi perché le chiamate agli eventi del log avranno esito negativo quando i buffer diventano pieni. Prima di Windows Vista, se gli eventi non venivano utilizzati, gli eventi venivano eliminati. Non specificare più consumer in tempo reale in un processo in Windows XP oWindows Server 2003. Avere invece un thread che utilizza gli eventi e distribuirli ad altri.
Prima di Windows Vista: Non è consigliabile usare la modalità in tempo reale perché la frequenza degli eventi supportata è molto inferiore rispetto alla lettura dal file di log (gli eventi potrebbero essere eliminati). Inoltre, l'ordine degli eventi non è garantito nei computer con più processori. La modalità in tempo reale è più adatta agli eventi con tipo di notifica a basso traffico.

È possibile combinare questa modalità con altre modalità di file di log; tuttavia, non usare questa modalità con EVENT_TRACE_PRIVATE_LOGGER_MODE. Si noti che se si combina questa modalità con altre modalità di file di log, i buffer verranno scaricati una volta al secondo, con conseguente scrittura di buffer parzialmente riempiti nel file di log. Ad esempio, se si usano buffer da 64.000 e la frequenza di registrazione è 1 evento ogni secondo, il servizio scriverà 64k al secondo nel file di log.
EVENT_TRACE_DELAY_OPEN_FILE_MODE(0x00000200) Questa modalità viene usata per ritardare l'apertura del file di log fino a quando non si verifica un evento.
Nota:
In Windows Vista o versione successiva questa modalità non è applicabile e non deve essere usata.
EVENT_TRACE_BUFFERING_MODE (0x00000400 ) Questa modalità scrive gli eventi in un buffer di memoria circolare. Gli eventi scritti oltre le dimensioni totali del buffer eliminano gli eventi meno recenti ancora presenti nel buffer. Le dimensioni di questo buffer di memoria sono il prodotto di MinimumBuffers e BufferSize (vedere EVENT_TRACE_PROPERTIES). Di conseguenza di questa formula, qualsiasi buffer che usa EVENT_TRACE_BUFFERING_MODE ignorerà il valore MaximumBuffers .
Gli eventi non vengono scritti in un file di log o recapitati in tempo reale e ETW non scarica i buffer. Per ottenere uno snapshot del buffer, chiamare la funzione FlushTrace .
Questa modalità è particolarmente utile per il debug dei driver di dispositivo in combinazione con la possibilità di visualizzare il contenuto dei buffer in memoria con l'estensione del debugger del kernel WMITrace .
Non usare con EVENT_TRACE_FILE_MODE_SEQUENTIAL, EVENT_TRACE_FILE_MODE_CIRCULAR, EVENT_TRACE_FILE_MODE_APPEND, EVENT_TRACE_FILE_MODE_NEWFILE o EVENT_TRACE_REAL_TIME_MODE.
EVENT_TRACE_PRIVATE_LOGGER_MODE (0x00000800) Crea una sessione di traccia eventi in modalità utente eseguita nello stesso processo del provider di traccia eventi. La memoria per i buffer proviene dalla memoria del processo. I processi che non richiedono dati dal kernel possono eliminare il sovraccarico associato alle transizioni in modalità kernel usando una sessione di traccia eventi privata.
Se il provider viene registrato da più processi, ETW aggiunge l'identificatore del processo al nome del file di log per creare un nome file di log univoco. Ad esempio, se il controller specifica i nomi dei file di log come c:\mylogs\myprivatelog.etl, ETW crea il file di log come c:\mylogs\myprivatelog.etl_nnnn, dove nnnn è l'identificatore del processo. L'identificatore del processo non viene aggiunto al primo processo che registra il provider, ma viene aggiunto solo ai processi successivi che registrano il provider.
Le sessioni di traccia eventi privati presentano le limitazioni seguenti:
  • Una sessione privata può registrare eventi solo per i thread del processo in cui è in esecuzione.
  • Possono essere presenti fino a otto sessioni private per processo.
  • Le sessioni private non possono essere usate con il recapito in tempo reale.
  • Gli eventi generati da una sessione privata non includono il tempo di esecuzione per le istruzioni in modalità kernel o i dettagli a livello di thread dell'ora di CPU usata.
I filtri id processo e i filtri dei nomi eseguibili possono ora essere passati alle API del controllo sessione all'avvio dei logger privati a livello di sistema. Per ottenere risultati ottimali negli scenari tra processi, gli stessi filtri devono essere passati a ogni operazione di controllo durante la sessione, incluse le chiamate abilitate/diasble del provider. Si noti che i filtri hanno lo stesso formato di quelli utilizzati da EnableTraceEx2.
È possibile usare questa modalità in combinazione con la modalità EVENT_TRACE_PRIVATE_IN_PROC .
Prima di Windows 10 versione 1703: solo LocalSystem, l'amministratore e gli utenti del gruppo di amministratori che vengono eseguiti in un processo con privilegi elevati possono creare una sessione privata. Se si include il flag EVENT_TRACE_PRIVATE_IN_PROC , qualsiasi utente può creare una sessione privata in-process. Inoltre, nelle versioni precedenti di Windows, può essere presente una sola sessione privata per processo (a meno che non venga specificata anche la modalità di EVENT_TRACE_PRIVATE_IN_PROC, nel qual caso è possibile creare fino a tre sessioni private in-process).
Prima di Windows Vista: Gli utenti del gruppo Performance Log Users possono anche creare una sessione privata.

Non usare con EVENT_TRACE_REAL_TIME_MODE.
Prima di Windows 7 e Windows Server 2008 R2: Non usare con EVENT_TRACE_FILE_MODE_NEWFILE.
EVENT_TRACE_ADD_HEADER_MODE(0x00001000) Questa opzione aggiunge un'intestazione al file di log.
Nota:
In Windows Vista o versione successiva questa modalità non è applicabile e non deve essere usata.
EVENT_TRACE_USE_KBYTES_FOR_SIZE(0x00002000) Usare kilobyte come unità di misura per specificare le dimensioni di un file. L'unità di misura predefinita è megabyte. Questa modalità si applica al valore del Registro di sistema MaxFileSize per una sessione AutoLogger e al membro MaximumFileSize di EVENT_TRACE_PROPERTIES. Questa opzione è supportata in Windows Vista e versioni successive.
EVENT_TRACE_USE_GLOBAL_SEQUENCE(0x00004000) Usa numeri di sequenza univoci nelle sessioni di traccia eventi. Questa modalità si applica solo agli eventi registrati usando la funzione TraceMessage . Per altre informazioni, vedere TraceMessage per informazioni dettagliate sull'utilizzo.
EVENT_TRACE_USE_GLOBAL_SEQUENCE e EVENT_TRACE_USE_LOCAL_SEQUENCE si escludono a vicenda.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_USE_LOCAL_SEQUENCE (0x00008000) Usa numeri di sequenza univoci solo per una singola sessione di traccia eventi. Questa modalità si applica solo agli eventi registrati usando la funzione TraceMessage . Per altre informazioni, vedere TraceMessage per informazioni dettagliate sull'utilizzo.
EVENT_TRACE_USE_GLOBAL_SEQUENCE e EVENT_TRACE_USE_LOCAL_SEQUENCE si escludono a vicenda.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_RELOG_MODE (0x00010000) Registra l'evento senza includere EVENT_TRACE_HEADER. Nota:
Questa modalità non deve essere utilizzata. È riservato per l'uso interno.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_PRIVATE_IN_PROC (0x00020000) Usare in combinazione con la modalità EVENT_TRACE_PRIVATE_LOGGER_MODE per avviare una sessione privata. Questa modalità impone che solo il processo che ha registrato il GUID del provider possa avviare la sessione del logger con tale GUID.
È possibile creare fino a tre sessioni private in-process per processo.
Questa opzione è supportata in Windows Vista e versioni successive.
EVENT_TRACE_MODE_RESERVED(0x00100000) Questa opzione viene usata per segnalare l'heap e la traccia di sezione critica. Questa opzione è supportata in Windows Vista e versioni successive.
EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN(0x00400000) Questa opzione arresta la registrazione all'arresto ibrido. Se non viene specificato né EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN né EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN, ETW sceglierà un valore predefinito in base al fatto che il chiamante proviene dalla sessione 0 o meno. Questa opzione è supportata in Windows 8 e Windows Server 2012.
EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN(0x00800000) Questa opzione continua la registrazione all'arresto ibrido. Se non viene specificato né EVENT_TRACE_STOP_ON_HYBRID_SHUTDOWN né EVENT_TRACE_PERSIST_ON_HYBRID_SHUTDOWN, ETW sceglierà un valore predefinito in base al fatto che il chiamante proviene dalla sessione 0 o meno. Questa opzione è supportata in Windows 8 e Windows Server 2012.
EVENT_TRACE_USE_PAGED_MEMORY (0x01000000) Usa la memoria di paging. Questa impostazione è consigliata in modo che gli eventi non usino la memoria non di paging. I buffer non in pagine usano memoria non di paging per lo spazio del buffer. Poiché i buffer non di paging non vengono mai visualizzati, una sessione di registrazione funziona correttamente. L'uso di buffer di paging è meno intensivo delle risorse.
I provider in modalità kernel e i logger di sistema non possono registrare gli eventi alle sessioni che specificano questa modalità di registrazione.
Questa modalità viene ignorata se è impostata EVENT_TRACE_PRIVATE_LOGGER_MODE .
Non è possibile usare questa modalità con nt kernel logger.
Windows 2000: Questo valore non è supportato.
EVENT_TRACE_SYSTEM_LOGGER_MODE(0x02000000) Questa opzione riceverà eventi da SystemTraceProvider. Se il parametro Proprietà StartTraceLogFileMode include questo flag, il logger sarà un logger di sistema. Questa opzione è supportata in Windows 8 e Windows Server 2012.
EVENT_TRACE_INDEPENDENT_SESSION_MODE(0x08000000) Indica che una sessione di registrazione non deve essere interessata dagli errori eventWrite in altre sessioni. Senza questo flag, se non è possibile pubblicare un evento in una delle sessioni a cui è abilitato un provider, l'evento non verrà pubblicato in alcuna sessione. Quando questo flag è impostato, un errore di scrittura di un evento in una sessione non causerà la restituzione di un codice di errore in altre sessioni dalla funzione EventWrite .
Non usare con EVENT_TRACE_PRIVATE_LOGGER_MODE.
Questa opzione è supportata in Windows 8.1, Windows Server 2012 R2 e versioni successive.
EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING (0x10000000) Scrive eventi connessi a processori diversi in un buffer comune. L'uso di questa modalità può eliminare il problema degli eventi che appaiono non in ordine quando gli eventi vengono pubblicati in processori diversi usando l'ora di sistema. Questa modalità può anche eliminare il problema con i log circolari che appaiono per eliminare gli eventi in più computer del processore.
Se non si usa questa modalità e si utilizza l'ora di sistema, gli eventi potrebbero non essere ordinati in più computer del processore. Ciò è dovuto al fatto che i buffer ETW sono associati a un processore anziché a un thread. Di conseguenza, se un thread passa da una CPU a un'altra, il buffer associato alla seconda CPU può essere scaricato su disco prima di quello associato alla CPU precedente.
Se si prevede un volume elevato di eventi (ad esempio, più di 1.000 eventi al secondo), non è consigliabile usare questa modalità.
Si noti che il numero del processore non è incluso nell'evento.
Questa opzione è supportata in Windows 7, Windows Server 2008 R2 e versioni successive.
EVENT_TRACE_ADDTO_TRIAGE_DUMP(0x80000000) Questa opzione aggiunge buffer ETW ai dump di valutazione. Questa opzione è supportata in Windows 8 e Windows Server 2012.