次の方法で共有


traceloggingprovider.h ヘッダー

TraceLogging は、マニフェストなしでデコードできる自己記述型イベントをログに記録するためのシステムです。 Windows では、TraceLogging を使用して Windows イベント トレーシング (ETW) イベントを生成します。

Windows SDK の TraceLoggingProvider.h ヘッダーには、C または C++ を使用してカーネル およびユーザー モード コードの TraceLogging でエンコードされた ETW イベントを生成するためのマクロとインライン関数があります。

注意

TraceLoggingProvider.h には、プロバイダー名、イベント名、フィールド名などのイベント属性のコンパイル時定数値が必要です。 実行時のオーバーヘッドを最小限に抑えるために、 TraceLoggingProvider.h はコンパイル時にデータ構造を構築し、その情報を読み取り専用メモリに格納します。 ランタイム動的イベントを生成する必要がある場合は、 TraceLoggingDynamic などの別の TraceLogging 実装を使用する必要があります。

クイック スタート

  • .c または .cpp ファイルで、 TRACELOGGING_DEFINE_PROVIDER マクロを使用してグローバル プロバイダー ハンドルを宣言します。 プロバイダー ハンドルは、ETW へのコンポーネントの接続を表します。
  • コンポーネントの起動時 (、または DriverEntryなど) にはmainwmainDllMain、TraceLoggingRegister 関数を使用して、ETW へのコンポーネントの接続を開きます。
  • コンポーネントのシャットダウン時に TraceLoggingUnregister 関数を使用して、ETW へのコンポーネントの接続を閉じます。
  • コンポーネントの実行中に TraceLoggingWrite マクロを使用して、TraceLogging でエンコードされた ETW イベントを生成します。
  • 必要に応じて、ヘッダーで TRACELOGGING_DECLARE_PROVIDER マクロを使用してプロバイダー ハンドルを前方宣言し、コンポーネントの他の部分で使用できるようにします。
  • WPRトレースログトレースビューなどのツールを使用してトレースを収集します。
  • WPAtracefmt、traceview などのツールを使用して、トレースをデコードして表示します。

#include <windows.h> // or <wdm.h> for kernel-mode.
#include <winmeta.h> // For event level definitions.
#include <TraceLoggingProvider.h>

TRACELOGGING_DEFINE_PROVIDER( // defines g_hProvider
    g_hProvider, // Name of the provider handle
    "MyCompany.MyComponent", // Human-readable name for the provider
    // {ce5fa4ea-ab00-5402-8b76-9f76ac858fb5}
    (0xce5fa4ea,0xab00,0x5402,0x8b,0x76,0x9f,0x76,0xac,0x85,0x8f,0xb5));

int main(int argc, char* argv[]) // or DriverEntry for kernel-mode.
{
    TraceLoggingRegister(g_hProvider);

    TraceLoggingWrite(
        g_hProvider,
        "MyEvent1",
        TraceLoggingLevel(WINEVENT_LEVEL_WARNING), // Levels defined in <winmeta.h>
        TraceLoggingKeyword(MyEventCategories), // Provider-defined categories
        TraceLoggingString(argv[0], "arg0"), // field name is "arg0"
        TraceLoggingInt32(argc)); // field name is implicitly "argc"

    TraceLoggingUnregister(g_hProvider);
    return 0;
}

詳細については、次を参照してください。

traceloggingprovider.h には、次のプログラミング インターフェイスが含まれています。

関数

 
TRACELOGGING_DECLARE_PROVIDER

トレース ログ プロバイダーのハンドルを前方宣言します。
TRACELOGGING_DEFINE_PROVIDER

トレース ログ プロバイダーのハンドルを定義します。
TRACELOGGING_DEFINE_PROVIDER_STORAGE

ユーザーによって定義される TraceLogging プロバイダー ハンドルの静的ストレージを予約します。 このマクロよりもTRACELOGGING_DEFINE_PROVIDERを優先します。
TraceLoggingBinary

バイナリ データを含むフィールドをイベントに追加する TraceLogging ラッパー マクロ。
TraceLoggingChannel

イベントのチャネルを設定する TraceLogging ラッパー マクロ。
TraceLoggingCustom

カスタム シリアライザーを使用してパックされたフィールドをイベントに追加する TraceLogging ラッパー マクロ。
TraceLoggingCustomAttribute

イベントに関するカスタム情報を PDB に追加する TraceLogging ラッパー マクロ。
TraceLoggingDescription

イベントの説明を設定する TraceLogging ラッパー マクロ。
TraceLoggingEventTag

イベントのイベント タグを設定する TraceLogging ラッパー マクロ。
TraceLoggingKeyword

イベントのキーワード (keyword)を設定する TraceLogging ラッパー マクロ。
TraceLoggingLevel

イベントのレベルを設定する TraceLogging ラッパー マクロ
TraceLoggingOpcode

イベントのオペコードを設定する TraceLogging ラッパー マクロ
TraceLoggingOptionGroup

プロバイダー グループを指定するためにTRACELOGGING_DEFINE_PROVIDERで使用する TraceLogging マクロ。
TraceLoggingProviderEnabled

トレース コンシューマーがこのプロバイダーからのイベントをリッスンしているかどうかを判断する TraceLogging マクロ。
TraceLoggingProviderId

トレース ログ プロバイダーのプロバイダー ID を取得します。
TraceLoggingRegister

イベントをログに記録するために使用できるように、TraceLogging プロバイダーを登録します。
TraceLoggingRegisterEx

イベントのログ記録に使用できるようにトレース ログ プロバイダーを登録し、ETW 有効化コールバックを指定します。
TraceLoggingSetInformation

EventSetInformation を呼び出してトレース ログ プロバイダーを構成します。
TraceLoggingSocketAddress

ソケット アドレスを持つフィールドをイベントに追加する TraceLogging ラッパー マクロ。
TraceLoggingStruct

他のフィールドを含むフィールドをイベントに追加する TraceLogging ラッパー マクロ。
TraceLoggingUnregister

TraceLogging プロバイダーの登録を解除します。
TraceLoggingValue

自動的に推測される型を持つフィールドをイベントに追加する C++ の TraceLogging ラッパー マクロ。
TraceLoggingWrite

TraceLogging イベントを生成します。
TraceLoggingWriteActivity

指定したアクティビティ ID を持つ TraceLogging イベントを生成します。