Configurando e iniciando uma sessão do AutoLogger

A sessão de rastreamento de eventos do AutoLogger registra eventos que ocorrem no início do processo de inicialização do sistema operacional. Aplicativos e drivers de dispositivo podem usar a sessão AutoLogger para capturar rastreamentos antes que o usuário faça logon. Observe que alguns drivers de dispositivo, como drivers de dispositivo de disco, não são carregados no momento em que a sessão do AutoLogger começa.

O AutoLogger difere do Agente Global das seguintes maneiras:

  • Você pode especificar uma ou mais sessões do AutoLogger (o Agente Global era uma única sessão para a qual todos os eventos registrados).
  • O AutoLogger envia uma notificação de habilitação para os provedores quando a sessão é iniciada (o Agente Global não enviou uma notificação habilitada para os provedores, portanto, os provedores tiveram que confiar em outros meios para saber se a sessão do Agente Global foi iniciada para iniciar eventos de registro em log).
  • O AutoLogger não dá suporte ao registro em log de eventos do Agente de Kernel do NT (consulte o membro EnableFlags do EVENT_TRACE_PROPERTIES). Para registrar eventos do Agente do Kernel NT, você deve usar o Agente Global.

Para obter mais informações sobre a seesion do Agente Global, consulte Configurando e iniciando a sessão global do agente.

Observação

O ETW dá suporte ao AutoLogger no Windows Vista e posterior. Use o Agente Global em sistemas operacionais anteriores.

Use o Registro para configurar a sessão do AutoLogger. Adicione a seguinte chave do Registro, se ela ainda não estiver presente:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

Na chave do Autologger , crie uma chave para cada sessão do AutoLogger que você deseja configurar, conforme mostrado no exemplo a seguir.

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

Para cada sessão, crie uma chave para cada provedor que você deseja habilitar para a sessão. Use o GUID do provedor como a chave.

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

A tabela a seguir descreve os valores que você pode definir para cada sessão do AutoLogger. Você deve ter privilégios de administrador para especificar esses valores do Registro. Os valores Start e Guid são os únicos valores necessários para iniciar a sessão do AutoLogger; todos os outros valores têm configurações padrão que serão usadas se o valor não estiver presente no registro. Normalmente, você deve usar os valores padrão. Se você especificar um valor ao qual o ETW não pode dar suporte, o ETW substituirá o valor.

Valor Type Descrição
BufferSize REG_DWORD O tamanho de cada buffer, em quilobytes. Deve ser menor que um megabyte. O ETW usa o tamanho da memória física para calcular esse valor.
ClockType REG_DWORD O temporizador a ser usado ao registrar o carimbo de data/hora para cada evento.
  • 1 = Valor do contador de desempenho (alta resolução)
  • 2 = Temporizador do sistema
  • 3 = Contador de ciclo de CPU
Para obter uma descrição de cada tipo de relógio, consulte o membro ClientContext do WNODE_HEADER.
O valor padrão é 1 (valor do contador de desempenho) no Windows Vista e posterior. Antes do Windows Vista, o valor padrão é 2 (temporizador do sistema).
DisableRealtimePersistence REG_DWORD Para desabilitar a persistência em tempo real, defina esse valor como 1. O padrão é 0 (habilitado) para sessões em tempo real.
Se a persistência em tempo real estiver habilitada, os eventos em tempo real que não foram entregues no momento em que o computador foi desligado serão persistidos. Os eventos serão entregues ao consumidor na próxima vez que o consumidor se conectar à sessão.
FileCounter REG_DWORD Não defina ou modifique esse valor. Esse valor é o número de série usado para incrementar o nome do arquivo de log se FileMax for especificado. Se o valor não for válido, 1 será assumido.
FileName REG_SZ O caminho totalmente qualificado do arquivo de log. O caminho para esse arquivo deve existir. O arquivo de log é um arquivo de log sequencial. O caminho é limitado a 1024 caracteres.
Se FileName não for especificado, os eventos serão gravados em %SystemRoot%\System32\LogFiles\WMI<sessionname.etl>.
FileMax REG_DWORD O número máximo de instâncias do arquivo de log que o ETW cria. Se o arquivo de log especificado em FileName existir, o ETW acrescentará o valor FileCounter ao nome do arquivo. Por exemplo, se o nome do arquivo de log padrão for usado, o formulário será %SystemRoot%\System32\LogFiles\WMI<sessionname.etl>. NNNN.
Na primeira vez que o computador é iniciado, o nome do arquivo é <sessionname.etl.0001>, a segunda vez que o nome do arquivo é <sessionname.etl.0002> e assim por diante. Se FileMax for 3, na quarta reinicialização do computador, o ETW redefinirá o contador para 1 e substituirá <sessionname.etl.0001>, se ele existir.
O número máximo de instâncias do arquivo de log com suporte é 16.
Não use esse recurso com o modo de arquivo de log EVENT_TRACE_FILE_MODE_NEWFILE.
FlushTimer REG_DWORD Com que frequência, em segundos, os buffers de rastreamento são liberados à força. O tempo mínimo de liberação é de 1 segundo. Essa liberação forçada é adicional à liberação automática que ocorre quando um buffer está cheio e quando a sessão de rastreamento é interrompida.
Para o caso de um agente em tempo real, um valor igual a zero (o valor padrão) significa que o tempo de liberação será definido como 1 segundo. Um agente em tempo real é quando LogFileMode é definido como EVENT_TRACE_REAL_TIME_MODE.
O valor padrão é 0. Por padrão, os buffers são liberados somente quando estão cheios.
Guid REG_SZ Uma cadeia de caracteres que contém um GUID que identifica exclusivamente a sessão. Esse valor é necessário.
LogFileMode REG_DWORD Especifique um ou mais modos de log. Para obter valores possíveis, consulte Constantes do modo de registro em log. O padrão é EVENT_TRACE_FILE_MODE_SEQUENTIAL. Em vez de gravar em um arquivo de log, você pode especificar EVENT_TRACE_BUFFERING_MODE ou EVENT_TRACE_REAL_TIME_MODE.
Especificar EVENT_TRACE_BUFFERING_MODE evita o custo de liberar o conteúdo da sessão para o disco quando o sistema de arquivos fica disponível.
Observe que usar EVENT_TRACE_BUFFERING_MODE fará com que o sistema ignore o valor MaximumBuffers , pois o tamanho do buffer é, em vez disso, o produto de MinimumBuffers e BufferSize.
As sessões do AutoLogger não dão suporte ao modo de registro em log EVENT_TRACE_FILE_MODE_NEWFILE .
Se EVENT_TRACE_FILE_MODE_APPEND for especificado, BufferSize deverá ser fornecido explicitamente e deve ser o mesmo no agente e no arquivo que está sendo acrescentado.
Maxfilesize REG_DWORD O tamanho máximo do arquivo de log, em megabytes. A sessão é fechada quando o tamanho máximo é atingido, a menos que você esteja no modo de arquivo de log circular. Para não especificar nenhum limite, defina o valor como 0. O padrão é 100 MB, se não estiver definido. O comportamento que ocorre quando o tamanho máximo do arquivo é atingido depende do valor de LogFileMode.
MaximumBuffers REG_DWORD O número máximo de buffers a serem alocados. Normalmente, esse valor é o número mínimo de buffers mais vinte. O ETW usa o tamanho do buffer e o tamanho da memória física para calcular esse valor. Esse valor deve ser maior ou igual ao valor de MinimumBuffers.
MinimumBuffers REG_DWORD O número mínimo de buffers a serem alocados na inicialização. O número mínimo de buffers que você pode especificar é dois buffers por processador. Por exemplo, em um único computador processador, o número mínimo de buffers é dois.
Iniciar REG_DWORD Para que a sessão do AutoLogger seja iniciada na próxima vez que o computador for reiniciado, defina esse valor como 1; caso contrário, defina esse valor como 0.
Status REG_DWORD O status de inicialização do AutoLogger. Se o AutoLogger não foi iniciado, o valor dessa chave é o código de erro win32 apropriado. Se o AutoLogger for iniciado com êxito, o valor dessa chave será ERROR_SUCCESS (0).
Boot REG_DWORD Esse recurso não deve ser usado fora de cenários de depuração.
Se essa chave do Registro for definida como 1, o autologger será iniciado antes do normal durante a inicialização do kernel, permitindo que ele capture eventos durante a inicialização de muitos subsistemas de kernel importantes. No entanto, habilitar essa opção tem um impacto negativo nos tempos de inicialização e impõe restrições adicionais ao autologger. Se esse recurso estiver habilitado, o GUID da sessão do autologger deverá ser preenchido e muitas outras configurações de autologger poderão não funcionar.
Essa chave tem suporte no Windows Server 2022 e posterior.

A tabela a seguir descreve os valores que você pode definir para cada provedor que você deseja habilitar para sua sessão. Você deve ter privilégios de administrador para especificar esses valores do Registro. Se você especificar um valor ao qual o ETW não pode dar suporte, o ETW substituirá o valor.

Valor Type Descrição
Enabled REG_DWORD Determina se o provedor está habilitado. Para habilitar o provedor, defina esse valor como 1. Para desabilitar o provedor, defina esse valor como 0. O padrão é 0.
EnableFlags REG_DWORD Valor definido pelo provedor que especifica a classe de eventos para a qual o provedor gera eventos. Para obter detalhes, consulte o parâmetro EnableFlags da função EnableTrace . Especifique esse nome de valor se o provedor não der suporte a MatchAnyKeyword ou MatchAllKeyword.
EnableLevel REG_DWORD Valor definido pelo provedor que especifica o nível de detalhes incluído no evento. Por exemplo, você pode usar esse valor para indicar o nível de severidade dos eventos (informativo, aviso, erro) que o provedor gera. Para obter uma lista de níveis predefinidos, consulte o parâmetro level da função EnableTraceEx .
EnableProperty REG_DWORD Use esse valor para incluir um ou mais dos seguintes itens no arquivo de log:
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = Incluir nos dados estendidos o SID (identificador de segurança) do usuário.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = Incluir nos dados estendidos o identificador de sessão do terminal.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = Incluir nos dados estendidos um rastreamento de pilha de chamadas para eventos gravados usando EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = Filtra todos os eventos que não têm um palavra-chave diferente de zero especificado.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Indica que essa chamada para EnableTraceEx2 deve habilitar um Grupo de Provedores em vez de um Provedor de Eventos individual.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Incluir a chave inicial do processo nos dados estendidos.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = Incluir a chave de evento nos dados estendidos.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = Filtra todos os eventos marcados como um evento InPrivate ou provenientes de um processo marcado como InPrivate.
Para obter mais informações sobre esses itens, consulte EnableProperty da estrutura ENABLE_TRACE_PARAMETERS .
MatchAnyKeyword REG_QWORD Máscara de bits de palavras-chave que determinam a categoria de eventos que você deseja que o provedor grave. O provedor gravará o evento se qualquer um dos bits palavra-chave do evento corresponder a qualquer um dos bits definidos nessa máscara. Para especificar que o provedor escreva todos os eventos, defina esse valor como zero. Para obter um exemplo, consulte a seção Comentários da função EnableTraceEx .
MatchAllKeyword REG_QWORD Essa máscara de bits é opcional. Essa máscara restringe ainda mais a categoria de eventos que você deseja que o provedor escreva. Se o palavra-chave do evento atender à condição MatchAnyKeyword, o provedor gravará o evento somente se todos os bits nessa máscara existirem no palavra-chave do evento. Essa máscara não será usada se MatchAnyKeyword for zero. Para obter um exemplo, consulte a seção Comentários da função EnableTraceEx .

Depois que o registro for modificado, a sessão do AutoLogger será iniciada na próxima vez que o computador for reiniciado. A sessão AutoLogger chama a função EnableTraceEx para habilitar os provedores.

As sessões do AutoLogger aumentam o tempo de inicialização do sistema e devem ser usadas com moderação. Os serviços que desejam capturar informações durante o processo de inicialização devem considerar a adição da lógica do controlador a si mesmo em vez de usar a sessão do AutoLogger.

Para interromper uma sessão do AutoLogger, chame a função ControlTrace . O nome da sessão que você passa para a função é o nome da chave do Registro que você usou para definir a sessão no registro.

Para obter detalhes sobre como iniciar uma sessão de rastreamento de eventos, consulte Configurando e iniciando uma sessão de rastreamento de eventos.

Para obter detalhes sobre como iniciar uma sessão de agente privado, consulte Configurando e iniciando uma sessão de agente privado.

Para obter detalhes sobre como iniciar uma sessão do Agente de Kernel do NT, consulte Configurando e iniciando a sessão do agente de kernel NT.

Configurando e iniciando uma sessão de agente privado

Configurando e iniciando uma sessão SystemTraceProvider

Configurando e iniciando uma sessão de rastreamento de eventos

Configurando e iniciando a sessão do agente do kernel NT

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Atualizando uma sessão de rastreamento de eventos