次の方法で共有


イベント トレース MOF 修飾子

このセクションで定義されている修飾子は、プロバイダーの MOF クラスイベント MOF クラスイベント型 MOF クラス、およびイベント型 MOF クラスのプロパティ を作成するときに使用します。 これらの修飾子の一部を含む例については、「Publishing Your Event Schema」を参照してください。

プロバイダー 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)。通常、クラスの新しいバージョンを作成する場合は、以前のバージョンの名前もクラス名>_Vn <に変更します。n は 0 から始まる増分番号です。 例については、「FileIoFileIo_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 から始まるインデックスであると仮定します (ビット 1 はリスト内の最初の文字列に対応します)。
拡張機能の データを使用 (解釈) する方法に関する追加情報を提供します。 拡張値では大文字と小文字が区別されません。 値を引用符で囲みます (例: Extension("Guid")。 使用可能な拡張値は次のとおりです。
Guid
プロパティ データが Guid であることを示します。 MOF データ型は、オブジェクト する必要があります。 ペイロードは、GUID 構造体であることが期待されます。
IPAddr と IPAddrV4
データは IP V4 アドレスです。 MOF データ型は、オブジェクト する必要があります。 ペイロードは符号なし long である必要があります。 符号なし long の各バイトは、IP アドレスの 4 つの部分 (p1.p2.p3.p4) のいずれかを表します。 下位バイトには p1 の値が含まれます。次のバイトには p2 の値が含まれます。
Windows Vista より前のバージョン: IPAddrV4 拡張機能はサポートされていません。
IPAddrV6
データは IP V6 アドレスです。 MOF データ型は、オブジェクト する必要があります。 ペイロードは、IN6_ADDR 構造である必要があります。
Windows Vista より前のバージョン: IPAddrV6 拡張機能はサポートされていません。
NoPrint
コンシューマーがこのデータを印刷しないことを示します。
ポート
データはポート番号を識別します。 MOF データ型は、オブジェクト する必要があります。 ペイロードは符号なしショートである必要があります。
RString
改行文字はスペースに置き換えられました。 ペイロードは、NULL で終わる ANSI 文字列であることが期待されます。
RWString の
改行文字はスペースに置き換えられました。 ペイロードは、null で終わるワイド文字の文字列である必要があります。
Sid
データはバイナリ BLOB SID を表します。 MOF データ型は、オブジェクト する必要があります。
SID は可変長です。 最初の 4 バイト (ULONG) に含まれる値は、BLOB に SID が含まれているかどうかを示します。 BLOB の最初の 4 バイト (ULONG) が 0 以外の場合、BLOB には SID が含まれます。 BLOB の最初の部分にはTOKEN_USERが含まれており (構造体は 8 バイトの境界に配置されます)、2 番目の部分には SID が含まれています。 BLOB の SID 部分に対処するには:
  • バイト ポインターを BLOB の先頭に設定する
  • イベント ログのポインター サイズに 2 を乗算し、製品をバイト ポインターに追加します (TRACE_LOGFILE_HEADERPointerSize メンバーにはポインター サイズの値が含まれています)

次のマクロを使用して、SID の長さを確認できます。
#define SeLengthSid( Sid ) \
  (8 + (4 * ((SID *)Sid)->SubAuthorityCount))
SizeT
プロパティにポインター値が含まれていることを示します。 ポインター値のサイズは、イベントのログ記録に使用されるオペレーティング システムによって異なります。ペイロードには、32 ビット システムの場合は 4 バイトの値、64 ビット システムの場合は 8 バイトの値が含まれます。 MOF データ型は、オブジェクト する必要があります。
プロパティに SizeT 拡張子が含まれている場合、コンシューマーはデータ型と Format 修飾子 無視する必要があります。 プロパティに対して読み取るデータのサイズを決定するには、次の値を使用します。
Windows Vista より前のバージョン:PointerSize 値が正確でない可能性があります。 たとえば、64 ビット コンピューターでは、32 ビット アプリケーションは 4 バイト ポインターをログに記録します。ただし、セッションは PointerSize 8 に設定されます。
バリアント
データは BLOB を表します。 最初の 4 バイト (uint32) は、BLOB のサイズを示します。 MOF データ型は、オブジェクト する必要があります。
WmiTime
タイムスタンプをシステム時刻に変換します。 MOF データ型は、オブジェクト する必要があります。 ペイロードは符号なし 64 ビット整数である必要があります。
Windows Vista より前のバージョン: 利用できません。
書式 プロパティ データの形式を定義します。 たとえば、文字列プロパティに Format("w") を含めると、文字列がワイド文字列であることを示します。 使用可能な値は次のとおりです。
用語 形容
c
プロパティ値を ASCII 文字として表示します。 この修飾子は、uint8 データ型 使用できます。
s
文字の配列を null で終わる文字列として扱います。 データ型が char16 場合、文字列はワイド文字列です。それ以外の場合、文字列は ASCII 文字列です。
w
プロパティ値はワイド文字列です。 この修飾子は、文字列 データ型と共に使用できます。
x
プロパティ値を 16 進数で表示します。 この修飾子は、16 ビット、32 ビット、および 64 ビットの整数データ型で使用できます。

 

ポインター

プロパティにポインター値が含まれていることを示します。 ポインター値のサイズは、イベントのログ記録に使用されるオペレーティング システムによって異なります。ペイロードには、32 ビット システムの場合は 4 バイトの値、64 ビット システムの場合は 8 バイトの値が含まれます。 MOF データ型は、オブジェクト する必要があります。

プロパティに SizeT 拡張子が含まれている場合、コンシューマーはデータ型と Format 修飾子 無視する必要があります。 プロパティに対して読み取るデータのサイズを決定するには、次の値を使用します。

Windows Vista より前のバージョン:PointerSize 値が正確でない可能性があります。 たとえば、64 ビット コンピューターでは、32 ビット アプリケーションは 4 バイト ポインターをログに記録します。ただし、セッションは PointerSize 8 に設定されます。

一部のイベントでは、pointer ではなく、PointerType使用されることに注意してください。PointerType 使用しないでください。

StringTermination 文字列プロパティの終了方法を示します。 たとえば、StringTermination("NullTerminated") は、文字列プロパティが null で終了したことを示します。 使用可能な値は次のとおりです。
カウントされた

文字列の長さは、文字列の先頭に USHORT として埋め込まれます。

NotCounted

文字列が null で終わるのではなく、文字列の長さが文字列の先頭に埋め込まれていません。 この場合、文字列は最後の要素で、イベント データの末尾までのすべての領域を占める必要があります。

Null 終端化された する

文字列は null で終了します。 StringTermination 修飾子を指定しない場合、文字列は null で終わると見なされます。

ReverseCounted

文字列の長さは、文字列の先頭に、USHORT 値としてビッグ エンディアン形式で埋め込まれます。

ValueDescriptions Values 修飾子の各値について説明します。 TdhEnumerateProviderFieldInformation 関数と TdhQueryProviderFieldInformation 関数は、キーワードとレベルの情報を取得しようとすると、これらの説明を返します。 説明は省略可能です。 説明を指定しない場合、関数は NULL 返します。 詳細については、「レベルの指定とプロバイダー のフラグ値の有効化」を参照してください。
ValueMap 文字列値にマップされる整数インデックスまたはフラグ値を指定します。 この修飾子を指定する場合は、Values 修飾子、および必要に応じて ValueType 修飾子も指定する必要があります。 ETW は、値マップ値の文字列を持つ WMI オプションをサポートしていないことに注意してください。

次の例は、ValueMap、Values、および ValueType 修飾子を使用する方法を示しています。

ValueType("flag"),
ValueMap {"0x01", "0x02", "0x04", "0x08"},
Values {"ValueMapFlag1", "ValueMapFlag2", "ValueMapFlag4", "ValueMapFlag8"}]
文字列値。 ValueMap 修飾子も指定されている場合、文字列は ValueMap 修飾子の値に直接対応します。 それ以外の場合は、プロパティ値が値文字列の 0 から始まるインデックスであると仮定します。
ValueType ValueMap 値が整数インデックス値またはビット フラグ値であるかどうかを示します。 この修飾子を指定しない場合は、整数インデックス値が想定されます。 値が整数のインデックス値であることを指定するには、ValueType("index") を使用します。 値がビット フラグ値であることを指定するには、ValueType("flag") を使用します。
WmiDataId 各プロパティには、WmiDataId 修飾子が含まれている必要があります。 WmiDataId は、コンシューマーがイベント データを読み取る順序を定義します。 WmiDataId の値は 1 から始まり、クラス内の各プロパティに対してインクリメントされます。 たとえば、WmiDataId(1) などです。
XMLFragment データが XML 形式であり、それ以上書式設定せずに表示する準備ができていることを示します。

 

プロバイダーのレベルと有効化フラグの値の指定

レベルを文書化し、コントローラーがプロバイダーを有効にするために使用するフラグを有効にするには、プロバイダー MOF クラスに "Level" プロパティと "Flags" プロパティを含めます。 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;
};