Partager via


TpSetCallbackRaceWithDll, fonction (winnt.h)

Garantit que la DLL spécifiée reste chargée tant qu’il y a des rappels en attente.

Syntaxe

void TpSetCallbackRaceWithDll(
  [in, out] PTP_CALLBACK_ENVIRON CallbackEnviron,
  [in]      PVOID                DllHandle
);

Paramètres

[in, out] CallbackEnviron

Structure TP_CALLBACK_ENVIRON qui définit l’environnement de rappel. La fonction InitializeThreadpoolEnvironment retourne cette structure.

[in] DllHandle

Handle de la DLL.

Valeur de retour

None

Remarques

Vous devez appeler cette fonction si un rappel peut acquérir le verrou du chargeur. Cela empêche un interblocage lorsqu’un thread dans DllMain attend la fin du rappel et qu’un autre thread qui exécute le rappel tente d’acquérir le verrou du chargeur.

Si la DLL contenant le rappel peut être déchargée, le code de nettoyage dans DllMain doit annuler les rappels en attente avant de libérer l’objet.

La gestion des rappels créés avec un TP_CALLBACK_ENVIRON qui spécifie une bibliothèque de rappels est un traitement quelque peu intensif. Vous devez envisager d’autres options pour vous assurer que la bibliothèque n’est pas déchargée pendant l’exécution des rappels, ou pour garantir que les rappels en cours d’exécution n’acquièrent pas le verrou du chargeur.

Cette fonction est implémentée en tant que fonction inline.

Configuration requise

   
Plateforme cible Windows
En-tête winnt.h

Voir aussi

TpDestroyCallbackEnviron

TpInitializeCallbackEnviron

TpSetCallbackActivationContext

TpSetCallbackCleanupGroup

TpSetCallbackFinalizationCallback

TpSetCallbackLongFunction

TpSetCallbackNoActivationContext

TpSetCallbackPersistent

TpSetCallbackPriority

TpSetCallbackThreadpool