Event Trace for Windows - 消耗事件 译(11)

Consuming Events

原文链接
作者:Microsoft
译者:塔塔塔塔塔

Consumer 可以处理来自一个或多个Provider的事件。Consumer 可以从日志文件或实时处理事件。仅当Controller为Session指定实时日志记录模式时,才可以实时使用事件。出于性能原因,不建议在Windows Vista之前进行实时处理。

要在Session中指定处理哪一个你要处理的事件,请使用EVENT_TRACE_LOGFILE结构。您必须初始化该结构体的副本为要处理的每个日志文件或实时Session。

要使用日志文件中的Event,请将LogFileName成员设置为日志文件的名称。要使用实时Session中的Event,请将LoggerName成员设置为Session名称。您必须使用此结构来指定 BufferCallback 回调函数以及EventCallbackEventRecordCallback 回调函数用于处理事件。

  • EventRecordCallback 接收和处理来自一个或多个日志文件和实时Session中的所有Event(包括Header Event)。如果您使用跟踪数据帮助器函数来解析Event数据,或者要检索有关Event的元数据,则可以实现此回调。
  • EventCallback 接收和处理来自一个或多个日志文件和实时Session中的所有Event(包括Header Event)。
  • BufferCallback 接收和处理有关当前缓冲区的摘要信息,例如丢失的事件。ETW在将缓冲区中的所有Event传递给Consumer之后调用回调。Consumer也可以使用此回调来取消事件处Event处理。但是,如果您实时使用Event,则ETW会发送事件,直到Controller停止Session为止。
    定义一个或多个Session后,为要处理的每个Session调用OpenTrace函数。您可以处理一个或多个日志文件中的Event,但只能处理一个实时Session中的Event。然后,您将OpenTrace返回的跟踪会话句柄列表传递给ProcessTrace函数。该ProcessTrace功能相结合的Events并按时间顺序排列,然后将它们传递给回调一次一个。可以使用StartTimeEndTime参数将事件过滤为仅包括属于特定时间范围的Event。该ProcessTrace函数将阻塞线程,直到您的使用者处理跟踪会话中的所有事件,BufferCallback返回FALSE或调用CloseTrace函数为止。

在Windows Vista之前:您只能在ProcessTrace返回后才能调用CloseTrace。

有关显示如何使用清单文件,MOF或TMF文件发布的事件的示例,请参阅使用TDH检索事件数据。请注意,从Windows Vista开始,应使用跟踪数据帮助器(TDH)函数来使用事件。

有关显示如何使用使用MOF发布的事件的示例,请参见 Retrieving Event Data Using MOF

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值