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 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 quiere registrar eventos en el filtrado de sesiones 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 habilite el proveedor. Por ejemplo, si la sesión A habilitó el proveedor 1 y, a continuación, la sesión B habilitó el proveedor 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 manifiesto, ya que 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, consulte 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 ENABLE_TRACE_PARAMETERS y EVENT_FILTER_DESCRIPTOR para filtrar por condiciones específicas en una sesión del 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 manifiesto, use uno de los siguientes comandos:
- Logman query nombre-proveedor
- Wevtutil gp nombre-proveedor
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 manifiesto, use Wevtutil ep.
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 marcas e interpretar 0 como una solicitud para realizar el registro predeterminado (lo que sea posible).
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 registrarse.
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 o llamar a la función ControlTrace, el proveedor permanece habilitado.
Si ControlTrace se ejecuta 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 obtener un ejemplo que inicia una sesión de seguimiento de eventos, consulte lo siguiente:
- Ejemplo que crea una sesión y habilita un proveedor basado en manifiestos: inicia una sesión de seguimiento, habilita un proveedor basado en manifiesto, deshabilita el proveedor y, a continuación, detiene la sesión.
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 SystemTraceProvider
- Configuración e inicio de la sesión del registrador de kernel NT
- Configuración e inicio de una sesión de un registrador automático
- Configuración e inicio de la sesión del registrador global
- Configuración e inicio de una sesión de registrador privado
Temas relacionados
-
Configuración e inicio de una sesión de un registrador automático
-
Configuración e inicio de la sesión del registrador de kernel NT