事件跟踪 MOF 限定符
创建提供程序 MOF 类、事件 MOF 类、事件类型 MOF类和事件类型 MOF 类的属性时,请使用本节中定义的限定符。 有关包含其中一些限定符的示例,请参阅 发布事件架构。
提供程序 MOF 类限定符
下表列出了可以在提供程序 MOF 类上指定的限定符。
限定符 | 数据类型 | 说明 |
---|---|---|
Guid | 字符串 | 必需。 唯一标识提供程序的字符串 Guid。 例如,Guid (“{3F92E6E0-9886-434e-85DB-0D11D3904C0A}”) 。 这与调用 RegisterTraceGuids 函数以注册提供程序时使用的 GUID 相同。 |
事件 MOF 类限定符
下表列出了可以对事件类指定的限定符, () 对相关事件类型类进行分组的父类。
限定符 | 数据类型 | 说明 |
---|---|---|
Guid | 字符串 | 必需。 标识事件类的字符串 Guid。 例如,Guid (“{3F92E6E0-9886-434e-85DB-0D11D3904C0A}”) 。 事件提供程序使用 Guid 设置 EVENT_TRACE_HEADER。Guid 成员,以便使用者可以确定他们收到的事件的类。 |
EventVersion | 整数 | 对于事件跟踪类的最新版本,此限定符是可选的,对于该类的所有旧版本是必需的。 类的最新版本未指定 EventVersion 限定符或具有最高版本号。 版本号以 0 开头,例如 EventVersion (0) 。通常,在创建类的新版本时,还会将以前的版本重命名为 <classname>_Vn,其中 n 是从 0 开始的增量数字。 有关示例,请参阅 FileIo 和 FileIo_V0。 |
事件类型 MOF 类限定符
下表列出了可以在事件类型类上指定的限定符 (定义事件属性数据的类) 。
限定符 | 值 | 说明 |
---|---|---|
EventType | 整数 | 必需。 标识事件类型类。 例如,EventType (1) 。 事件提供程序使用相同的事件类型值来设置 EVENT_TRACE_HEADER。Class.Type。 如果同一 MOF 类用于多个事件类型 (因为它们使用相同的事件数据) ,请将事件类型值指定为整数数组,例如 EventType{12,15}。 |
EventTypeName | 字符串 | 可选。 描述事件类型。 例如,EventTypeName (“Start”) 。 如果同一 MOF 类用于多个事件类型 (因为它们使用相同的事件数据) ,请将事件类型名称值指定为字符串数组,例如 EventTypeName{“Start”、“End”}。 EventTypeName 数组的元素直接对应于 EventType 数组。 |
属性限定符
下表列出了可以对属性指定的限定符。
限定符 | 说明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
位图 | 指定映射到字符串值的位位置。 如果指定此限定符,还必须指定 BitValues 限定符。 | ||||||||||
BitValues | 字符串值。 如果还指定 了 BitMap 限定符,则字符串直接对应于 BitMap 限定符中的值。 否则,假设属性值是值字符串中的一个从 1 开始的索引, (位 1 对应于列表中的第一个字符串) 。 | ||||||||||
扩展名 | 提供有关如何使用 (解释) 数据的其他信息。 扩展值不区分大小写。 在引号中包括值,例如 Extension (“Guid”) 。 可能的扩展值为:
|
||||||||||
格式 | 定义属性数据的格式。 例如,在字符串属性上包括 Format (“w”) 表示字符串是宽字符串。 可能的值为:
|
||||||||||
指针 | 指示 属性包含指针值。 指针值的大小取决于用于记录事件的操作系统;有效负载将包含 32 位系统的 4 字节值或 64 位系统的 8 字节值。 MOF 数据类型必须是 对象。 如果属性包含 SizeT 扩展,则使用者应忽略数据类型和格式限定符。 若要确定要为属性读取的数据大小,请使用:
在 Windows Vista 之前:PointerSize 值可能不准确。 例如,在 64 位计算机上,32 位应用程序将记录 4 字节指针;但是,会话会将 PointerSize 设置为 8。 请注意,某些事件使用 PointerType 而不是 Pointer;请勿使用 PointerType。 |
||||||||||
StringTermination | 指示字符串属性的终止方式。 例如,StringTermination (“NullTerminated”) 指示字符串属性以 null 结尾。 可能的值为:
|
||||||||||
ValueDescriptions | 提供 值 限定符中每个值的说明。 当您尝试检索关键字 (keyword) 和级别信息时,TdhEnumerateProviderFieldInformation 和 TdhQueryProviderFieldInformation 函数将返回这些说明。 说明是可选的。 如果未提供说明,函数将返回 NULL。 有关更多详细信息,请参阅 为提供程序指定级别和启用标志值 。 | ||||||||||
ValueMap | 指定映射到字符串值的整数索引或标志值。 如果指定此限定符,则还必须指定 值 限定符和 ValueType 限定符(可选)。 请注意,ETW 不支持将字符串用于值映射值的 WMI 选项。
以下示例演示如何使用 ValueMap、Values 和 ValueType 限定符。
|
||||||||||
值 | 字符串值。 如果还指定了 ValueMap 限定符,则字符串直接与 ValueMap 限定符中的值相对应。 否则,假定属性值是值字符串中的从零开始的索引。 | ||||||||||
ValueType | 指示 ValueMap 值是整数索引值还是位标志值。 如果不指定此限定符,则假定整数索引值。 若要指定值为整数索引值,请使用 ValueType (“index”) 。 若要指定值为位标志值,请使用 ValueType (“flag”) 。 | ||||||||||
WmiDataId | 每个属性都必须包含 WmiDataId 限定符。 WmiDataId 定义使用者读取事件数据的顺序。 WmiDataId 的值从 1 开始,对类中的每个属性递增。 例如,WmiDataId (1) 。 | ||||||||||
XMLFragment | 指示数据采用 XML 格式,并且无需进一步设置格式即可显示。 |
为提供程序指定级别并启用标志值
若要记录控制器用于启用提供程序的级别和启用标志,请在提供程序 MOF 类中包含“Level”和“Flags”属性。 Level 和 Flags 属性名称区分大小写。 属性必须包括 Values 和 ValueMap 限定符,它们指定可能的级别并启用标志值。 启用标志值的 ValueMap 必须是位 (标志) 值。 ValueDescriptions 限定符是可选的,但应使用它来提供每个可能值的说明。 当有人调用 TdhEnumerateProviderFieldInformation 和 TdhQueryProviderFieldInformation 函数以获取可能的级别并启用标志 (关键字) 提供程序的值时,将使用说明。
下面显示了一个提供程序类,该类指定可能的级别并启用标志值。
[Dynamic,
Description("IIS_Trace") : amended,
guid("{3a2a4e84-4c21-4981-ae10-3fda0d9b0f83}"),
locale("MS\\0x409")]
class IIS_Trace : EventTrace
{
[Description ("Enable Flags") : amended,
ValueDescriptions{
"Allow_tracing_only_selected_requests ",
"IIS_authentication_events ",
"IIS_security_events ",
"IIS_filter_events ",
"IIS_static_file_events ",
"IIS_CGI_events ",
"IIS_compression_events ",
"IIS_cache_events ",
"IIS_request_notifications_events ",
"IIS_module_events ",
"IIS_FastCGI_events "},
DefineValues{
"UseUrlFilter",
"IISAuthentication",
"IISSecurity",
"IISFilter",
"IISStaticFile",
"IISCGI",
"IISCompression",
"IISCache",
"IISRequestNotification",
"IISModule",
"IISFastCGI"},
Values{
"UseUrlFilter",
"IISAuthentication",
"IISSecurity",
"IISFilter",
"IISStaticFile",
"IISCGI",
"IISCompression",
"IISCache",
"IISRequestNotification",
"IISModule",
"IISFastCGI"},
ValueMap{
"0x00000001",
"0x00000002",
"0x00000004",
"0x00000008",
"0x00000010",
"0x00000020",
"0x00000040",
"0x00000080",
"0x00000100",
"0x00000200",
"0x00001000"}: amended
]
uint32 Flags;
[Description ("Levels") : amended,
ValueDescriptions{
"Abnormal exit or termination",
"Severe errors that need logging",
"Warnings such as allocation failure",
"Includes non-error cases",
"Detailed traces from intermediate steps" } : amended,
DefineValues{
"TRACE_LEVEL_FATAL",
"TRACE_LEVEL_ERROR",
"TRACE_LEVEL_WARNING"
"TRACE_LEVEL_INFORMATION",
"TRACE_LEVEL_VERBOSE" },
Values{
"Fatal",
"Error",
"Warning",
"Information",
"Verbose" },
ValueMap{
"0x1",
"0x2",
"0x3",
"0x4",
"0x5" },
ValueType("index")
]
uint32 Level;
};