EventProvider

配置 Windows 事件跟踪 (ETW) 用户模式提供程序。

元素层次结构

语法

<EventProvider Id               = IdType
               Name             = string
               Base             = string
               NonPageMemory    = boolean
               Stack            = boolean
               SID              = boolean
               TSID             = boolean
               Level            = unsigendByte
               CaptureStateOnly = boolean
               Strict           = boolean
               ProcessExeFilter = string
               EventKey         = boolean
               ExcludeInPrivate = boolean>

  <!-- Child elements -->
  Keywords,
  CaptureStateOnStart,
  CaptureStateOnSave,
  CaptureStateOnDemand,
  Stacks,
  EventFilters,
  StackFilters,
  EventNameFilters,
  StackEventNameFilters,
  StackKeywordLevelFilter
</EventProvider>

特性和元素

特性

属性 说明 数据类型 必须 默认
Id 唯一地标识事件提供程序。 字符串,必须至少包含一个字符,且不能包含冒号 (:) 或空格。
名称 事件提供程序的名称。 此属性可以具有以下值之一:
  • 已注册的 Crimson 提供程序,例如“Microsoft-Windows-Search-Core”。

  • 提供程序 GUID,例如“49c2c27c-fe2d-40bf-8c4e-c3fb518037e7”。

  • 旧提供程序的名称,例如“IE6”。

  • 特殊大小写名称,例如“PerfTrack”或“DotNetProvider”。

ProcessExeFilter 根据指定的进程 .exe 名称筛选事件。 设置EVENT_FILTER_DESCRIPTOR中的筛选数据。 这是添加到 WPR 配置文件中的 EventProvider ID 的可选属性。 例如:
  • "ProcessExeFilter="wpa.exe"

Base 指示提供程序的基。 string
NonPagedMemory 将非分页内存用于跟踪会话。 boolean false
堆叠 使用 事件捕获堆栈 boolean false
SID 将用户的安全标识符 (SID) 包含在记录的事件的扩展数据中。 设置EVENT_ENABLE_PROPERTY_SID。 boolean false
TSID 在记录的事件的扩展数据中包含终端会话标识符。 设置EVENT_ENABLE_PROPERTY_TS_ID。 boolean false
级别 指示级别值。 unsignedByte 零,ETW 将其视为0xFF。
CaptureStateOnly 仅在启动或保存跟踪会话时启用提供程序。 boolean false
Strict 如果未能启用提供程序,则跟踪记录失败。 boolean false
EventKey 在扩展的数据中包含事件键,并设置EVENT_ENABLE_PROPERTY_EVENT_KEY标志。 boolean false
ExecludeInPrivate 筛选出标记为 InPrivate 事件或来自 InPrivate 进程的所有事件。 设置EVENT_ENABLE_PROPERTY_EXCLUDE_INPRIVATE标志 boolean false
EnableSilos 允许主机日志记录会话从服务器接收器收集 Crimson 事件。 设置EVENT_ENABLE_PROPERTY_ENABLE_SILOS标志。 boolean false
ContainerId 使用源容器信息标记提供程序的事件。 设置EVENT_ENABLE_PROPERTY_SOURCE_CONTAINER_TRACKING标志。 boolean false

子元素

元素 说明 要求
Keywords (in EventProvider) 表示 Keyword (in EventProvider) 元素的集合。 可选(1 个或多个)。
CaptureStateOnStart 表示 Keyword (in EventProvider) 元素的集合,以便在跟踪开始时捕获事件。 可选,0 或 1。
CaptureStateOnSave 表示 Keyword (in EventProvider) 元素的集合,以便在保存跟踪时捕获事件。 可选,0 或 1。
CaptureStateOnDemand 表示 EventProvider 中的 Keyword (集合,) 元素,以便在用户使用 wpr -capturestateondemand 命令触发时捕获事件。 可选(零个或一个)。
Stacks 表示堆栈集合。 对于 UMGL 提供程序。 可选,正好为 1。
EventFilters 表示事件 ID 筛选器的集合。 可选,正好为 1。
StackFilters 按事件 ID 表示堆栈筛选器的集合。 可选,正好为 1。
EventNameFilters 表示事件名称筛选器的集合。 可选,正好为 1。
StackEventNameFilters 按事件名称表示堆栈筛选器的集合。 可选,正好为 1。
StackKeywordLevelFilter 按关键字 (keyword) 和级别表示堆栈筛选器的集合 可选,正好为 1。

父元素

元素 说明
EventProviders 表示 EventProvider 元素的集合。
Profiles 表示收集器、提供程序和配置文件的集合。

注解

提供程序定义的顺序很重要。 定义必须按以下顺序显示在 .wprp 文件中:

  1. Collectors
  2. 系统提供程序
  3. 事件提供程序

可选的内部 XML 标记用于指定要启用的关键字。 与系统提供程序不同的是,没有为事件提供程序定义文本常量,因此必须使用十六进制样式的字符串。 但语法与系统提供程序的语法相同。 如果未指定关键字,则使用默认值 0(ETW 将其视为字符串 0xFFFFFFFFFFFFFFFF)。

默认情况下,派生的事件提供程序具有基提供程序的所有属性。 可以通过在派生的提供程序中进行明确指定来替代它们。 有关详细信息,请参阅继承

示例

下面的示例定义了两个事件提供程序。

<EventProvider
  Id="Win32K-provider"
  Name="Microsoft-Windows-Win32K"
  NonPagedMemory="true"
  Stack="true"> 
  <Keywords>
    <Keyword
      Value="0x240000"/>
  </Keywords>
</EventProvider>

<EventProvider
  Id="Search-Core-provider"
  Name="Microsoft-Windows-Search-Core"/>

下面的代码示例定义了 capture-state 提供程序。

<EventProvider Id="sample-provider" Name="SampleProvider" NonPagedMemory="true" Level="5">
  <Keywords>
    <Keyword Value="0x98"/> <!-- Provider is enabled with these keywords throughout the tracing session. -->
  </Keywords>
  <CaptureStateOnStart>
    <Keyword Value="0xff4"/> <!-- Provider is enabled with these keywords when tracing is started. -->
  </CaptureStateOnStart>
  <CaptureStateOnSave>
    <Keyword Value="0x118"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
  </CaptureStateOnSave>
</EventProvider>

<EventProvider Id="EventProvider_DWMWin32k_CaptureState" Name="e7ef96be-969f-414f-97d7-3ddb7b558ccc" NonPagedMemory="true" CaptureStateOnly="true" > 
  <!-- CaptureStateOnly="true" means that provider is not enabled throughout the tracing session. -->
  <CaptureStateOnSave>
    <Keyword Value="0x80000"/> <!-- Provider is enabled with these keywords when tracing is saved. -->
  </CaptureStateOnSave>
</EventProvider>

对于托管方案,请使用以下事件提供程序定义:

<EventCollectorId Value ="ExampleEventCollector">
  <EventProviders>
    <EventProviderId Value="EventProvider_DotNetProvider" /> <!-- You can use this provider in the profile definition because the provider is declared in the built-in profile -->
    <EventProviderId Value="Another_Example_Provider" />
    </EventProvider>
  </EventProviders>
</EventCollectorId>

元素