SetThreadpoolCallbackLibrary 函式 (winbase.h)
確保只要有未完成的回呼,指定的 DLL 仍會保持載入狀態。
語法
void SetThreadpoolCallbackLibrary(
[in, out] PTP_CALLBACK_ENVIRON pcbe,
[in] PVOID mod
);
參數
[in, out] pcbe
定義回呼環境的 TP_CALLBACK_ENVIRON 結構。 InitializeThreadpoolEnvironment函式會傳回這個結構。
[in] mod
DLL 的控制碼。
傳回值
無
備註
如果回呼可能會取得載入器鎖定,您應該呼叫此函式。 這可防止 DllMain 中的一個執行緒等候回呼結束,以及另一個執行回呼嘗試取得載入器鎖定的執行緒時發生死結。
如果可能卸載包含回呼的 DLL,DllMain 中的清除程式碼必須先取消未處理的回呼,才能釋放物件。
使用指定回呼程式庫的TP_CALLBACK_ENVIRON所建立的回呼會稍微耗用大量處理。 您應該考慮其他選項,以確保在回呼執行時不會卸載程式庫,或保證執行中的回呼不會取得載入器鎖定。
執行緒集區會假設提供給此函式的程式庫參考擁有權。 呼叫端不應該在將 FreeLibrary 傳遞給此函式之後,在模組控制碼上呼叫 FreeLibrary 。
此函式會實作為內嵌函式。
若要編譯使用此函式的應用程式,請將_WIN32_WINNT定義為0x0600或更高版本。
規格需求
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winbase.h (包含 Windows.h) |
另請參閱
FreeLibraryWhenCallbackReturns
InitializeThreadpoolEnvironment