事件跟踪中的新增功能

本部分介绍已添加到事件跟踪的新功能,Windows版本中的事件跟踪。

Windows 10 版本 1709

ETW 现在可以选择性地跟踪对会话启用的所有提供程序的二进制文件。 跟踪以追溯性应用于在调用之前对会话启用的提供程序,以及启用会话的所有未来提供程序。 现在还可以查询操作系统当前配置的最大系统记录器数。 有关详细信息,请参阅 TRACE _ INFO _ CLASS枚举 的 TraceProviderBinaryTrackingTraceMaxLoggersQuery 值,以及检索 其他事件跟踪数据

ETW 现可基于事件名称筛选事件。 还可以确定哪些事件捕获了其堆栈。 有关详细信息,请参阅 EVENT FILTER _ TYPE EVENT _ _ _ NAME 、EVENT FILTER TYPE _ _ _ STACKWALK _ NAME 和 EVENT FILTER TYPE _ _ _ STACKWALK LEVEL _ _ KW 值(EVENT FILTER _ _ DESCRIPTOR 结构)以及关联的 EVENT FILTER EVENT _ _ _ NAMEEVENT FILTER LEVEL _ _ _ KW 结构。

Windows 10

TraceLogging 基于 ETW 构建,为本机、.NET 和 WinRT 开发人员提供了一种检测代码的简化方法。 TraceLogging 允许将结构化数据与事件一起包含、关联事件,并且不需要单独的检测清单 XML 文件。

添加了提供程序 特征作为将更多数据附加到单个提供程序注册的方法。 它们可用于基于清单的提供程序或 TraceLogging 提供程序。 这当前包括对将提供程序名称和/或提供程序组添加到单个提供程序注册的支持。 提供程序组是一项新功能,允许多个 ETW 提供程序按它们所属的组进行聚合控制。

定期捕获状态是允许定期将捕获状态通知发送到提供程序的一种方法。 启用此功能后,通知将仅发送到以前已启用到当前会话的提供程序注册。 每个提供程序都可以定义自己的响应 ((如果有) 通知)。 有关实现的详细信息,请参阅 TRACE PERIODIC CAPTURE STATE _ _ _ _ INFO

Windows 8.1 和 Windows Server 2012 R2

以下功能已添加到 R2 上Windows 8.1 Windows Server 2012跟踪。

支持使用 EnableTraceEx2 函数和 ENABLE TRACE _ _ PARAMETERSEVENT FILTER _ _ DESCRIPTOR 结构使用的事件有效负载、范围和堆栈演练筛选器的函数,以筛选记录器会话中的特定条件。 有关详细信息,请参阅:

此外,请参阅 对 EnableTraceEx2 函数以及这些功能使用的 ENABLE TRACE _ _ PARAMETERSEVENT FILTER _ _ DESCRIPTOR 结构进行广泛修订的文档。

一种结构,用于定义事件有效负载筛选器谓词,该谓词描述如何在由新的 TdhCreatePayloadFilter 函数和事件 ID 和堆栈演练筛选器使用的跟踪会话中对单个字段进行筛选。 有关详细信息,请参阅:

检索有关提供程序清单中事件的信息的函数。 有关详细信息,请参阅:

一个 结构,用于在新的 TdhEnumerateManifestProviderEvents 函数使用的提供程序清单中定义事件数组。 有关详细信息,请参阅:

Windows 8 和 Windows Server 2012

以下功能已添加到 Windows 8 和 Windows Server 2012 上的事件跟踪。

对注册对象执行操作、提供事件有效负载分析、提供跟踪提供程序浏览、查询事件跟踪会话设置以及处理重新记录跟踪文件的函数。 有关详细信息,请参阅:

接口,用于向重新记录器提供有关跟踪进程和记录事件时的信息、对特定事件的数据的访问,以及访问允许操作事件跟踪日志 (ETL) 文件的重新记录器功能。 有关详细信息,请参阅:

新函数和接口使用的其他枚举。 有关详细信息,请参阅:

Windows 7 和 Windows Server 2008 R2

此版本中添加了以下功能:

  • 提供程序在清单中定义筛选器的能力。 在 Windows Vista 中,控制器可以向提供程序传递筛选器数据。 但是,筛选器数据的布局未在清单中定义,因此提供程序必须采用其他方式向控制器提供筛选器定义。 在此版本中,提供程序可以在清单中定义筛选器定义 (查看 ProviderType复杂类型的筛选器属性) 。 然后,控制器可以使用 TdhEnumerateProviderFilters 函数来确定筛选器定义。 使用筛选器的提供程序应该使用 EventWriteEx 函数来写入事件。
  • 能够使用单个缓冲区收集多个处理器上生成的事件。 使用单个缓冲区可消除事件在多处理器计算机上出现顺序不一的问题。 有关详细信息,请参阅事件 跟踪 _ NO PER _ PROCESSOR _ _ _ BUFFERING 日志记录模式。 默认情况下,ETW 使用每个处理器缓冲区。
  • 捕获事件的堆栈跟踪的能力。 若要为内核事件启用堆栈跟踪,请参阅 TraceSetInformation 函数。 若要为用户事件启用堆栈跟踪,请参阅 ENABLE TRACE _ _ PARAMETERSEnableProperty 成员的事件 ENABLE _ PROPERTY _ _ STACK _ TRACE 标志。
  • 使用事件跟踪专用记录器模式日志记录模式指定事件跟踪缓冲模式或事件跟踪文件模式 _ _ _ _ NEWFILE 日志记录模式 (请参阅日志记录模式常量) 。 _ _ _ _ _ _ _
  • 同步启用提供程序的能力。 默认情况下,以异步方式启用提供程序。 若要同步启用提供程序,请设置 EnableTraceEx2 的 Timeout 参数
  • 控制器请求提供程序记录其状态的能力。 有关详细信息,请参阅 EnableTraceEx2ControlCode 参数的 EVENT CONTROL CODE CAPTURE _ _ _ _ STATE 标志。
  • 使用者使用 TdhFormatProperty 函数设置事件数据格式的功能。
  • 在不包含提供程序的计算机上解码清单事件的能力。 有关详细信息,请参阅 TdhLoadManifest 函数。

此版本中添加了以下函数:

此版本中添加了以下结构:

此版本中添加了以下枚举:

此版本中添加了以下 MOF 类: