事件追蹤 MOF 限定詞
建立提供者 MOF 類別、事件 MOF 類別、事件種類 MOF 類別,以及事件種類 MOF 類別的屬性時,請使用本節中定義的限定詞。 如需包含其中一些限定詞的範例,請參閱 發佈您的事件架構。
提供者 MOF 類別限定詞
下表列出您可以在提供者 MOF 類別上指定的限定詞。
Qualifier | 資料類型 | 描述 |
---|---|---|
Guid | String | 必要。 可唯一識別提供者的字串 Guid。 例如,Guid (「{3F92E6E0-9886-434e-85DB-0D11D3904C0A}」) 。 當您呼叫 RegisterTraceGuids 函式來註冊您的提供者時,這是您所使用的相同 GUID。 |
事件 MOF 類別限定詞
下表列出您可以在事件類別上指定的限定詞, (群組相關事件種類類別的父類別) 。
Qualifier | 資料類型 | 描述 |
---|---|---|
Guid | String | 必要。 識別事件類別的字串 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 類別限定詞
下表列出您可以在事件種類類別上指定的限定詞, (定義事件屬性資料的類別) 。
Qualifier | 值 | 描述 |
---|---|---|
EventType | 整數 | 必要。 識別事件種類類別。 例如,EventType (1) 。 事件提供者會使用相同的事件種類值來設定 EVENT_TRACE_HEADER。Class.Type。 如果多個事件種類使用相同的 MOF 類別 (,因為它們使用相同的事件資料) ,請將事件種類值指定為整數陣列,例如 EventType {12,15} 。 |
EventTypeName | String | 選擇性。 描述事件種類。 例如,EventTypeName (「Start」) 。 如果多個事件種類使用相同的 MOF 類別, (因為使用相同的事件資料) ,請將事件種類名稱值指定為字串陣列,例如 EventTypeName{「Start」、「End」}。 EventTypeName 陣列的專案會直接對應至 EventType 陣列。 |
屬性限定詞
下表列出您可以在 屬性上指定的限定詞。
Qualifier | 描述 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
點陣圖 | 指定對應至字串值的位位置。 如果您指定此限定詞,您也必須指定 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 必須是位 (旗標) 值。 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;
};