事件追蹤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 限定符中的值。 否則,假設屬性值是值字串中的一個基底索引(位一個對應至清單中的第一個字串)。 | ||||||||||
擴充功能 | 提供有關如何使用(解譯)數據的其他資訊。 擴充值不區分大小寫。 以引弧括住值,例如 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 | 指定對應至字串值的整數索引或旗標值。 如果您指定此限定符,也必須指定 Values 限定符,並選擇性地指定 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 屬性名稱區分大小寫。 屬性必須包含 Values 和 ValueMap 限定符,以指定可能的層級和啟用旗標值。 啟用旗標值的 ValueMap 必須是位 (flag) 值。 ValueDescriptions 限定符是選擇性的,但您應該使用它來提供每個可能值的描述。 當有人呼叫 TdhEnumerateProviderFieldInformation 和 TdhQueryProviderFieldInformation 函式,以取得提供者的可能層級並啟用旗標 (keywords) 值時,就會使用描述。
下列顯示提供者類別,指定可能的層級並啟用旗標值。
[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;
};