Configurazione e avvio di una sessione SystemTraceProvider

SystemTraceProvider è un provider di kernel con un set predefinito di eventi kernel supportati in Windows 7, Windows Server 2008 R2 e versioni successive. In Windows 7 e Windows Server 2008 R2, SystemTraceProvider può essere usato solo per la sessione NT Kernel Logger.

In Windows 8, Windows Server 2012 e versioni successive, SystemTraceProvider può essere multiplexed per fino a 8 sessioni di logger. I primi due slot per le sessioni del logger sono riservati per NT Kernel Logger e logger del contesto del kernel circolare .

Per altre informazioni sull'uso della sessione NT Kernel Logger come provider di traccia, vedere Configurazione e avvio della sessione NT Kernel Logger.

In Windows 10 SDK build 20348 e versioni successive, SystemTraceProvider può essere configurato tramite provider di sistema separati, che possono essere controllati con EnableTraceEx2 come la traccia eventi standard per i provider di eventi windows. Per un elenco completo di provider di sistema, parole chiave e flag legacy corrispondenti, vedere Provider di sistema

Abilitare una sessione SystemTraceProvider

Per abilitare SystemTraceProvider per avviare una sessione diversa da NT Kernel Logger, eseguire il comando seguente:

tracelog -start MySession -f c:\Kernel1.etl -eflag PROC_THREAD+LOADER+CSWITCH

Per abilitare a livello di codice SystemTraceProvider per avviare una sessione diversa da NT Kernel Logger, seguire questa procedura.

  • Definire un nome di logger privato.

    #define PRIVATE_LOGGER_NAME L"Alcune sessioni di traccia privata"

  • Nel controller impostare i membri seguenti della struttura EVENT_TRACE_PROPERTIES .

    Impostare LogFileMode su EVENT_TRACE_SYSTEM_LOGGER_MODE.

    Impostare LoggerName su logger privato anziché KERNEL_LOGGER_NAME.

    Assicurarsi che il membro Wnode.Guid della struttura EVENT_TRACE_PROPERTIES non sia impostato su SystemTraceControlGuid. È necessario assegnare un nuovo GUID a questo membro.

  • Nel consumer impostare il membro LoggerName della struttura EVENT_TRACE_LOGFILE su questo logger privato.

Nota

Se si vuole che un processo non TCB o non amministratore possa avviare una sessione di traccia di profilatura usando SystemTraceProvider per conto delle applicazioni di terze parti, è necessario concedere il privilegio del profilo utente e quindi aggiungere l'utente al GUID della sessione (creato per la sessione del logger) e il GUID del provider di traccia di sistema per abilitare il provider di traccia di sistema. Per altre informazioni, vedere la funzione EventAccessControl .

 

Configurazione e avvio di una sessione di logger privato

Configurazione e avvio di una sessione autoLogger

Configurazione e avvio di una sessione di traccia eventi

Configurazione e avvio della sessione del logger del kernel NT

Provider di sistema

Aggiornamento di una sessione di traccia eventi