事件跟踪中的新增功能

本部分介绍在每个版本中添加到事件跟踪中用于Windows的新功能。

Windows 10 版本 1709

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

ETW 现在可以基于事件名称筛选事件。 还可以确定哪些事件捕获其堆栈。 有关详细信息,请参阅EVENT_FILTER_DESCRIPTOR结构的EVENT_FILTER_TYPE_EVENT_NAME、EVENT_FILTER_TYPE_STACKWALK_NAMEEVENT_FILTER_TYPE_STACKWALK_LEVEL_KW值,以及关联的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

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

支持使用 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 函数编写事件。
  • 能够使用单个缓冲区收集在多个处理器上生成的事件。 使用单个缓冲区可消除多处理器计算机上无序显示的事件。 有关详细信息,请参阅 EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 日志记录模式。 默认情况下,ETW 使用每处理器缓冲区。
  • 捕获事件的堆栈跟踪的功能。 若要为内核事件启用堆栈跟踪,请参阅 TraceSetInformation 函数。 若要为用户事件启用堆栈跟踪,请参阅 ENABLE_TRACE_PARAMETERSEnableProperty 成员的EVENT_ENABLE_PROPERTY_STACK_TRACE标志。
  • 使用EVENT_TRACE_PRIVATE_LOGGER_MODE日志记录模式指定EVENT_TRACE_BUFFERING_MODEEVENT_TRACE_FILE_MODE_NEWFILE日志记录模式的功能 (请参阅日志记录模式常量) 。
  • 同步启用提供程序的功能。 默认情况下,提供程序以异步方式启用。 若要同步启用提供程序,请设置 EnableTraceEx2Timeout 参数。
  • 控制器请求提供程序记录其状态的功能。 有关详细信息,请参阅 EnableTraceEx2的 ControlCode 参数的EVENT_CONTROL_CODE_CAPTURE_STATE标志。
  • 使用者能够使用 TdhFormatProperty 函数设置事件数据的格式。
  • 在不包含提供程序的计算机上解码清单事件的功能。 有关详细信息,请参阅 TdhLoadManifest 函数。

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

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

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

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