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

Para configurar una sesión de seguimiento de eventos, use la estructura EVENT_TRACE_PROPERTIES para especificar las propiedades de la sesión. La memoria que asigne para la estructura de EVENT_TRACE_PROPERTIES debe ser lo suficientemente grande como para contener también los nombres de archivo de sesión y registro que siguen la estructura en memoria.

Después de especificar las propiedades de la sesión, llame a la función StartTrace para iniciar la sesión. Si la función se ejecuta correctamente, el parámetro SessionHandle contendrá el identificador de sesión y la propiedad LoggerNameOffset contendrá el desplazamiento al nombre de la sesión.

Para habilitar los proveedores que desea registrar eventos en la sesión, llame a la función EnableTrace para habilitar proveedores clásicos y la función EnableTraceEx para habilitar proveedores basados en manifiestos . Para habilitar los proveedores que desea registrar eventos en el filtrado de sesión en condiciones específicas en Windows 8.1,Windows Server 2012 R2 y versiones posteriores, llame a la función EnableTraceEx2.

Además, también puede realizar un seguimiento de información adicional sobre un evento con una llamada a la función TraceSetInformation . TraceSetInformation coloca información de seguimiento adicional en la sección de datos extendidos de un evento y puede incluir información como la información de la versión de seguimiento o qué proveedores están registrados actualmente en el sistema. Para obtener más información, consulte Recuperación de datos de seguimiento de eventos adicionales.

Hasta ocho sesiones de seguimiento pueden habilitar y recibir eventos del mismo proveedor basado en manifiesto . Sin embargo, solo una sesión de seguimiento puede habilitar un proveedor clásico . Si más de una sesión de seguimiento intenta habilitar un proveedor clásico, la primera sesión dejaría de recibir eventos cuando la segunda sesión habilita el proveedor. Por ejemplo, si la sesión A está habilitada para el proveedor 1 y, a continuación, el proveedor habilitado para la sesión B 1, solo la sesión B recibiría eventos del proveedor 1.

Puede usar cualquiera de las tres funciones para habilitar un proveedor, pero puede perder funcionalidad si usa EnableTrace para habilitar un proveedor basado en manifiestos porque no podrá proporcionar un valor MatchAllKeyword, especificar elementos de datos extendidos que se incluirán en el evento o proporcionar datos de filtro definidos por el proveedor. Para obtener más información, vea la sección Comentarios de cada función.

En Windows 8.1, Windows Server 2012 R2 y versiones posteriores, los filtros de carga de eventos, ámbito y recorrido de pila se pueden usar mediante la función EnableTraceEx2 y las estructuras de ENABLE_TRACE_PARAMETERS y EVENT_FILTER_DESCRIPTOR para filtrar por condiciones específicas en una sesión de registrador. Para obtener más información sobre los filtros de carga de eventos, consulte las funciones TdhCreatePayloadFilter y TdhAggregatePayloadFilters y las estructuras ENABLE_TRACE_PARAMETERS, EVENT_FILTER_DESCRIPTOR y PAYLOAD_FILTER_PREDICATE .

Para determinar el nivel y las palabras clave que se usan para habilitar un proveedor basado en manifiestos, use uno de los siguientes comandos:

  • Nombre del proveedor de consultasde Logman
  • Wevtutilgpprovider-name

Los comandos solo enumeran el nivel y las palabras clave, el proveedor debe documentar los requisitos de datos de filtro para los posibles controladores.

Para enumerar los proveedores basados en manifiestos, use Wevtutilep.

En el caso de los proveedores clásicos, el proveedor debe documentar y poner a disposición de los posibles controladores los niveles de gravedad o habilitar las marcas que admite. Si cualquier controlador quiere habilitar el proveedor, el proveedor debe aceptar 0 para el nivel de gravedad y habilitar las marcas e interpretar 0 como una solicitud para realizar el registro predeterminado (lo que pueda ser).

Puede habilitar el proveedor antes o después de que el proveedor se registre. Después de habilitar el proveedor, ETW llamará a la función de devolución de llamada del proveedor. Si el proveedor no está registrado, ETW llamará a la función de devolución de llamada del proveedor después de que se registre.

También puede usar la función EnableTrace para deshabilitar el proveedor (detenerlo de registrar eventos en la sesión) o actualizar el nivel de registro o habilitar marcas del proveedor. Con la función EnableTraceEx , puede deshabilitar el proveedor o actualizar el nivel, las palabras clave, los datos extendidos y los datos de filtro. Cada vez que se llama a la función EnableTrace o EnableTraceEx , ETW llama a la función de devolución de llamada del proveedor. El proveedor permanece habilitado para la sesión hasta que la sesión deshabilita el proveedor.

Para detener la sesión de seguimiento después de recopilar eventos, llame a la función ControlTrace y pase EVENT_TRACE_CONTROL_STOP como código de control. Para especificar la sesión que se va a detener, puede pasar el identificador de sesión de seguimiento de eventos obtenido de una llamada anterior a la función StartTrace o el nombre de una sesión iniciada anteriormente. Asegúrese de deshabilitar todos los proveedores antes de detener la sesión. Si detiene la sesión antes de deshabilitar primero el proveedor, ETW deshabilitará el proveedor e intentará llamar a la función de devolución de llamada de control del proveedor. Si la aplicación que inició la sesión finaliza sin deshabilitar el proveedor ni llamar a la función ControlTrace , el proveedor permanece habilitado.

Si ControlTrace se realiza correctamente, las propiedades de la sesión se actualizan para reflejar los valores de propiedad finales y ejecutar estadísticas para la sesión de seguimiento de eventos.

Para ver un ejemplo que inicia una sesión de seguimiento de eventos, consulte lo siguiente:

Para obtener más información sobre cómo iniciar una sesión de seguimiento, consulte una de las siguientes opciones:

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 AutoLogger

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

ControlTrace

EnableTrace

EnableTraceEx

EnableTraceEx2

ENABLE_TRACE_PARAMETERS

EVENT_FILTER_DESCRIPTOR

EVENT_TRACE_PROPERTIES

PAYLOAD_FILTER_PREDICATE

StartTrace

TdhAggregatePayloadFilters

TdhCreatePayloadFilter

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