Configuración e inicio de una sesión de AutoLogger

La sesión de seguimiento de eventos AutoLogger registra los eventos que se producen al principio del proceso de arranque del sistema operativo. Las aplicaciones y los controladores de dispositivo pueden usar la sesión de AutoLogger para capturar seguimientos antes de que el usuario inicie sesión. Tenga en cuenta que algunos controladores de dispositivo, como los controladores de dispositivos de disco, no se cargan en el momento en que se inicia la sesión de AutoLogger.

AutoLogger difiere del registrador global de las siguientes maneras:

  • Puede especificar una o varias sesiones de AutoLogger (el registrador global era una sola sesión en la que todos los usuarios registraron eventos).
  • AutoLogger envía una notificación de habilitación a los proveedores cuando se inicia la sesión (el registrador global no envió una notificación de habilitación a los proveedores, por lo que los proveedores tenían que confiar en otros medios para saber si se inició la sesión del registrador global para comenzar a registrar eventos).
  • AutoLogger no admite el registro de eventos del registrador de kernel de NT (consulte el miembro EnableFlags de EVENT_TRACE_PROPERTIES). Para registrar eventos del registrador de kernel de NT, debe usar el registrador global.

Para obtener más información sobre la consulta del registrador global, consulte Configuración e inicio de la sesión del registrador global.

Nota

ETW admite AutoLogger en Windows Vista y versiones posteriores. Use el registrador global en sistemas operativos anteriores.

Use el Registro para configurar la sesión de AutoLogger. Agregue la siguiente clave del Registro, si aún no está presente:

HKEY_LOCAL_MACHINE
   \SYSTEM
      \CurrentControlSet
         \Control
            \WMI
               \Autologger

En la tecla Autologger , cree una clave para cada sesión de AutoLogger que quiera configurar, como se muestra en el ejemplo siguiente.

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

Para cada sesión, cree una clave para cada proveedor que quiera habilitar en la sesión. Use el GUID del proveedor como clave.

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

En la tabla siguiente se describen los valores que puede definir para cada sesión de AutoLogger. Debe tener privilegios de administrador para especificar estos valores del Registro. El valor Start y Guid son los únicos valores necesarios para iniciar la sesión de AutoLogger; todos los demás valores tienen valores predeterminados que se usan si el valor no está presente en el Registro. Normalmente, debe usar los valores predeterminados. Si especifica un valor que ETW no admite, ETW invalidará el valor.

Valor Tipo Descripción
BufferSize REG_DWORD Tamaño de cada búfer, en kilobytes. Debe ser menor que un megabyte. ETW usa el tamaño de la memoria física para calcular este valor.
ClockType REG_DWORD Temporizador que se va a usar al registrar la marca de tiempo para cada evento.
  • 1 = Valor del contador de rendimiento (alta resolución)
  • 2 = Temporizador del sistema
  • 3 = Contador de ciclo de CPU
Para obtener una descripción de cada tipo de reloj, consulte el miembro ClientContext de WNODE_HEADER.
El valor predeterminado es 1 (valor de contador de rendimiento) en Windows Vista y versiones posteriores. Antes de Windows Vista, el valor predeterminado es 2 (temporizador del sistema).
DisableRealtimePersistence REG_DWORD Para deshabilitar la persistencia en tiempo real, establezca este valor en 1. El valor predeterminado es 0 (habilitado) para las sesiones en tiempo real.
Si la persistencia en tiempo real está habilitada, se conservarán los eventos en tiempo real que no se entregaron en el momento en que se desinstaló el equipo. A continuación, los eventos se entregarán al consumidor la próxima vez que el consumidor se conecte a la sesión.
FileCounter REG_DWORD No establezca ni modifique este valor. Este valor es el número de serie que se usa para incrementar el nombre del archivo de registro si se especifica FileMax . Si el valor no es válido, se asume 1.
FileName REG_SZ Ruta de acceso completa del archivo de registro. La ruta de acceso a este archivo debe existir. El archivo de registro es un archivo de registro secuencial. La ruta de acceso está limitada a 1024 caracteres.
Si no se especifica FileName , los eventos se escriben en %SystemRoot%\System32\LogFiles\WMI<sessionname.etl>.
FileMax REG_DWORD Número máximo de instancias del archivo de registro que crea ETW. Si el archivo de registro especificado en FileName existe, ETW anexa el valor FileCounter al nombre de archivo. Por ejemplo, si se usa el nombre de archivo de registro predeterminado, el formulario es %SystemRoot%\System32\LogFiles\WMI<sessionname.etl>. NNNN.
La primera vez que se inicia el equipo, el nombre de archivo es <sessionname.etl.0001>, la segunda vez que el nombre de archivo es <sessionname.etl.0002>, etc. Si FileMax es 3, en el cuarto reinicio del equipo, ETW restablece el contador a 1 y sobrescribe <sessionname.etl.0001>, si existe.
El número máximo de instancias del archivo de registro que se admiten es 16.
No use esta característica con el modo de archivo de registro de EVENT_TRACE_FILE_MODE_NEWFILE .
FlushTimer REG_DWORD Con qué frecuencia, en segundos, los búferes de seguimiento se vacían forzosamente. El tiempo de vaciado mínimo es de 1 segundo. Este vaciado forzado se suma al vaciado automático que se produce cuando un búfer está lleno y cuando se detiene la sesión de seguimiento.
En el caso de un registrador en tiempo real, un valor de cero (el valor predeterminado) significa que el tiempo de vaciado se establecerá en 1 segundo. Un registrador en tiempo real es cuando LogFileMode está establecido en EVENT_TRACE_REAL_TIME_MODE.
El valor predeterminado es 0. De forma predeterminada, los búferes solo se vacían cuando están llenos.
Guid REG_SZ Cadena que contiene un GUID que identifica de forma única la sesión. Este valor es necesario.
LogFileMode REG_DWORD Especifique uno o varios modos de registro. Para conocer los valores posibles, consulte Constantes del modo de registro. El valor predeterminado es EVENT_TRACE_FILE_MODE_SEQUENTIAL. En lugar de escribir en un archivo de registro, puede especificar EVENT_TRACE_BUFFERING_MODE o EVENT_TRACE_REAL_TIME_MODE.
Especificar EVENT_TRACE_BUFFERING_MODE evita el costo de vaciar el contenido de la sesión en el disco cuando el sistema de archivos esté disponible.
Tenga en cuenta que el uso de EVENT_TRACE_BUFFERING_MODE hará que el sistema ignore el valor MaximumBuffers , ya que el tamaño del búfer es en su lugar el producto de MinimumBuffers y BufferSize.
Las sesiones de AutoLogger no admiten el modo de registro de EVENT_TRACE_FILE_MODE_NEWFILE .
Si se especifica EVENT_TRACE_FILE_MODE_APPEND , BufferSize debe proporcionarse explícitamente y debe ser el mismo en el registrador y en el archivo que se va a anexar.
MaxFileSize REG_DWORD Tamaño máximo del archivo de registro, en megabytes. La sesión se cierra cuando se alcanza el tamaño máximo, a menos que esté en modo de archivo de registro circular. Para especificar ningún límite, establezca el valor en 0. El valor predeterminado es 100 MB, si no se establece. El comportamiento que se produce cuando se alcanza el tamaño máximo del archivo depende del valor de LogFileMode.
MaximumBuffers REG_DWORD Número máximo de búferes que se van a asignar. Normalmente, este valor es el número mínimo de búferes más veinte. ETW usa el tamaño del búfer y el tamaño de la memoria física para calcular este valor. Este valor debe ser mayor o igual que el valor de MinimumBuffers.
MinimumBuffers REG_DWORD Número mínimo de búferes que se van a asignar al inicio. El número mínimo de búferes que puede especificar es dos búferes por procesador. Por ejemplo, en un único equipo procesador, el número mínimo de búferes es dos.
Iniciar REG_DWORD Para que la sesión de AutoLogger se inicie la próxima vez que se reinicie el equipo, establezca este valor en 1; De lo contrario, establezca este valor en 0.
Estado REG_DWORD Estado de inicio del registrador automático. Si autologger no se pudo iniciar, el valor de esta clave es el código de error de Win32 adecuado. Si autologger se inició correctamente, el valor de esta clave es ERROR_SUCCESS (0).
Arranque REG_DWORD Esta característica no se debe usar fuera de los escenarios de depuración.
Si esta clave del Registro está establecida en 1, el registrador automático se iniciará antes de lo normal durante la inicialización del kernel, lo que le permitirá capturar eventos durante la inicialización de muchos subsistemas de kernel importantes. Sin embargo, habilitar esta opción tiene un impacto negativo en los tiempos de arranque e impone restricciones adicionales en el registrador automático. Si esta característica está habilitada, el GUID de sesión del registrador automático debe rellenarse y es posible que muchas otras configuraciones del registrador automático no funcionen.
Esta clave se admite en Windows Server 2022 y versiones posteriores.

En la tabla siguiente se describen los valores que puede definir para cada proveedor que desee habilitar en la sesión. Debe tener privilegios de administrador para especificar estos valores del Registro. Si especifica un valor que ETW no puede admitir, ETW invalidará el valor.

Valor Tipo Descripción
Enabled REG_DWORD Determina si el proveedor está habilitado. Para habilitar el proveedor, establezca este valor en 1. Para deshabilitar el proveedor, establezca este valor en 0. El valor predeterminado es 0.
EnableFlags REG_DWORD Valor definido por el proveedor que especifica la clase de eventos para los que el proveedor genera eventos. Para obtener más información, consulte el parámetro EnableFlags de la función EnableTrace . Especifique este nombre de valor si el proveedor no admite MatchAnyKeyword o MatchAllKeyword.
EnableLevel REG_DWORD Valor definido por el proveedor que especifica el nivel de detalle incluido en el evento. Por ejemplo, puede usar este valor para indicar el nivel de gravedad de los eventos (informativo, advertencia, error) que genera el proveedor. Para obtener una lista de niveles predefinidos, consulte el parámetro level de la función EnableTraceEx .
EnableProperty REG_DWORD Use este valor para incluir uno o varios de los siguientes elementos en el archivo de registro:
  • EVENT_ENABLE_PROPERTY_SID (0x00000001) = Incluir en los datos extendidos el identificador de seguridad (SID) del usuario.
  • EVENT_ENABLE_PROPERTY_TS_ID (0x00000002) = Incluir en los datos extendidos el identificador de sesión del terminal.
  • EVENT_ENABLE_PROPERTY_STACK_TRACE (0x00000004) = Incluir en los datos extendidos un seguimiento de pila de llamadas para eventos escritos mediante EventWrite.
  • EVENT_ENABLE_PROPERTY_IGNORE_KEYWORD_0 (0x00000010) = Filtra todos los eventos que no tienen una palabra clave distinta de cero especificada.
  • EVENT_ENABLE_PROPERTY_PROVIDER_GROUP (0x00000020) = Indica que esta llamada a EnableTraceEx2 debe habilitar un grupo de proveedores en lugar de un proveedor individual.
  • EVENT_ENABLE_PROPERTY_PROCESS_START_KEY (0x00000080) = Incluir la clave de inicio del proceso en los datos extendidos.
  • EVENT_ENABLE_PROPERTY_EVENT_KEY (0x00000100) = Incluir la clave de evento en los datos extendidos.
  • EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE (0x00000200) = Filtra todos los eventos marcados como un evento InPrivate o proceden de un proceso marcado como InPrivate.
Para obtener más información sobre estos elementos, vea EnableProperty de la estructura ENABLE_TRACE_PARAMETERS .
MatchAnyKeyword REG_QWORD Máscara de bits de palabras clave que determinan la categoría de eventos que desea que escriba el proveedor. El proveedor escribe el evento si alguno de los bits de palabra clave del evento coincide con cualquiera de los bits establecidos en esta máscara. Para especificar que el proveedor escriba todos los eventos, establezca este valor en cero. Para obtener un ejemplo, vea la sección Comentarios de la función EnableTraceEx .
MatchAllKeyword REG_QWORD Esta máscara de bits es opcional. Esta máscara restringe aún más la categoría de eventos que desea que escriba el proveedor. Si la palabra clave del evento cumple la condición MatchAnyKeyword , el proveedor escribirá el evento solo si todos los bits de esta máscara existen en la palabra clave del evento. Esta máscara no se usa si MatchAnyKeyword es cero. Para obtener un ejemplo, vea la sección Comentarios de la función EnableTraceEx .

Una vez modificado el registro, se inicia la sesión de AutoLogger la próxima vez que se reinicie el equipo. La sesión de AutoLogger llama a la función EnableTraceEx para habilitar los proveedores.

Las sesiones de AutoLogger aumentan el tiempo de arranque del sistema y se deben usar con moderación. Los servicios que quieran capturar información durante el proceso de arranque deben considerar la posibilidad de agregar lógica de controlador a sí misma en lugar de usar la sesión de AutoLogger.

Para detener una sesión de AutoLogger, llame a la función ControlTrace . El nombre de sesión que se pasa a la función es el nombre de la clave del Registro que usó para definir la sesión en el Registro.

Para obtener más información sobre cómo iniciar una sesión de seguimiento de eventos, consulte Configuración e inicio de una sesión de seguimiento de eventos.

Para obtener más información sobre cómo iniciar una sesión de registrador privado, consulte Configuración e inicio de una sesión de registrador privado.

Para obtener más información sobre cómo iniciar una sesión de registrador de kernel de NT, vea Configuring and Starting the NT Kernel Logger Session.

Configuración e inicio de una sesión de registrador privado

Configuración e inicio de una sesión de SystemTraceProvider

Configuración e inicio de una sesión de seguimiento de eventos

Configuración e inicio de la sesión del registrador de kernel de NT

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

PAYLOAD_FILTER_PREDICATE

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

Actualización de una sesión de seguimiento de eventos