事件跟踪中的新增功能

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

Windows 10 版本 1709

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

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

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

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

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

Windows 8 和 Windows Server 2012

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

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

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

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

Windows 7 和 Windows Server 2008 R2

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

  • 提供程序在清单中定义筛选器的功能。 在 Windows Vista 中,控制器可以将筛选器数据传递给提供程序。 但是,清单中未定义筛选器数据的布局,因此提供程序必须使用其他方式向控制器提供筛选器定义。 在此版本中,提供程序可以在清单中定义筛选器定义 (查看 ProviderType 复杂类型) 的 filters 属性。 然后,控制器可以使用 TdhEnumerateProviderFilters 函数来确定筛选器定义。 使用筛选器的提供程序应使用 EventWriteEx 函数来写入事件。
  • 能够使用单个缓冲区收集在多个处理器上生成的事件。 使用单个缓冲区可防止事件在多处理器计算机上出现无序。 有关详细信息,请参阅 EVENT_TRACE_NO_PER_PROCESSOR_BUFFERING 日志记录模式。 默认情况下,ETW 使用每个处理器的缓冲区。
  • 捕获事件的堆栈跟踪的功能。 若要为内核事件启用堆栈跟踪,请参阅 TraceSetInformation 函数。 若要为用户事件启用堆栈跟踪,请参阅 ENABLE_TRACE_PARAMETERS的 EnableProperty 成员 的 EVENT_ENABLE_PROPERTY_STACK_TRACE 标志。
  • 使用EVENT_TRACE_PRIVATE_LOGGER_MODE日志记录模式指定EVENT_TRACE_BUFFERING_MODE或EVENT_TRACE_FILE_MODE_NEWFILE日志记录模式的功能 (请参阅日志记录模式常量) 。
  • 同步启用提供程序的功能。 默认情况下,提供程序以异步方式启用。 若要同步启用提供程序,请设置 EnableTraceEx2Timeout 参数。
  • 控制器请求提供程序记录其状态的功能。 有关详细信息,请参阅 EnableTraceEx2ControlCode 参数的 EVENT_CONTROL_CODE_CAPTURE_STATE 标志。
  • 使用者能够使用 TdhFormatProperty 函数设置事件数据的格式。
  • 在不包含提供程序的计算机上解码清单事件的功能。 有关详细信息,请参阅 TdhLoadManifest 函数。

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

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

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

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