Share via


トレース ログ ラッパー マクロ

TraceLoggingWrite マクロと TraceLoggingWriteActivity マクロは、マクロ パラメーターに従って構成されたトレース ログ イベントを出力します。 これらの各マクロは、必要なパラメーターのセットと、最大 99 個の省略可能なパラメーターを受け入れます。 各省略可能なパラメーターは、イベントを構成するか、イベントにフィールドを追加します。 省略可能な各パラメーターは、このページで説明されているトレース ログ ラッパー マクロのいずれかである必要があります。

次に例を示します。

TraceLoggingWrite(
    g_hProvider,
    "MyEvent1",
    TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
    TraceLoggingKeyword(MyNetworkingKeyword),
    TraceLoggingString(operationName), // Adds an "operationName" field.
    TraceLoggingHResult(hr, "NetStatus")); // Adds a "NetStatus" field.

この例では、 g_hProvider"MyEvent1" は必須のパラメーターです。 イベントに使用するプロバイダーとイベントの名前を指定します。 残りの各パラメーターはラッパー マクロです。 パラメーターと TraceLoggingKeyword パラメーターはTraceLoggingLevel、イベントを構成します。 パラメーターと TraceLoggingHResult パラメーターはTraceLoggingString、イベントにフィールドを追加します。

イベント構成マクロ

次のマクロは、イベントを構成します。

TraceLoggingWrite で特定の構成マクロが指定されていない場合、そのイベントには既定値が使用されます。 たとえば、イベントに TraceLoggingLevel パラメーターが使用されていない場合、イベントでは既定のレベル 5 (VERBOSE) が使用されます。

  • TraceLoggingLevel は、イベントのレベルを設定 します。 レベルは、イベントの重大度を示す 8 ビット値です。 1 (WINEVENT_LEVEL_CRITICAL) から 5 (WINEVENT_LEVEL_VERBOSE) までのレベルは、 で <winmeta.h>定義されます。 指定しない場合、イベントは既定でレベル 5 (VERBOSE) になります。 Level は ETW イベント ルーティングとフィルター処理の重要な部分であるため、すべてのイベントに意味のある 0 以外のレベルが必要です。
  • TraceLoggingKeyword は、イベントのキーワード (keyword)を設定します。 キーワード (keyword)は、イベントが属するカテゴリを示す各ビットを持つ 64 ビットの値です。 キーワード (keyword)の下位 48 ビットはプロバイダーの所有者によって定義され、キーワード (keyword)の上位 16 ビットは Microsoft によって定義されます。 たとえば、"MyCompany.MyComponent" という名前のすべてのプロバイダーで、"ネットワーク" を意味するキーワード (keyword) 0x1が使用されます。 指定しない場合、イベントの既定値は キーワード (keyword) 0x0 (なし) になります。 キーワードは ETW イベント ルーティングとフィルター処理の重要な部分であるため、すべてのイベントに意味のある 0 以外のキーワード (keyword)が必要です。
  • TraceLoggingOpcode イベントオペコードを設定します。 オペコードは、イベントの特別なセマンティクスを示す 8 ビット値です。たとえば、イベントが ETW アクティビティ (関連するイベントのグループ) の開始 (WINEVENT_OPCODE_START) または終了 (WINEVENT_OPCODE_STOP) を記録します。 指定しない場合、イベントは既定でオペコード 0 (WINEVENT_OPCODE_INFO) に設定され、特別なセマンティクスは必要ありません。
  • TraceLoggingChannel は、イベントのチャネルを設定 します。 チャネルは、さまざまな目的で使用される 8 ビット値です。 指定しない場合、イベントは既定でチャネル 11 (WINEVENT_CHANNEL_TRACELOGGING) になります。 ほとんどのイベントは、イベントのチャネルを変更する必要はありません。 TraceLoggingChannel を使用しないでください。
  • TraceLoggingEventTag は、イベントのタグを設定します。 タグは、プロバイダー定義のセマンティクスを持つ 28 ビット値です。 たとえば、プロバイダーはタグ ビット 0x1000000を定義して、イベントに個人を特定できる情報が含まれている可能性があり、プロバイダー固有のイベント処理ツールから特別な処理を受ける必要があることを示します。 指定しない場合、タグの既定値は 0 になります。
  • TraceLoggingDescription は 、イベントの説明を設定します。 説明は、イベントの人間が判読できる説明を含む文字列リテラルです。 これはイベントの目的に関するコメントとして機能し、説明はコンポーネントのデバッグ シンボル (PDB) の注釈としても記録されます。 指定しない場合、説明の既定値は になります ""
  • TraceLoggingCustomAttribute は、コンポーネントのデバッグ シンボル (PDB) にキー値注釈を追加します。

フィールド マクロ

トレース ログでは、イベントにフィールドを追加するための多くのラッパー マクロがサポートされています。 各フィールドは名前と値のペアです。 たとえば、 TraceLoggingInt32(argc, "ArgCount") は、値 argcが の "ArgCount" という名前の INT32 フィールドを追加します。

ほとんどのフィールド ラッパー マクロは、次のようなパラメーターを受け入れます。

  • 値: フィールドに含めるデータを決定するために実行時に評価される式。 ほとんどのフィールド ラッパー マクロでは 1 つのパラメーターを使用して値を指定しますが、一部のマクロではフィールド値に複数のパラメーター (ポインターや長さなど) が必要です。 値パラメーターは常に必要です。
    • 場合によっては、フィールド値が pszValue として指定されます。その場合、フィールドに含める 0 で終わる文字の文字列へのポインターです。 pszValue には NULL を指定できます。この場合、フィールド値は空の文字列 ""になります。
    • 場合によっては、フィールド値が pchValue として指定されます。その場合、フィールドに含める cchValue 文字の文字列へのポインターです。 pchValue は、 cchValue が 0 の場合にのみ NULL になります。
    • 場合によっては、フィールド値が pValue として指定され、自動的に決定されたサイズ ( cbValue パラメーターなし) が指定されます。その場合は、フィールドに含める値へのポインターです。 pValue は NULL にすることはできません。
    • 場合によっては、フィールドに含めるデータのサイズ (バイト単位) を指定する cbValue パラメーターを使用して、フィールド値を pValue として指定します。 pValue は、 cbValue が 0 の場合にのみ NULL になります。
  • 名前: フィールドに使用する名前を持つ文字列リテラル (コンパイル時定数)。 ほとんどのフィールド ラッパー マクロでは、名前パラメーターは必要ありません。 name パラメーターを省略した場合、フィールドの名前は、マクロの pszValuepchValue、または pValue パラメーターのプリプロセッサ テキストに基づいて決定されます。 たとえば、TraceLoggingInt32(x[4] + y) は、TraceLoggingInt32(x[4] + y, "x[4] + y") と同じです。 どちらも、 という名前 "x[4] + y" のフィールドをイベントに追加し、式 を評価することによって決定される値を指定します x[4] + y
  • 説明: フィールドに使用する説明を含む文字列リテラル (コンパイル時定数)。 これは主にフィールドのコメントを配置するのに便利な場所として使用されますが、説明はコンポーネントのデバッグ シンボル (PDB) の注釈としても記録されます。 説明は省略できます。 description パラメーターを省略すると、フィールドの説明の既定値は になります ""
  • タグ: プロバイダー定義のセマンティクスを持つ 28 ビット整数 (コンパイル時定数)。 たとえば、プロバイダーはタグ 0x2を定義して、フィールドに電話番号が含まれており、プロバイダー固有のイベント処理ツールから特別な処理を受ける必要があることを示します。 tag パラメーターを省略すると、フィールドのタグの既定値は 0 になります。

たとえば、次のラッパー マクロ呼び出しはすべて同じ効果を持ちます。

  • TraceLoggingInt32(argc)
  • TraceLoggingInt32(argc, "argc")
  • TraceLoggingInt32(argc, "argc", "")
  • TraceLoggingInt32(argc, "argc", "", 0)

スカラー

  • TraceLoggingValue(value, [name, ...]):

    value パラメーターの型から自動的に推測される型を持つフィールドを追加します。 (C++ のみ)

  • TraceLoggingInt8(value, [name, ...]):

    INT8 値を持つフィールドを追加します。

  • TraceLoggingUInt8(value, [name, ...]):

    UINT8 値を持つフィールドを追加します。

  • TraceLoggingInt16(value, [name, ...]):

    INT16 値を持つフィールドを追加します。

  • TraceLoggingUInt16(value, [name, ...]):

    UINT16 値を持つフィールドを追加します。

  • TraceLoggingInt32(value, [name, ...]):

    INT32 値を持つフィールドを追加します。

  • TraceLoggingUInt32(value, [name, ...]):

    UINT32 値を持つフィールドを追加します。

  • TraceLoggingInt64(value, [name, ...]):

    INT64 値を持つフィールドを追加します。

  • TraceLoggingUInt64(value, [name, ...]):

    UINT64 値を持つフィールドを追加します。

  • TraceLoggingIntPtr(value, [name, ...]):

    INT_PTR値 (ポインターと同じサイズの符号付き整数) を持つフィールドを追加します。

  • TraceLoggingUIntPtr(value, [name, ...]):

    UINT_PTR値 (ポインターと同じサイズの符号なし整数) を持つフィールドを追加します。

  • TraceLoggingLong(value, [name, ...]):

    LONG 値 (Windows プラットフォームでは 32 ビットの符号付き long int) を持つフィールドを追加します。

  • TraceLoggingULong(value, [name, ...]):

    ULONG 値を持つフィールドを追加します (Windows プラットフォームでは符号なし long int、32 ビット)。

  • TraceLoggingHexInt8(value, [name, ...]):

    16 進数の書式設定ヒントを含む INT8 値を持つフィールドを追加します。

  • TraceLoggingHexUInt8(value, [name, ...]):

    16 進数の書式設定ヒントを含む UINT8 値を持つフィールドを追加します。

  • TraceLoggingHexInt16(value, [name, ...]):

    16 進数の書式設定ヒントを含む INT16 値を持つフィールドを追加します。

  • TraceLoggingHexUInt16(value, [name, ...]):

    16 進数の書式設定ヒントを含む UINT16 値を持つフィールドを追加します。

  • TraceLoggingHexInt32(value, [name, ...]):

    16 進数の書式設定ヒントを含む INT32 値を持つフィールドを追加します。

  • TraceLoggingHexUInt32(value, [name, ...]):

    16 進数の書式設定ヒントを含む UINT32 値を持つフィールドを追加します。

  • TraceLoggingHexInt64(value, [name, ...]):

    16 進数の書式設定ヒントを含む INT64 値を持つフィールドを追加します。

  • TraceLoggingHexUInt64(value, [name, ...]):

    16 進数の書式設定ヒントを含む UINT64 値を持つフィールドを追加します。

  • TraceLoggingHexIntPtr(value, [name, ...]):

    16 進数の書式設定ヒントを含むINT_PTR値を持つフィールドを追加します。

  • TraceLoggingHexUIntPtr(value, [name, ...]):

    16 進数の書式設定ヒントを含むUINT_PTR値を持つフィールドを追加します。

  • TraceLoggingHexLong(value, [name, ...]):

    16 進数の書式設定ヒントを含む LONG 値を持つフィールドを追加します。

  • TraceLoggingHexULong(value, [name, ...]):

    16 進数の書式設定ヒントを含む ULONG 値を持つフィールドを追加します。

  • TraceLoggingFloat32(value, [name, ...]):

    FLOAT (32 ビット浮動小数点) 値を持つフィールドを追加します。

  • TraceLoggingFloat64(value, [name, ...]):

    DOUBLE (64 ビット浮動小数点) 値を持つフィールドを追加します。

  • TraceLoggingBoolean(value, [name, ...]):

    8 ビットのブール値 (Win32 BOOLEAN または C++) を持つフィールドを追加します bool

  • TraceLoggingBool(value, [name, ...]):

    32 ビットのブール値 (Win32 BOOL) を持つフィールドを追加します。

  • TraceLoggingChar(value, [name, ...]):

    値を持つ char フィールドを追加します (通常はコード ページ 1252 として扱われる、文字列書式設定ヒントを含む 8 ビット整数)。

  • TraceLoggingChar16(value, [name, ...]):

    値を持つ char16_t フィールドを追加します (文字列書式ヒントを持つ 16 ビットの整数。通常は UCS-2 として扱われます)。

  • TraceLoggingWChar(value, [name, ...]):

    値を持つフィールドを wchar_t 追加します (Windows プラットフォームの場合と同じです char16_t )。

  • TraceLoggingPointer(value, [name, ...]):

    値を持つフィールドを void* 追加します (ポインター サイズの値と 16 進数の書式設定ヒント)。

  • TraceLoggingCodePointer(value, [name, ...]):

    値を持つ void* フィールドを追加します (コード ポインターの書式設定ヒントを持つポインター サイズの値)。

  • TraceLoggingPid(value, [name, ...]):

    プロセス ID の書式設定ヒントを含む INT32 値を持つフィールドを追加します。

  • TraceLoggingTid(value, [name, ...]):

    スレッド ID の書式設定ヒントを含む INT32 値を持つフィールドを追加します。

  • TraceLoggingIPv4Address(value, [name, ...]):

    IPv4 書式設定ヒント (ネットワーク バイト順) を含む UINT32 値を持つフィールドを追加します。

  • TraceLoggingIPv6Address(pValue, [name, ...]):

    IPv6 書式設定ヒントを含む 16 バイトのバイナリ値を持つフィールドを追加します。

  • TraceLoggingPort(value, [name, ...]):

    IP ポート書式設定ヒント (ネットワーク バイト順) を含む UINT16 値を持つフィールドを追加します。

  • TraceLoggingSocketAddress(pValue, cbValue, [name, ...]):

    SOCKADDR 値を持つフィールドを追加します。

  • TraceLoggingWinError(value, [name, ...]):

    Win32 エラー コードの書式設定ヒントを含む UINT32 値を持つフィールドを追加します。

  • TraceLoggingNTStatus(value, [name, ...]):

    WinNT エラー コードの書式設定ヒントを含む NTSTATUS (LONG) 値を持つフィールドを追加します。

  • TraceLoggingHResult(value, [name, ...]):

    WINDOWS HRESULT 書式設定ヒントを使用して、HRESULT (LONG) 値を持つフィールドを追加します。

  • TraceLoggingFileTime(value, [name, ...]):

    FILETIME 値を持つフィールドを追加します。 C コードで使用する場合、パラメーターは value lvalue 式である必要があります。

  • TraceLoggingFileTimeUtc(value, [name, ...]):

    UTC タイム ゾーンの書式設定ヒントを含む FILETIME 値を持つフィールドを追加します。 C コードで使用する場合、パラメーターは value lvalue 式である必要があります。

  • TraceLoggingSystemTime(value, [name, ...]):

    SYSTEMTIME 値を持つフィールドを追加します。 C コードで使用する場合、パラメーターは value lvalue 式である必要があります。

  • TraceLoggingSystemTimeUtc(value, [name, ...]):

    UTC タイム ゾーンの書式設定ヒントを含む SYSTEMTIME 値を持つフィールドを追加します。 C コードで使用する場合、パラメーターは value lvalue 式である必要があります。

  • TraceLoggingGuid(value, [name, ...]):

    GUID 値を持つフィールドを追加します。 C コードで使用する場合、パラメーターは value lvalue 式である必要があります。

  • TraceLoggingString(pszValue, [name, ...]):

    0 で終わる char 文字列を含むフィールドを追加します (通常はコード ページ 1252 として扱われます)。 pszValue が NULL の場合、空の文字列 "" がフィールド値として使用されます。

  • TraceLoggingUtf8String(pszValue, [name, ...]):

    UTF-8 書式設定ヒントを含む 0 で終わる char 文字列を含むフィールドを追加します。 pszValue が NULL の場合、空の文字列 "" がフィールド値として使用されます。

  • TraceLoggingString16(pszValue, [name, ...]):

    0 で終わる char16_t 文字列 (UTF-16) を含むフィールドを追加します。 pszValue が NULL の場合、空の文字列 u"" がフィールド値として使用されます。

  • TraceLoggingWideString(pszValue, [name, ...]):

    0 で終わる wchar_t 文字列を含むフィールドを追加します (Windows では UTF-16)。 pszValue が NULL の場合、空の文字列 L"" がフィールド値として使用されます。

  • TraceLoggingCountedString(pchValue, cchValue, [name, ...]):

    カウントされた char 文字列を含むフィールドを追加します (通常はコード ページ 1252 として扱われます)。 pchValue は、cchValue が 0 の場合にのみ NULL になります。

  • TraceLoggingCountedUtf8String(pchValue, cchValue, [name, description, tag]):

    UTF-8 書式設定ヒントを含むカウントされた char 文字列を含むフィールドを追加します。 pchValue は、cchValue が 0 の場合にのみ NULL になります。

  • TraceLoggingCountedString16(pchValue, cchValue, [name, ...]):

    カウントされた char16_t 文字列 (UTF-16) を含むフィールドを追加します。 pchValue は、cchValue が 0 の場合にのみ NULL になります。

  • TraceLoggingCountedWideString(pchValue, cchValue, [name, description, tag]):

    カウントされた wchar_t 文字列を含むフィールドを追加します (Windows では UTF-16)。 pchValue は、cchValue が 0 の場合にのみ NULL になります。

  • TraceLoggingAnsiString(pValue, [name, ...]):

    ANSI_STRING値を持つフィールドを追加します。 pValue ポインターは NULL にすることはできません。

  • TraceLoggingUnicodeString(pValue, [name, ...]):

    UNICODE_STRING値を持つフィールドを追加します。 pValue ポインターは NULL にすることはできません。

  • TraceLoggingSid(pValue, [name, ...]):

    SID 値を持つフィールドを追加します。 pValue ポインターは NULL ではなく、正しく初期化された SID を指す必要があります (Revision と SubAuthorityCount は有効である必要があります)。

  • TraceLoggingBinary(pValue, cbValue, [name, ...]):

    バイナリ データを含むフィールドを追加します。

  • TraceLoggingBinaryEx(pValue, cbValue, outType, [name, ...]):

    outType指定された書式設定ヒントを使用して、バイナリ データを含むフィールドを追加します。

  • TraceLoggingBinaryBuffer(pValue, StructType, [name, ...]):

    バイナリ データを含むフィールドを追加します。 pValue は、構造体への NULL 以外のポインターである StructType 必要があります。 pValue->Buffer はデータの先頭を指し、 pValue->Length フィールドに含めるデータのバイト数である必要があります。

  • TraceLoggingBinaryBufferEx(pValue, StructType, outType, name, description, tag):

    outType指定された書式設定ヒントを使用して、バイナリ データを含むフィールドを追加します。 pValue は、構造体への NULL 以外のポインターである StructType 必要があります。 pValue->Buffer はデータの先頭を指し、 pValue->Length フィールドに含めるデータのバイト数である必要があります。

  • TraceLoggingCustom(pValue, cbValue, protocol, bSchema, cbSchema, [name, ...]):

    シリアル化プロトコルに従ってシリアル化されたバイナリ データを含むフィールドを追加します。 イベント デコーダーによる逆シリアル化を可能にするために、コンパイル時定数デコード情報が イベントと共に含まれます。

構造体

TraceLoggingStruct(fieldCount, name, [...]) マクロを使用して、名前付き構造体 (フィールドのグループ) を作成できます。 fieldCount パラメーターは、構造体の一部としてカウントする必要がある後続のフィールドの数を示します。 構造体は入れ子にできます。この場合、入れ子になった各構造体とその含まれるフィールドは、親構造体を定義するために 1 つのフィールドとしてカウントされます。

配列

スカラー (単一) 値の配列を含むフィールドを作成できます。 たとえば、GUID の配列をイベントの 1 つのフィールドとして追加します。

Note

TraceLogging プロトコルではすべての型の配列がサポートされていますが、TraceLoggingProvider.h は単純な値の配列のラッパー マクロのみを提供します。たとえば、INT32 と GUID の配列のマクロを提供しますが、文字列または構造体の配列のマクロは提供しません。 データをバッファーにマーシャリングし、次に説明するマクロを使用して、複雑な値の配列を含むイベントを TraceLoggingPacked 作成できます。

TraceLogging では、固定長配列と可変長配列がサポートされます。

  • コンパイル時に Array 配列の長さが不明で、イベントが生成されるたびに異なる場合は、 マクロを使用します。
  • FixedArrayコンパイル時 (つまり、配列の長さが定数の場合) に配列の長さがわかっている場合は、 マクロを使用します。 これは、特定のイベント名を持つすべてのイベントが配列フィールド内の同じ数の項目を持つことをイベント コンシューマーに伝えます。

すべての配列マクロでは 、pValues パラメーターと cValues パラメーターを指定する必要があります。 pValues は配列コンテンツの先頭を指し、 cValues は 配列内の項目数に設定されます。 pValues は、 cValues が 0 の場合にのみ NULL にすることができます。

すべての配列マクロは、スカラー マクロの説明に従って、必要に応じて 名前説明およびタグ パラメーターを受け入れます。 name が指定されていない場合、フィールド名は pValues のプリプロセッサ テキストから決定されます。 description を指定しない場合、フィールドの説明は になります""tag が指定されていない場合、フィールド タグは になります0

Note

ETW でイベントが削除されないようにするには、大きな配列を使用してイベントを作成しないようにします。 ETW では、64 KB を超えるイベントはサポートされていません。 このようなイベントは、ETW によって自動的に削除されます。 さらに、コンシューマー セッションの BufferSize より大きいイベントも ETW によって削除されます。 イベント サイズは、イベントのヘッダー、メタデータ (プロバイダー、イベント、フィールド名)、およびデータ (フィールド値) の合計に基づきます。

  • TraceLoggingInt8Array(pValues, cValues, [name, ...])
  • TraceLoggingInt8FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingUInt8Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt8FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingInt16Array(pValues, cValues, [name, ...])
  • TraceLoggingInt16FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingUInt16Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt16FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingInt32Array(pValues, cValues, [name, ...])
  • TraceLoggingInt32FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingUInt32Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt32FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingInt64Array(pValues, cValues, [name, ...])
  • TraceLoggingInt64FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingUInt64Array(pValues, cValues, [name, ...])
  • TraceLoggingUInt64FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingIntPtrArray(pValues, cValues, [name, ...])
  • TraceLoggingIntPtrFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingUIntPtrArray(pValues, cValues, [name, ...])
  • TraceLoggingUIntPtrFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingLongArray(pValues, cValues, [name, ...])
  • TraceLoggingLongFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingULongArray(pValues, cValues, [name, ...])
  • TraceLoggingULongFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexInt8Array(pValues, cValues, [name, ...])
  • TraceLoggingHexInt8FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt8Array(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt8FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexInt16Array(pValues, cValues, [name, ...])
  • TraceLoggingHexInt16FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt16Array(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt16FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexInt32Array(pValues, cValues, [name, ...])
  • TraceLoggingHexInt32FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt32Array(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt32FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexInt64Array(pValues, cValues, [name, ...])
  • TraceLoggingHexInt64FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt64Array(pValues, cValues, [name, ...])
  • TraceLoggingHexUInt64FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexIntPtrArray(pValues, cValues, [name, ...])
  • TraceLoggingHexIntPtrFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUIntPtrArray(pValues, cValues, [name, ...])
  • TraceLoggingHexUIntPtrFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexLongArray(pValues, cValues, [name, ...])
  • TraceLoggingHexLongFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingHexULongArray(pValues, cValues, [name, ...])
  • TraceLoggingHexULongFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingFloat32Array(pValues, cValues, [name, ...])
  • TraceLoggingFloat32FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingFloat64Array(pValues, cValues, [name, ...])
  • TraceLoggingFloat64FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingBooleanArray(pValues, cValues, [name, ...])
  • TraceLoggingBooleanFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingBoolArray(pValues, cValues, [name, ...])
  • TraceLoggingBoolFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingCharArray(pValues, cValues, [name, ...])
  • TraceLoggingCharFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingChar16Array(pValues, cValues, [name, ...])
  • TraceLoggingChar16FixedArray(pValues, cValues, [name, ...])
  • TraceLoggingWCharArray(pValues, cValues, [name, ...])
  • TraceLoggingWCharFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingPointerArray(pValues, cValues, [name, ...])
  • TraceLoggingPointerFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingCodePointerArray(pValues, cValues, [name, ...])
  • TraceLoggingCodePointerFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingFileTimeArray(pValues, cValues, [name, ...])
  • TraceLoggingFileTimeFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingFileTimeUtcArray(pValues, cValues, [name, ...])
  • TraceLoggingFileTimeUtcFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingSystemTimeArray(pValues, cValues, [name, ...])
  • TraceLoggingSystemTimeFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingSystemTimeUtcArray(pValues, cValues, [name, ...])
  • TraceLoggingSystemTimeUtcFixedArray(pValues, cValues, [name, ...])
  • TraceLoggingGuidArray(pValues, cValues, [name, ...])
  • TraceLoggingGuidFixedArray(pValues, cValues, [name, ...])

パックされたマクロ

TraceLoggingProvider.h では、blittable フィールド型のフィールド マクロのみが提供されます。つまり、各フィールド マクロが 1 つのフィールドと、フィールドの値を持つ単一の連続したメモリ領域に対応するフィールドです。

TraceLoggingProvider.h では、次のようなより複雑なケースを直接サポートすることはできません。

  • 文字列の配列など、可変長型の配列をログに記録します。
  • 構造体の配列をログに記録する。
  • 1 つのバッファーを介して複数のフィールドを ETW に渡して、イベント ログのオーバーヘッドを減らします。

これらのシナリオをサポートするために、TraceLoggingProvider.h では、イベントのイベント定義 (メタデータ) とフィールド値 (データ) を直接操作できるいくつかの TraceLoggingPacked マクロが定義されています。

警告

マクロは TraceLoggingPacked 正しく使用するのが難しく、TraceLogging イベントの作成方法を十分に理解する必要があります。 誤って使用すると、正しくデコードされない破損したイベントが発生します。

これらのマクロの使用方法の詳細については、TraceLoggingProvider.h ヘッダーのコメントを参照してください。

  • TraceLoggingPackedField(pValue, cbValue, inType, [name, description, tags]):

    フィールド データ (pValue、cbValue) とフィールド メタデータ (名前、inType) を追加します。

  • TraceLoggingPackedFieldEx(pValue, cbValue, inType, outType, [name, ...]):

    書式設定ヒント (outType) と共に、フィールド データ (pValue、cbValue) とフィールド メタデータ (名前、inType) を追加します。

  • TraceLoggingPackedMetadata(inType, [name, ...]):

    フィールド データを追加せずに、フィールド メタデータ (名前、inType) を追加します。 対応するフィールド データは、TraceLoggingPackedData を使用して追加する必要があります。

  • TraceLoggingPackedMetadataEx(inType, outType, [name, ...]):

    フィールド データを追加せずに、フィールド メタデータ (名前、inType) と書式設定ヒント (outType) を追加します。 対応するフィールド データは、TraceLoggingPackedData を使用して追加する必要があります。

  • TraceLoggingPackedStruct(fieldCount, name, [...]):

    構造体のフィールド メタデータ (名前、fieldCount) を追加します。

  • TraceLoggingPackedStructArray(fieldCount, [name, ...]):

    構造体の可変長配列のフィールド メタデータ (名前、fieldCount) を追加します。 配列の長さは TraceLoggingPackedData を使用して指定する必要があります。

  • TraceLoggingPackedData(pValue, cbValue):

    フィールド メタデータを追加せずに、イベントにフィールド データを追加します。 対応するメタデータは、メタデータ マクロを使用して追加する必要があります。

  • TraceLoggingPackedDataEx(pValue, cbValue, dataDescType):

    データのEVENT_DATA_DESCRIPTORで特定Typeの を使用して、フィールド メタデータを追加せずにイベントにフィールド データを追加します。 対応するメタデータは、メタデータ マクロを使用して追加する必要があります。