次の方法で共有


TraceLoggingUnregister 関数 (traceloggingprovider.h)

トレース ログ プロバイダーの登録を解除します。

構文

void TraceLoggingUnregister(
  TraceLoggingHProvider hProvider
);

パラメーター

hProvider

登録を解除するトレース ログ プロバイダーのハンドル。

戻り値

なし

解説

コンポーネントの実行が開始されると、コンポーネント内のすべての TraceLogging プロバイダー ハンドルは登録解除された状態になり、プロバイダーのハンドルを使用してイベントを生成しようとすると、警告なしに無視されます。 プロバイダーがイベントを書き込む前に、 TraceLoggingRegister を使用してプロバイダーを登録する必要があります。 通常、これはコンポーネントの起動時に行います。 コンポーネントのシャットダウン時に、TraceLoggingUnregister を呼び出してプロバイダーの登録を解除します。たとえば、 で DllMain(DLL_PROCESS_DETACH)wmain、または WinMainからmainを返す前に、失敗した DriverEntry、またはドライバーの Unload ルーチンから戻ります。

TraceLoggingRegister は、同じハンドルで TraceLoggingRegister または TraceLoggingUnregister への他の呼び出しに関してスレッド セーフではありません。 別のスレッドが同じハンドルで TraceLoggingRegister または TraceLoggingUnregister を同時に呼び出す可能性がある場合 は、TraceLoggingRegister を呼び出さないでください。

TraceLoggingRegister が失敗した場合、プロバイダー ハンドルは登録解除されたままになり、プロバイダー ハンドルのすべての使用は安全な操作なしになります。 特に、登録されていないプロバイダー ハンドルを使用して TraceLoggingWrite または TraceLoggingUnregister を呼び出しても安全な操作はありません。

重要

DLL またはドライバーがプロバイダー ハンドルを呼び出すTraceLoggingRegister場合は、DLL またはドライバーがアンロードされる前に、そのプロバイダー ハンドルで を呼び出TraceLoggingUnregister必要があります。 DLL が を呼び出 TraceLoggingUnregisterさずにアンロードすると、プロセスが後でクラッシュする可能性があります。 ドライバーが を呼び出 TraceLoggingUnregisterさずにアンロードすると、システムは後でクラッシュする可能性があります。 関数は TraceLoggingRegister ETW 構成コールバックを確立し TraceLoggingUnregister 、コールバックを取り消します。 コールバックが取り消されず、モジュールがアンロードされると、次に ETW がコールバックを呼び出そうとしたときにクラッシュが発生します。

要件

   
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ | UWP アプリ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリ | UWP アプリ]
Header traceloggingprovider.h
Library Advapi32.lib

関連項目

TraceLoggingRegister

EventUnregister