Поделиться через


Функция 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

См. также раздел

TpDestroyCallbackEnviron

TpInitializeCallbackEnviron

TpSetCallbackActivationContext

TpSetCallbackCleanupGroup

TpSetCallbackFinalizationCallback

TpSetCallbackLongFunction

TpSetCallbackNoActivationContext

TpSetCallbackPersistent

TpSetCallbackPriority

TpSetCallbackThreadpool