Функция 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.
Возвращаемое значение
None
Remarks
Эту функцию следует вызывать, если обратный вызов может получить блокировку загрузчика. Это предотвращает взаимоблокировку, когда один поток в DllMain ожидает завершения обратного вызова, а другой поток, выполняющий обратный вызов, пытается получить блокировку загрузчика.
Если библиотека DLL, содержащая обратный вызов, может быть выгружена, код очистки в DllMain должен отменить невыполненные обратные вызовы перед освобождением объекта.
Управление обратными вызовами, созданными с помощью TP_CALLBACK_ENVIRON, указывающей библиотеку обратных вызовов, несколько интенсивно обрабатывается. Следует рассмотреть другие варианты, чтобы гарантировать, что библиотека не выгружается во время выполнения обратных вызовов, или гарантировать, что обратные вызовы, которые могут выполняться, не получают блокировку загрузчика.
Эта функция реализована как встроенная функция.
Требования
Целевая платформа | Windows |
Header | winnt.h |
См. также раздел
TpSetCallbackActivationContext
TpSetCallbackFinalizationCallback