事件跟踪 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 数组。 |
属性限定符
下表列出了可以在属性上指定的限定符。
限定 符 | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
BitMap | 指定映射到字符串值的位位置。 如果指定此限定符,还必须指定 BitValues 限定符。 | ||||||||||
BitValues | 字符串值。 如果还指定了 BitMap 限定符,则字符串将直接对应于 BitMap 限定符中的值。 否则,假定属性值是值字符串中的基于一个索引(位 1 对应于列表中的第一个字符串)。 | ||||||||||
扩展 | 提供有关如何使用(解释)数据的其他信息。 扩展值不区分大小写。 在引号中包含值,例如 Extension(“Guid”)。 可能的扩展值为:
|
||||||||||
格式 | 定义属性数据的格式。 例如,在字符串属性上包括 Format(“w”)表示字符串是宽字符串。 可能的值包括:
|
||||||||||
指针 | 指示属性包含指针值。 指针值的大小取决于用于记录事件的作系统;有效负载将包含 32 位系统的 4 字节值或 64 位系统的 8 字节值。 MOF 数据类型必须 对象。 如果属性包含 SizeT 扩展,使用者应忽略数据类型和 Format 限定符。 若要确定要为属性读取的数据大小,请使用:
在 Windows Vista 之前 :PointerSize 值可能不准确。 例如,在 64 位计算机上,32 位应用程序将记录 4 字节指针;但是,会话将 PointerSize 设置为 8。 请注意,某些事件使用 PointerType 而不是 Pointer;请勿使用 pointerType 。 |
||||||||||
StringTermination | 指示字符串属性的终止方式。 例如,StringTermination(“NullTerminated”) 指示字符串属性以 null 结尾。 可能的值包括:
|
||||||||||
ValueDescriptions | 提供 值 限定符中每个值的说明。 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 属性名称区分大小写。 这些属性必须包括 值 和 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;
};