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ó pôde ser usado para a sessão do Agente do Kernel NT.

Em Windows 8, Windows Server 2012 e posterior, o SystemTraceProvider pode ser multiplexado para até 8 sessões de agente. Os dois primeiros slots para sessões de agente são reservados para o Agente do Kernel NT e o Agente 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 Windows 10 build do SDK 20348 e posterior, o SystemTraceProvider pode ser configurado por meio de provedores de sistema separados, que podem ser controlados com EnableTraceEx2, como provedores de eventos padrão do Rastreamento de Eventos para Windows. Para obter uma lista completa de provedores de sistema, palavras-chave e sinalizadores e grupos herdados correspondentes, consulte Provedores de sistema

Habilitar uma sessão SystemTraceProvider

Para habilitar o SystemTraceProvider para iniciar uma sessão diferente do Agente 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 diferente do Agente do Kernel NT, use as etapas a seguir.

  • Defina um nome de agente 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 esse membro.

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

Observação

Se você quiser que um processo não administrador ou não TCB possa iniciar uma sessão de rastreamento de criação de perfil usando o SystemTraceProvider em nome de aplicativos de terceiros, você precisará conceder o privilégio de perfil do usuário e, em seguida, adicionar esse usuário ao GUID da sessão (criado para a sessão do agente) 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 agente 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 agente do kernel NT

Provedores do sistema

Atualizando uma sessão de rastreamento de eventos