Partilhar 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. Aplicativos e drivers de dispositivo podem usar a sessão do AutoLogger para capturar rastreamentos antes que o usuário faça login. 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 Global Logger das seguintes maneiras:

  • Você pode especificar uma ou mais sessões do AutoLogger (o Global Logger era uma única sessão na qual todos registravam eventos).
  • O AutoLogger envia uma notificação de ativação para os provedores quando a sessão é iniciada (o Global Logger não enviou uma notificação de habilitação para os provedores, então os provedores tiveram que confiar em outros meios para saber se a sessão do Global Logger foi iniciada para começar a registrar eventos).
  • O AutoLogger não suporta o registo de eventos NT Kernel Logger (consulte o EnableFlags membro do EVENT_TRACE_PROPERTIES). Para registrar eventos do NT Kernel Logger, você deve usar o Global Logger.

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

Observação

O ETW suporta o AutoLogger no Windows Vista e posterior. Use o Global Logger em sistemas operacionais anteriores.

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

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

Sob a chave Autologger, crie uma chave para cada sessão do AutoLogger que pretenda 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 necessários para iniciar a sessão do AutoLogger; todos os outros valores têm configurações padrão que são utilizadas caso o valor não esteja presente no registo. Normalmente, você deve usar os valores padrão. Se você especificar um valor que o ETW não pode suportar, o ETW substituirá o valor.

Valor Tipo Descrição
Tamanho do Buffer REG_DWORD O tamanho de cada buffer, em kilobytes. Deve ser inferior a 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 da 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 desativar 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 ativada, os eventos em tempo real que não foram entregues no momento em que o computador foi desligado serão persistentes. Os eventos serão então entregues ao consumidor na próxima vez que este se ligar à sessão.
FileCounter REG_DWORD Não defina nem modifique este 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 1024 caracteres.
Se FileName não for especificado, os eventos serão gravados em %SystemRoot%\System32\LogFiles\WMI&.etl.
FileMax REG_DWORD O número máximo de instâncias do arquivo de log que o ETW cria. Se o ficheiro de registo especificado em FileName existir, o ETW acrescenta o valor FileCounter ao nome do ficheiro. 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 redefine o contador para 1 e substitui <sessionname>.etl.0001, se existir.
O número máximo de instâncias do arquivo de log suportadas é 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 vestígios são lavados à força. O tempo mínimo de descarga é 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 registrador em tempo real, um valor zero (o valor padrão) significa que o tempo de liberação será definido como 1 segundo. Um registrador em tempo real é ativado quando LogFileMode está 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. Este valor é obrigatório.
ModoDeArquivoDeLog REG_DWORD Especifique um ou mais modos de log. Para obter valores possíveis, consulte Constantes do modo de registo. 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 descarregar o conteúdo da sessão para o disco quando o sistema de arquivos se torna disponível.
Ao utilizar EVENT_TRACE_BUFFERING_MODE, faz com que o sistema ignore MaximumBuffers, uma vez que o tamanho do buffer é o produto de MinimumBuffers e BufferSize.
As sessões do AutoLogger não suportam o modo de registo EVENT_TRACE_FILE_MODE_NEWFILE.
Se EVENT_TRACE_FILE_MODE_APPEND for especificado, BufferSize deve ser explicitamente fornecido e deve ser o mesmo tanto no logger quanto no ficheiro que está sendo anexado.
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 estiver definido. O comportamento que ocorre quando o tamanho máximo do arquivo é atingido depende do valor de LogFileMode.
BuffersMáximos REG_DWORD O número máximo de buffers a alocar. 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 para alocar na inicialização. O número mínimo de buffers que você pode especificar é de 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 este valor como 1; caso contrário, defina esse valor como 0.
Status REG_DWORD O estado de inicialização do AutoLogger. Se o AutoLogger falhou ao iniciar, o valor dessa chave é o código de erro Win32 apropriado. Se o AutoLogger tiver sido 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 estiver definida como 1, o autologger será iniciado mais cedo do que o normal durante a inicialização do kernel, permitindo capturar eventos durante a inicialização de muitos subsistemas importantes do kernel. No entanto, ativar 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 do autologger podem não funcionar.
Essa chave é suportada no Windows Server 2022 e posterior.

A tabela a seguir descreve os valores que você pode definir para cada provedor que 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 suportar, o ETW substituirá o valor.

Valor Tipo Descrição
ativado REG_DWORD Determina se o provedor está habilitado. Para habilitar o provedor, defina esse valor como 1. Para desativar 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 os quais o provedor gera eventos. Para obter detalhes, consulte o parâmetro EnableFlags da função EnableTrace. Especifique este nome do 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 detalhe incluído no evento. Por exemplo, você pode usar esse valor para indicar o nível de gravidade dos eventos (informativos, aviso, erros) gerados pelo provedor. Para obter uma lista de níveis predefinidos, consulte o parâmetro 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) = Incluir nos dados estendidos o identificador de segurança (SID) do usuário.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = Incluir nos dados ampliados o identificador de sessão do terminal.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = Inclua nos dados estendidos um rastreamento da pilha de chamadas para eventos escritos usando EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = Filtra todos os eventos que não têm uma palavra-chave diferente de zero especificada.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Indica que esta chamada para EnableTraceEx2 deve habilitar um Grupo de Provedores de em vez de um Provedor de Eventos individual.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Incluir a chave de início do processo nos dados estendidos.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = Incluir a chave de evento nas informações adicionais.
  • 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 o EnableProperty da estrutura ENABLE_TRACE_PARAMETERS.
MatchAnyKeyword REG_QWORD Bitmask de palavras-chave que determinam a categoria de eventos que você deseja que o provedor escreva. O provedor grava o evento se qualquer um dos bits de palavra-chave do evento corresponder a qualquer um dos bits definidos nessa máscara. Para especificar que o provedor grave todos os eventos, defina esse valor como zero. Para obter um exemplo, consulte a seção Comentários da funçãoEnableTraceEx.
MatchAllKeyword REG_QWORD Esta 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 todos os bits dessa máscara existirem na palavra-chave do evento. Esta máscara não é usada se MatchAnyKeyword for zero. Para obter um exemplo, consulte a seção Comentários da funçãoEnableTraceEx.

Após a modificação do registo, a sessão do AutoLogger é iniciada da próxima vez que o computador for reiniciado. A sessão AutoLogger chama a função EnableTraceEx para habilitar os fornecedores.

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 adicionar a 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 logger privado, consulte Configurando e iniciando uma sessão de logger privado.

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

Configuração e início de uma sessão de registo privada

Configurando e iniciando uma sessão SystemTraceProvider

Configurando e iniciando uma sessão de rastreamento de eventos

Configurando e iniciando a sessão do NT Kernel Logger

EnableTraceEx2

ATIVAR_PARÂMETROS_DE_RASTREIO

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Atualizando uma sessão de rastreamento de eventos