次の方法で共有


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

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

プロバイダー MOF クラス修飾子

次の表に、プロバイダー MOF クラスで指定できる修飾子を示します。

修飾子 データ型 説明
Guid String 必須。 プロバイダーを一意に識別する文字列 Guid。 たとえば、Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}")。 これは、 RegisterTraceGuids 関数を呼び出してプロバイダーを登録するときに使用する GUID と同じです。

 

イベント MOF クラス修飾子

次の表に、イベント クラス (関連するイベント型クラスをグループ化する親クラス) で指定できる修飾子を示します。

修飾子 データ型 説明
Guid String 必須。 イベントのクラスを識別する文字列 Guid。 たとえば、Guid("{3F92E6E0-9886-434e-85DB-0D11D3904C0A}")。 イベント プロバイダーは Guid を使用してEVENT_TRACE_HEADERを設定します 。Guid メンバー。コンシューマーが受信しているイベントのクラスを決定できるようにします。
EventVersion 整数 この修飾子は、イベント トレース クラスの最新バージョンでは省略可能であり、すべての古いバージョンの クラスに必要です。 クラスの最新バージョンでは、 EventVersion 修飾子が指定されていないか、最も高いバージョン番号が指定されています。 バージョン番号は、EventVersion(0 など) で始まります。通常、クラスの新しいバージョンを作成する場合は、前のバージョン <の名前を classname> に変更します_Vn n は 0 から始まる増分番号です。 例については、「 FileIo 」と 「FileIo_V0」を参照してください。

 

イベント型 MOF クラス修飾子

次の表に、イベント型クラス (イベント プロパティ データを定義するクラス) で指定できる修飾子を示します。

修飾子 説明
EventType 整数 必須。 イベント型クラスを識別します。 たとえば、EventType(1) などです。 イベント プロバイダーは、同じイベントの種類の値を使用してEVENT_TRACE_HEADERを設定します 。Class.Type。 同じ MOF クラスを複数のイベント型に使用する場合 (同じイベント データを使用するため)、イベントの種類の値を整数の配列 (EventType{12,15} など) として指定します。
EventTypeName String 省略可能。 イベントの種類について説明します。 たとえば、EventTypeName("Start")。 同じ MOF クラスを複数のイベント型に使用する場合 (同じイベント データを使用するため)、EventTypeName{"Start"、"End"} などの文字列の配列としてイベントの種類の名前の値を指定します。 EventTypeName 配列の要素は、EventType 配列に直接対応します。

 

プロパティ修飾子

次の表に、プロパティで指定できる修飾子の一覧を示します。

修飾子 説明
ビットマップ 文字列値にマップするビット位置を指定します。 この修飾子を指定する場合は、 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 データ型は オブジェクトである必要があります。 ペイロードは符号なし short であることが想定されています。
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 プロパティ データの形式を定義します。 たとえば、文字列プロパティに 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 で終わるのではなく、文字列の長さは文字列の先頭に埋め込まれません。 この場合、文字列は最後の要素で、イベント データの末尾までのすべての領域を占める必要があります。

NullTerminated

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

ReverseCounted

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

ValueDescriptions Values 修飾子の各値について説明します。 TdhEnumerateProviderFieldInformation 関数と TdhQueryProviderFieldInformation 関数は、キーワード (keyword)およびレベル情報を取得しようとすると、これらの説明を返します。 説明は省略可能です。 説明を指定しない場合、関数は 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 プロパティ名では、大文字と小文字が区別されます。 プロパティには 、可能 なレベルを指定し、フラグ値を有効にする 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;
};