Compartilhar via


Configurando e iniciando uma sessão SystemTraceProvider

O SystemTraceProvider é um provedor de kernel com um conjunto predefinido de eventos de kernel com suporte no Windows 7, Windows Server 2008 R2 e posterior. No Windows 7 e no Windows Server 2008 R2, o SystemTraceProvider só podia ser usado para a sessão do Kernel NT.

No Windows 8, Windows Server 2012 e versões posteriores, o SystemTraceProvider pode ser multiplexado para até 8 sessões de registro. Os dois primeiros slots para sessões de registro são reservados para o Logger do Kernel NT e o Logger de Contexto do Kernel Circular.

Para obter mais informações sobre como usar a sessão do Agente do Kernel NT como um provedor de rastreamento, consulte Configurando e iniciando a sessão do agente do kernel NT.

No SDK do Windows 10 build 20348 e posterior, o SystemTraceProvider pode ser configurado por meio de provedores de sistema separados, que podem ser controlados com EnableTraceEx2 , como o Rastreamento de Eventos padrão para provedores de eventos do Windows. Para obter uma lista completa de provedores de sistema, palavras-chave e grupos herdados correspondentes, consulte Provedores de Sistema

Habilitar uma sessão SystemTraceProvider

Para permitir que o SystemTraceProvider inicie uma sessão diferente do Logger do Kernel NT, execute o seguinte comando:

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

Para habilitar programaticamente o SystemTraceProvider para iniciar uma sessão que não seja o Logger do Kernel NT, use as etapas a seguir.

  • Defina um nome de registrador privado.

    #define PRIVATE_LOGGER_NAME L"Alguma sessão de rastreamento privado"

  • No controlador, defina os seguintes membros da estrutura EVENT_TRACE_PROPERTIES .

    Defina LogFileMode como EVENT_TRACE_SYSTEM_LOGGER_MODE.

    Defina LoggerName como agente privado, em vez de KERNEL_LOGGER_NAME.

    Verifique se o membro Wnode.Guid da estrutura EVENT_TRACE_PROPERTIES não está definido como SystemTraceControlGuid. Você deve atribuir um novo GUID a este membro.

  • No consumidor, defina o membro LoggerName da estrutura EVENT_TRACE_LOGFILE para esse logger privado.

Observação

Se você quiser que um processo de não-administradores ou de TCB (bloco de controle de TCP) seja capaz de iniciar uma sessão de rastreamento de perfil usando o SystemTraceProvider em nome de aplicações de terceiros, então você precisará conceder privilégio ao perfil de usuário e, em seguida, adicionar esse usuário ao GUID da sessão (criado para a sessão do logger) e ao GUID do provedor de rastreamento do sistema para habilitar o provedor de rastreamento do sistema. Para obter mais informações, consulte a função EventAccessControl .

 

Configurando e iniciando uma sessão de registro privado

Configurando e iniciando uma sessão do AutoLogger

Configurando e iniciando uma sessão de rastreamento de eventos

Configurando e Iniciando a Sessão do Registrador do Kernel NT

provedores de sistema

Atualizando uma sessão de rastreamento de eventos