Compartilhar via


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. Os drivers de aplicativos e dispositivos 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 Logger Global nas seguintes formas:

  • Você pode especificar uma ou mais sessões do AutoLogger (o Agente Global foi uma única sessão para a qual todos registraram eventos).
  • 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 de habilitação 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 oferece suporte ao registro de eventos do NT Kernel Logger (consulte o membro EnableFlags de EVENT_TRACE_PROPERTIES). Para registrar eventos do Kernel NT, você deve usar o Registrador Global.

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

Observação

O ETW dá suporte ao AutoLogger no Windows Vista e posterior. Use o Global Logger 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 tecla 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. O valor Iniciar 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 são usadas se o valor não estiver presente no registro. Normalmente, você deve usar os valores padrão. Se você especificar um valor que o ETW não pode dar suporte, o ETW substituirá o valor.

Valor Tipo 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.
TipoDeRelógio REG_DWORD O temporizador a ser usado para registrar a marca temporal 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).
DesativarPersistênciaEmTempoReal 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, 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.
nome do arquivo 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 1.024 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 igual a 3, na quarta vez que o computador for reiniciado, o ETW redefinirá o contador para 1 e substituirá o <nome da sessão>.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 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çosamente. O tempo mínimo de descarga é de 1 segundo. Essa descarga forçada é além da descarga automática que ocorre quando um buffer está cheio e quando a sessão de rastreamento termina.
Para o caso de um registrador em tempo real, um valor igual a zero (o valor padrão) significa que o tempo de esvaziamento será definido como 1 segundo. Um logger 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 de modo de 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 esvaziar o conteúdo da sessão para o disco quando o sistema de arquivos se torna disponível.
Observe que o uso de 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 EVENT_TRACE_FILE_MODE_NEWFILE.
Se EVENT_TRACE_FILE_MODE_APPEND for especificado, BufferSize deverá ser fornecido explicitamente e deve ser o mesmo no logger e no arquivo ao qual 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 especificar nenhum limite, defina o valor como 0. O padrão é 100 MB, se não for 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.
Estado REG_DWORD O status de inicialização do AutoLogger. Se o AutoLogger não tiver sido iniciado, o valor dessa chave será o código de erro Win32 apropriado. Se o AutoLogger for iniciado com êxito, o valor dessa chave será ERROR_SUCCESS (0).
Bota REG_DWORD Esse recurso não deve ser usado fora dos 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 que o ETW não pode dar suporte, o ETW substituirá o valor.

Valor Tipo Descrição
Habilitado 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 oferecer 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 gravidade dos eventos (informativo, aviso, erro) gerado pelo provedor. Para obter uma lista de níveis predefinidos, consulte o parâmetro de nível 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) = Inclua 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 especificada uma palavra-chave com valor diferente de zero.
  • 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 que contém palavras-chave determinando a categoria dos eventos que você deseja que o provedor registre. O provedor grava o evento caso algum dos bits de palavra-chave do evento corresponda a algum dos bits definidos nesta 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 a palavra-chave do evento atender à condição MatchAnyKeyword, o provedor gravará o evento somente se algum dos bits nessa máscara estiver presente na 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 do Kernel NT, consulte Configurando e iniciando a sessão do agente do kernel NT.

Configurando e iniciando uma sessão de registro privado

configurar e iniciar uma sessão SystemTraceProvider

Configurando e iniciando uma sessão de rastreamento de eventos

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

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Atualizando uma sessão de rastreamento de eventos