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) |