Configurazione e avvio di una sessione autoLogger

La sessione di traccia eventi AutoLogger registra gli eventi che si verificano all'inizio del processo di avvio del sistema operativo. Le applicazioni e i driver di dispositivo possono usare la sessione AutoLogger per acquisire le tracce prima dell'accesso dell'utente. Si noti che alcuni driver di dispositivo, ad esempio i driver di dispositivo del disco, non vengono caricati al momento dell'inizio della sessione autoLogger.

AutoLogger è diverso dal Logger globale nei modi seguenti:

  • È possibile specificare una o più sessioni autoLogger (logger globale è una singola sessione a cui tutti gli eventi registrati sono stati registrati).
  • AutoLogger invia una notifica di abilitazione ai provider all'avvio della sessione (il Logger globale non ha inviato una notifica di abilitazione ai provider, quindi i provider hanno dovuto fare affidamento su altri mezzi per sapere se la sessione Globale logger è stata avviata per iniziare la registrazione degli eventi).
  • AutoLogger non supporta la registrazione degli eventi NT Kernel Logger (vedere il membro EnableFlags di EVENT_TRACE_PROPERTIES). Per registrare gli eventi del Logger kernel NT, è necessario usare il Logger globale.

Per altre informazioni sulla seesion globale del logger, vedere Configurazione e avvio della sessione globale del logger.

Nota

ETW supporta AutoLogger in Windows Vista e versioni successive. Usare il Logger globale nei sistemi operativi precedenti.

Usare il Registro di sistema per configurare la sessione autoLogger. Aggiungere la chiave del Registro di sistema seguente, se non è già presente:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

Nella chiave autologger creare una chiave per ogni sessione autoLogger che si vuole configurare come illustrato nell'esempio seguente.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                  \Logger Session B
                  \Logger Session C

Per ogni sessione, creare una chiave per ogni provider che si vuole abilitare per la sessione. Usare il GUID del provider come chiave.

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger
                  \Logger Session A
                     \{ProviderGuid1}
                     \{ProviderGuid2}
                  \Logger Session B
                  \Logger Session C

Nella tabella seguente vengono descritti i valori che è possibile definire per ogni sessione autoLogger. Per specificare questi valori del Registro di sistema, è necessario disporre dei privilegi di amministratore. Il valore Start e Guid sono gli unici valori necessari per avviare la sessione autoLogger. Tutti gli altri valori hanno impostazioni predefinite che vengono utilizzate se il valore non è presente nel Registro di sistema. In genere, è consigliabile usare i valori predefiniti. Se si specifica un valore che ETW non può supportare, ETW sostituirà il valore.

Valore Tipo Descrizione
Buffersize REG_DWORD Dimensioni di ogni buffer, espresso in kilobyte. Deve essere minore di un megabyte. ETW usa le dimensioni della memoria fisica per calcolare questo valore.
ClockType REG_DWORD Timer da utilizzare per la registrazione del timestamp per ogni evento.
  • 1 = Valore del contatore delle prestazioni (risoluzione elevata)
  • 2 = Timer di sistema
  • 3 = contatore del ciclo della CPU
Per una descrizione di ogni tipo di orologio, vedere il membro ClientContext di WNODE_HEADER.
Il valore predefinito è 1 (valore del contatore delle prestazioni) in Windows Vista e versioni successive. Prima di Windows Vista, il valore predefinito è 2 (timer di sistema).
DisableRealtimePersistence REG_DWORD Per disabilitare la persistenza in tempo reale, impostare questo valore su 1. Il valore predefinito è 0 (abilitato) per le sessioni in tempo reale.
Se la persistenza in tempo reale è abilitata, gli eventi in tempo reale non recapitati dal momento in cui il computer è stato arrestato verrà salvato in modo permanente. Gli eventi verranno quindi recapitati al consumer alla successiva connessione del consumer alla sessione.
FileCounter REG_DWORD Non impostare o modificare questo valore. Questo valore è il numero di serie usato per incrementare il nome del file di log se è specificato FileMax . Se il valore non è valido, verrà utilizzato 1.
FileName REG_SZ Percorso completo del file di log. Il percorso del file deve esistere. Il file di log è un file di log sequenziale. Il percorso è limitato a 1024 caratteri.
Se FileName non è specificato, gli eventi vengono scritti in %SystemRoot%\System32\LogFiles\WMI< sessionname.etl>.
FileMax REG_DWORD Numero massimo di istanze del file di log creato da ETW. Se il file di log specificato in FileName esiste, ETW aggiunge il valore FileCounter al nome del file. Ad esempio, se viene utilizzato il nome del file di log predefinito, il modulo è %SystemRoot%\System32\LogFiles\WMI< sessionname.etl>. NNNN.
La prima volta che il computer viene avviato, il nome file è <sessionname.etl.0001>, la seconda volta che il nome file è <sessionname.etl.0002> e così via. Se FileMax è 3, al quarto riavvio del computer, ETW reimposta il contatore su 1 e sovrascrive <sessionname.etl.0001>, se esistente.
Il numero massimo di istanze del file di log supportato è 16.
Non usare questa funzionalità con la modalità EVENT_TRACE_FILE_MODE_NEWFILE file di log.
FlushTimer REG_DWORD Con quale frequenza, in secondi, i buffer di traccia vengono scaricati forzatamente. Il tempo minimo di scaricamento è 1 secondo. Questo scaricamento forzato si aggiunge allo scaricamento automatico che si verifica quando un buffer è pieno e quando la sessione di traccia si arresta.
Per il caso di un logger in tempo reale, un valore pari a zero (valore predefinito) indica che l'ora di scaricamento verrà impostata su 1 secondo. Un logger in tempo reale è quando LogFileMode è impostato su EVENT_TRACE_REAL_TIME_MODE.
Il valore predefinito è 0. Per impostazione predefinita, i buffer vengono scaricati solo quando sono pieni.
Guid REG_SZ Stringa che contiene un GUID che identifica in modo univoco la sessione. Questo valore è obbligatorio.
LogFileMode REG_DWORD Specificare una o più modalità di log. Per i valori possibili, vedere Costanti della modalità di registrazione. Il valore predefinito è EVENT_TRACE_FILE_MODE_edizione Standard QUENTIAL. Anziché scrivere in un file di log, è possibile specificare EVENT_TRACE_BUFFERING_MODE o EVENT_TRACE_REAL_TIME_MODE.
Se si specifica EVENT_TRACE_BUFFERING_MODE si evita il costo dello scaricamento del contenuto della sessione su disco quando il file system diventa disponibile.
Si noti che l'uso di EVENT_TRACE_BUFFERING_MODE causerà che il sistema ignori il valore MaximumBuffers , perché la dimensione del buffer è invece il prodotto di MinimumBuffers e BufferSize.
Le sessioni autoLogger non supportano la modalità di registrazione EVENT_TRACE_FILE_MODE_NEWFILE .
Se si specifica EVENT_TRACE_FILE_MODE_APPEND , BufferSize deve essere specificato in modo esplicito e deve essere lo stesso sia nel logger che nel file da accodare.
Maxfilesize REG_DWORD Dimensioni massime del file di log, in megabyte. La sessione viene chiusa quando viene raggiunta la dimensione massima, a meno che non si sia in modalità file di log circolare. Per specificare nessun limite, impostare il valore su 0. Il valore predefinito è 100 MB, se non impostato. Il comportamento che si verifica quando viene raggiunta la dimensione massima del file dipende dal valore di LogFileMode.
MaximumBuffers REG_DWORD Numero massimo di buffer da allocare. In genere, questo valore è il numero minimo di buffer più venti. ETW usa le dimensioni del buffer e le dimensioni della memoria fisica per calcolare questo valore. Questo valore deve essere maggiore o uguale al valore per MinimumBuffers.
MinimumBuffers REG_DWORD Numero minimo di buffer da allocare all'avvio. Il numero minimo di buffer che è possibile specificare è due buffer per processore. Ad esempio, in un singolo computer processore, il numero minimo di buffer è due.
Avviare REG_DWORD Per fare in modo che la sessione AutoLogger venga avviata alla successiva riavvio del computer, impostare questo valore su 1; in caso contrario, impostare questo valore su 0.
Stato REG_DWORD Stato di avvio di AutoLogger. Se l'avvio di AutoLogger non è riuscito, il valore di questa chiave è il codice di errore Win32 appropriato. Se autoLogger è stato avviato correttamente, il valore di questa chiave è ERROR_SUCCESS (0).
Avvio REG_DWORD Questa funzionalità non deve essere usata all'esterno degli scenari di debug.
Se questa chiave del Registro di sistema è impostata su 1, l'autologger verrà avviato prima del normale durante l'inizializzazione del kernel, consentendogli di acquisire eventi durante l'inizializzazione di molti sottosistemi kernel importanti. Tuttavia, l'abilitazione di questa opzione ha un impatto negativo sui tempi di avvio e impone restrizioni aggiuntive per l'autologger. Se questa funzionalità è abilitata, il GUID della sessione di autologger deve essere popolato e molte altre impostazioni di autologger potrebbero non funzionare.
Questa chiave è supportata in Windows Server 2022 e versioni successive.

Nella tabella seguente vengono descritti i valori che è possibile definire per ogni provider che si vuole abilitare per la sessione. Per specificare questi valori del Registro di sistema, è necessario disporre dei privilegi di amministratore. Se si specifica un valore che ETW non può supportare, ETW sostituirà il valore.

Valore Tipo Descrizione
Abilitato REG_DWORD Determina se il provider è abilitato. Per abilitare il provider, impostare questo valore su 1. Per disabilitare il provider, impostare questo valore su 0. Il valore predefinito è 0.
EnableFlags REG_DWORD Valore definito dal provider che specifica la classe di eventi per cui il provider genera eventi. Per informazioni dettagliate, vedere il parametro EnableFlags della funzione EnableTrace . Specificare questo nome di valore se il provider non supporta MatchAnyKeyword o MatchAllKeyword.
EnableLevel REG_DWORD Valore definito dal provider che specifica il livello di dettaglio incluso nell'evento. Ad esempio, è possibile usare questo valore per indicare il livello di gravità degli eventi (informativo, avviso, errore) generato dal provider. Per un elenco dei livelli predefiniti, vedere il parametro di livello della funzione EnableTraceEx .
EnableProperty REG_DWORD Usare questo valore per includere uno o più degli elementi seguenti nel file di log:
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = Includere nei dati estesi l'identificatore di sicurezza (SID) dell'utente.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = Includere nei dati estesi l'identificatore di sessione del terminale.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = Includere nei dati estesi una traccia dello stack di chiamate per gli eventi scritti tramite EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = Filtra tutti gli eventi che non hanno una parola chiave non zero specificata.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Indica che questa chiamata a EnableTraceEx2 deve abilitare un gruppo di provider anziché un singolo provider di eventi.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Includere la chiave iniziale del processo nei dati estesi.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = Includere la chiave evento nei dati estesi.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = Filtra tutti gli eventi contrassegnati come evento InPrivate o provengono da un processo contrassegnato come InPrivate.
Per altre informazioni su questi elementi, vedere EnableProperty della struttura ENABLE_TRACE_PARAMETERS .
MatchAnyKeyword REG_QWORD Maschera di bit di parole chiave che determinano la categoria di eventi che si desidera che il provider scriva. Il provider scrive l'evento se uno dei bit della parola chiave dell'evento corrisponde a uno qualsiasi dei bit impostati in questa maschera. Per specificare che il provider scrive tutti gli eventi, impostare questo valore su zero. Per un esempio, vedere la sezione Osservazioni della funzione EnableTraceEx.
MatchAllKeyword REG_QWORD Questa maschera di bit è facoltativa. Questa maschera limita ulteriormente la categoria di eventi che si desidera che il provider scriva. Se la parola chiave dell'evento soddisfa la condizione MatchAnyKeyword , il provider scriverà l'evento solo se tutti i bit in questa maschera esistono nella parola chiave dell'evento. Questa maschera non viene utilizzata se MatchAnyKeyword è zero. Per un esempio, vedere la sezione Osservazioni della funzione EnableTraceEx.

Dopo aver modificato il Registro di sistema, la sessione autoLogger viene avviata alla successiva riavvio del computer. La sessione AutoLogger chiama la funzione EnableTraceEx per abilitare i provider.

Le sessioni autoLogger aumentano il tempo di avvio del sistema e devono essere usate con moderazione. I servizi che desiderano acquisire informazioni durante il processo di avvio devono prendere in considerazione l'aggiunta della logica del controller a se stessa invece di usare la sessione AutoLogger.

Per arrestare una sessione autoLogger, chiamare la funzione ControlTrace. Il nome della sessione passato alla funzione è il nome della chiave del Registro di sistema usata per definire la sessione nel Registro di sistema.

Per informazioni dettagliate sull'avvio di una sessione di traccia eventi, vedere Configurazione e avvio di una sessione di traccia eventi.

Per informazioni dettagliate sull'avvio di una sessione di logger privato, vedere Configurazione e avvio di una sessione di logger privato.

Per informazioni dettagliate sull'avvio di una sessione di NT Kernel Logger, vedere Configurazione e avvio della sessione del logger del kernel NT.

Configurazione e avvio di una sessione logger privata

Configurazione e avvio di una sessione SystemTraceProvider

Configurazione e avvio di una sessione di traccia eventi

Configurazione e avvio della sessione del logger del kernel NT

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Aggiornamento di una sessione di traccia eventi