TpSetCallbackRaceWithDll 関数 (winnt.h)
未処理のコールバックがある限り、指定した DLL が確実に読み込まれたままになります。
構文
void TpSetCallbackRaceWithDll(
[in, out] PTP_CALLBACK_ENVIRON CallbackEnviron,
[in] PVOID DllHandle
);
パラメーター
[in, out] CallbackEnviron
コールバック環境を定義する TP_CALLBACK_ENVIRON 構造体。 InitializeThreadpoolEnvironment 関数は、この構造体を返します。
[in] DllHandle
DLL へのハンドル。
戻り値
なし
解説
コールバックがローダー ロックを取得する可能性がある場合は、この関数を呼び出す必要があります。 これにより、DllMain 内の 1 つのスレッドがコールバックの終了を待機していて、コールバックを実行している別のスレッドがローダー ロックの取得を試みたときにデッドロックが発生するのを防ぎます。
コールバックを含む DLL がアンロードされる可能性がある場合、DllMain のクリーンアップ コードは、オブジェクトを解放する前に未処理のコールバックを取り消す必要があります。
コールバック ライブラリを指定するTP_CALLBACK_ENVIRONを使用して作成されたコールバックの管理は、処理が多少集中します。 コールバックの実行中にライブラリがアンロードされないようにしたり、実行中のコールバックがローダー ロックを取得しないことを保証したりするための他のオプションを検討する必要があります。
この関数はインライン関数として実装されます。
要件
対象プラットフォーム | Windows |
ヘッダー | winnt.h |
関連項目
TpSetCallbackActivationContext
TpSetCallbackFinalizationCallback