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.
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:
|
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.