Функция 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.
Возвращаемое значение
None
Remarks
Эту функцию следует вызывать, если обратный вызов может получить блокировку загрузчика. Это предотвращает взаимоблокировку, когда один поток в DllMain ожидает завершения обратного вызова, а другой поток, выполняющий обратный вызов, пытается получить блокировку загрузчика.
Если библиотека DLL, содержащая обратный вызов, может быть выгружена, код очистки в DllMain должен отменить невыполненные обратные вызовы перед освобождением объекта.
Управление обратными вызовами, созданными с помощью TP_CALLBACK_ENVIRON, задающей библиотеку обратных вызовов, несколько интенсивно обрабатывается. Следует рассмотреть другие варианты, чтобы гарантировать, что библиотека не выгружается во время выполнения обратных вызовов, или гарантировать, что обратные вызовы, которые могут выполняться, не получают блокировку загрузчика.
Пул потоков предполагает владение ссылкой на библиотеку, предоставленной для этой функции. Вызывающий объект не должен вызывать FreeLibrary для дескриптора модуля после его передачи в эту функцию.
Эта функция реализуется как встроенная функция.
Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0600 или выше.
Требования
Минимальная версия клиента | Windows Vista [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows Server 2008 [классические приложения | Приложения UWP] |
Целевая платформа | Windows |
Header | winbase.h (включая Windows.h) |
См. также раздел
FreeLibraryWhenCallbackReturns
InitializeThreadpoolEnvironment