次の方法で共有


スタティック ライブラリで WPP を使用する方法

WPP トレースは、静的ライブラリ (.lib) とそれを使用するバイナリ (.exe、.dll、または.sys) 間のトレースを個別に制御できるように、静的ライブラリ内で使用できます。

バイナリとライブラリの両方に独自の制御 GUID があります。 これにより、スタティック ライブラリ、バイナリ、またはその両方でトレースを有効にすることができます。

.lib ファイルには、次のコード例に示すように、いくつかのポイントで WPP を使用してアクセスできます。 静的ライブラリは ETW への実際の登録を行う WPP_INIT_TRACING マクロを呼び出していないため、コントロール GUID の実際の値を定義することは重要ではないことに注意してください。

#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID(mylib,(0,0,0,0,0), \
WPP_DEFINE_BIT(Error) \
WPP_DEFINE_BIT(Unusual) \
WPP_DEFINE_BIT(Noise) \
)

ライブラリを使用する.dll、.exe、および.sysファイルは、WPP_INIT_TRACINGを呼び出す必要があります。これによって、プロバイダーが WPP に登録されます。 マクロ WPP_INIT_TRACINGを呼び出すバイナリには、WPP_CONTROL_GUID マクロによって取得された WPP コントロール GUID のコピーが必要です。 フラグ値のコピーは、スタティック ライブラリで定義されているフラグがバイナリでも使用される予定の場合にのみ必要です。

次のコード サンプルでは、静的ライブラリのコントロール GUID が最初に宣言され、コントロール GUID のフラグがライブラリで定義されているフラグと一致します。

#define WPP_CONTROL_GUIDS \
WPP_DEFINE_CONTROL_GUID(SharedStaticLibs,(81b20feb,73a8,4b62,95bc,354477c97a6f), \
WPP_DEFINE_BIT(Error) \
WPP_DEFINE_BIT(Unusual) \
WPP_DEFINE_BIT(Noise) \
) \
WPP_DEFINE_CONTROL_GUID(AppSpecificFlags,(81b20fec,73a8,4b62,95bc,354477c97a6f), \
WPP_DEFINE_BIT(EntryExit) \
WPP_DEFINE_BIT(Initialization) \
WPP_DEFINE_BIT(MemoryAllocations) \
) 

.lib ファイルと .exe ファイルに個別のコントロール GUID を指定し、それぞれ独自のフラグを持つか、両方に 1 つのコントロール GUID を指定することで、コンポーネントとスタティック ライブラリの両方でトレースするために必要なコントロールの次数を選択できます。 このサンプルでは、.exe ファイルは .lib ファイルと同じフラグを使用しています。