EventProvider
配置 Windows 事件跟踪 (ETW) 用户模式提供程序。
元素层次结构
-
<
WindowsPerformanceRecorder>
-
<
Profiles>
- < EventProvider>
-
<
Profile>
-
<
Collectors>
-
<
EventCollectorId>
-
<
EventProviders>
- < EventProvider>
-
<
EventProviders>
-
<
EventCollectorId>
-
<
Collectors>
-
<
Profiles>
语法
<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 | 唯一地标识事件提供程序。 | 字符串,必须至少包含一个字符,且不能包含冒号 (:) 或空格。 | 是 | |
名称 | 事件提供程序的名称。 | 此属性可以具有以下值之一:
|
是 | |
ProcessExeFilter | 根据指定的进程 .exe 名称筛选事件。 设置EVENT_FILTER_DESCRIPTOR中的筛选数据。 | 这是添加到 WPR 配置文件中的 EventProvider ID 的可选属性。 例如:
|
否 | |
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 文件中:
- Collectors
- 系统提供程序
- 事件提供程序
可选的内部 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>