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
など) にはmain
wmain
DllMain
、TraceLoggingRegister 関数を使用して、ETW へのコンポーネントの接続を開きます。 - コンポーネントのシャットダウン時に TraceLoggingUnregister 関数を使用して、ETW へのコンポーネントの接続を閉じます。
- コンポーネントの実行中に TraceLoggingWrite マクロを使用して、TraceLogging でエンコードされた ETW イベントを生成します。
- 必要に応じて、ヘッダーで TRACELOGGING_DECLARE_PROVIDER マクロを使用してプロバイダー ハンドルを前方宣言し、コンポーネントの他の部分で使用できるようにします。
- WPR、トレースログ、トレースビューなどのツールを使用してトレースを収集します。
- WPA、tracefmt、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;
}
詳細については、次を参照してください。
- TraceLogging
- TraceLogging ラッパー マクロ
- TraceLoggingWrite
- TRACELOGGING_DECLARE_PROVIDER
- TRACELOGGING_DEFINE_PROVIDER
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 イベントを生成します。 |