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 。
此函数作为内联函数实现。
若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为 0x0600 或更高版本。
要求
最低受支持的客户端 | Windows Vista [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2008 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | winbase.h (包括 Windows.h) |
另请参阅
FreeLibraryWhenCallbackReturns
InitializeThreadpoolEnvironment