Consumo de eventos (seguimiento de eventos)

Los consumidores de seguimiento de eventos pueden procesar eventos de uno o varios proveedores. Los consumidores pueden procesar eventos desde un archivo de registro o en tiempo real. Solo puede consumir eventos en tiempo real si el controlador especifica el modo de registro en tiempo real para la sesión. Por motivos de rendimiento, no se recomienda el procesamiento en tiempo real antes de Windows Vista.

Para especificar la sesión de seguimiento desde la que desea procesar eventos, use la estructura EVENT_TRACE_LOGFILE . Debe inicializar una copia de esta estructura para cada archivo de registro o sesión en tiempo real que desee procesar.

Para consumir eventos de un archivo de registro, establezca el miembro LogFileName en el nombre del archivo de registro. Para consumir eventos de la sesión en tiempo real, establezca el miembro LoggerName en el nombre de la sesión. También se usa esta estructura para especificar la devolución de llamada BufferCallback y la devolución de llamada EventCallback o EventRecordCallback usada para procesar los eventos.

  • EventRecordCallback: recibe y procesa todos los eventos (incluido el evento de encabezado) de uno o varios archivos de registro y una sesión en tiempo real. Esta devolución de llamada se implementa si usa las funciones auxiliares de datos de seguimiento para analizar los datos del evento o quiere recuperar metadatos sobre el evento.
  • EventCallback: recibe y procesa todos los eventos (incluido el evento de encabezado) de uno o varios archivos de registro y una sesión en tiempo real.
  • BufferCallback: recibe y procesa información de resumen sobre el búfer actual, como los eventos perdidos. ETW llama a la devolución de llamada después de entregar todos los eventos del búfer al consumidor. El consumidor también puede usar esta devolución de llamada para cancelar el procesamiento de eventos; Sin embargo, si consume eventos en tiempo real, ETW entrega eventos hasta que el controlador detiene la sesión.

Después de definir una o varias sesiones de seguimiento, llame a la función OpenTrace para cada sesión de seguimiento que desee procesar; Puede procesar eventos de uno o varios archivos de registro, pero solo desde una sesión en tiempo real. A continuación, se pasa la lista de identificadores de sesión de seguimiento que OpenTrace devuelve a la función ProcessTrace . La función ProcessTrace combina los eventos, los ordena en orden cronológico y, a continuación, los entrega a las devoluciones de llamada de una en una. Los eventos se pueden filtrar para incluir solo los que se encuentran en un período de tiempo específico mediante los parámetros StartTime y EndTime . La función ProcessTrace bloquea el subproceso hasta que el consumidor procesa todos los eventos de las sesiones de seguimiento, BufferCallback devuelve FALSE o llama a CloseTrace.

Antes de Windows Vista: Solo puede llamar a CloseTrace después de que ProcessTrace se devuelva.

Para obtener un ejemplo en el que se muestra cómo consumir eventos publicados mediante un manifiesto, MOF o TMF, consulte Recuperación de datos de eventos mediante TDH. Tenga en cuenta que, a partir de Windows Vista, debe usar las funciones auxiliares de datos de seguimiento (TDH) para consumir eventos.

Para obtener un ejemplo que muestra cómo consumir eventos publicados mediante MOF, consulte Recuperación de datos de eventos mediante MOF.