LoadLibrary et AfxLoadLibrary
Les processus appellent LoadLibrary (ou AfxLoadLibrary) pour une liaison explicite avec une DLL.Si la fonction réussit, il mappe la DLL spécifié dans l'espace d'adressage du processus appelant et retourne un handle vers la DLL qui peut être utilisé avec d'autres fonctions dans explicite joindre- pour l'exemple, l' GetProcAddress et l' FreeLibrary.
tente d'LoadLibrary de localiser la DLL à l'aide de la même séquence de recherche utilisée pour la liaison implicite.Si le système ne trouve pas la DLL ou si la fonction de point d'entrée retourne FALSE, LoadLibrary retourne NULL.Si l'appel à LoadLibrary spécifie un module DLL qui est déjà mappé dans l'espace d'adressage du processus appelant, la fonction retourne un handle de la DLL et incrémente le décompte de références du module.
Si la DLL a 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é au processus en raison d'un appel précédent à LoadLibrary qui n'a aucun appel correspondant à la fonction d' FreeLibrary .
Pour les applications MFC qui chargent des DLL d'extension, nous recommandons d'utiliser AfxLoadLibrary à la place de LoadLibrary.AfxLoadLibrary gère la synchronisation des threads avant l'appel de LoadLibrary.L'interface (prototype de fonction) de AfxLoadLibrary est identique à celle de LoadLibrary.
Si Windows ne peut pas charger la DLL, le processus peut tenter de récupérer à partir de l'erreur.Par exemple, il peut notifier l'erreur à l'utilisateur et lui demander de spécifier un autre chemin d'accès à la DLL.
Note de sécurité |
---|
Si le code est d'exécuter sous Windows NT, Windows 2000, ou Windows XP (avant le SP1), veillez à spécifier le chemin d'accès complet de toutes les DLL.Sur ces systèmes d'exploitation, la recherche porte d'abord sur le répertoire actif lors du chargement des fichiers.Si vous ne pas qualifier le chemin d'accès du fichier, un fichier qui n'est pas prévu le peut être chargé. |