• ETW概述


    ETW主要包括3个component:Controller, Provider, and Consumer.

    Controller的主要任务有两个:

    一是,用StartTrace在内存中创建一个event trace session。刚创建时,这个session是没有跟任何provider关联的,也就不会任何数据被写到这个session的buffer中,,当然这一步也是可以完成关联的,那就是把StartTrace的参数Wnode.Guid member of Properties设置为provider id.问题:(Wnode.Guid什么时候应该设置,应该设置为什么值??)

    二是,启动(API: EnableTrace)和停止(API: ControlTrace)Provider(它是使用Provider的GUID来区分不同的provider的)。Controller的第二个任务就是为了避免额外的开销,Provider不会一直都在工作,只有当被Enable的时候,才开始工作(注:其实这么说是不正确的,Provider其实是不必受Controller控制的,它可以随时随地发送trace,只要它知道那个event trace session的句柄,这完全取决于Provider具体是怎么写的。但在实际操作上,Provider都是根据Controller的Enable/Disable信号来启动和停止tracing的。)

    etw_architecture

    第二个是Consumer,Consumer主要做这几件事:

    1. 用OpenTrace打开和event trace session之间的通道。

    2. 设计event trace callback,你可以设计一个generic的callback用来handle所有的event trace,不管是不是你感兴趣的。你也可以为特定的event trace设计callback,专门处理你关心的trace。Generic的callback实在OpenTrace的时候在参数中指定的,而特定的callback可以用SetTraceCallback来注册。

    3. 调用ProcessTrace,开始处理Trace。

  • 相关阅读:
    第四周编程总结
    第三周编程总结
    第二周编程总结
    查找整数 编程总结
    求最大值及其下标 编程总结
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    作业01
    第八周作业
  • 原文地址:https://www.cnblogs.com/lsh123/p/16035025.html
Copyright © 2020-2023  润新知