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)

另請參閱

DestroyThreadpoolEnvironment

FreeLibraryWhenCallbackReturns

InitializeThreadpoolEnvironment

SetThreadpoolCallbackCleanupGroup

SetThreadpoolCallbackPool

SetThreadpoolCallbackPriority

SetThreadpoolCallbackRunsLong

執行緒集區