Partager via


DllCanUnloadNow, fonction (combaseapi.h)

Détermine si la DLL qui implémente cette fonction est en cours d’utilisation. Si ce n’est pas le cas, l’appelant peut décharger la DLL de la mémoire.

OLE ne fournit pas cette fonction. Les DLL qui prennent en charge le modèle objet de composant OLE (COM) doivent implémenter et exporter DllCanUnloadNow.

Syntaxe

HRESULT DllCanUnloadNow();

Valeur de retour

Si la fonction réussit, la valeur de retour est S_OK. Sinon, c’est S_FALSE.

Remarques

Un appel à DllCanUnloadNow détermine si la DLL à partir de laquelle il est exporté est toujours en cours d’utilisation. Une DLL n’est plus utilisée lorsqu’elle ne gère aucun objet existant (le nombre de références sur tous ses objets est de 0).

Remarques aux appelants

Vous ne devriez pas avoir à appeler DllCanUnloadNow directement. OLE l’appelle uniquement via un appel à la fonction CoFreeUnusedLibraries . Lorsqu’elle retourne S_OK, CoFreeUnusedLibraries libère la DLL.

Remarques aux implémenteurs

Vous devez implémenter DllCanUnloadNow dans et l’exporter à partir de DLL qui doivent être chargées dynamiquement via un appel à la fonction CoGetClassObject . (Vous devez également implémenter et exporter la fonction DllGetClassObject dans la même DLL).

Si une DLL chargée via un appel à CoGetClassObject ne parvient pas à exporter DllCanUnloadNow, la DLL n’est pas déchargée tant que l’application n’appelle pas la fonction CoUninitialize pour libérer les bibliothèques OLE.

DllCanUnloadNow doit retourner S_FALSE s’il existe des références à des objets que la DLL gère.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h (inclure Objbase.h)

Voir aussi

DllGetClassObject