Partager via


LoadLibrary et AfxLoadLibrary

Mise à jour : novembre 2007

Les processus appellent LoadLibrary (ou AfxLoadLibrary) pour une liaison explicite avec une DLL. Si l'opération réussit, la fonction mappe la DLL spécifiée dans l'espace d'adressage du processus appelant et retourne à la DLL un handle pouvant être utilisé avec d'autres fonctions employées dans la liaison explicite telles que GetProcAddress et FreeLibrary.

LoadLibrary essaie de retrouver la DLL en effectuant la même séquence de recherche que celle suivie pour la liaison implicite. Si le système ne trouve pas la DLL ou si la fonction de point d'entrée retourne la valeur FALSE, LoadLibrary retourne NULL. Si l'appel à LoadLibrary spécifie un module de DLL déjà mappé dans l'espace d'adressage du processus appelant, la fonction retourne simplement un handle de la DLL et incrémente le décompte de référence du module.

Si la DLL possède une fonction de point d'entrée, le système d'exploitation appelle la fonction dans le contexte du thread ayant appelé LoadLibrary. La fonction de point d'entrée n'est pas appelée si la DLL est déjà attachée au processus à la suite d'un appel précédent à LoadLibrary sans appel correspondant à la fonction FreeLibrary.

Les applications MFC qui chargent les DLL d'extension doivent utiliser AfxLoadLibrary plutôt que LoadLibrary. AfxLoadLibrary gère la synchronisation des threads avant d'appeler LoadLibrary. L'interface (prototype de fonction) de AfxLoadLibrary est la même que celle de LoadLibrary.

Si pour une raison quelconque Windows ne peut pas charger la DLL, le processus peut essayer de récupérer à partir de l'erreur. Par exemple, le processus peut signaler l'erreur à l'utilisateur et lui demander de spécifier un autre chemin d'accès de la DLL.

Note de sécurité :

Si le code doit être exécuté sous Windows NT 4, Windows 2000 ou Windows XP, veillez à spécifier le chemin d'accès complet de toute DLL. Sur ces systèmes d'exploitation, le répertoire actif est parcouru en premier lors du chargement de fichiers. Si vous ne spécifiez pas le chemin d'accès du fichier, un fichier imprévu risque d'être chargé.

Que voulez-vous faire ?

Sur quels éléments souhaitez-vous obtenir des informations supplémentaires ?

Voir aussi

Concepts

DLL