Fonction SetDllDirectoryA (winbase.h)

Ajoute un répertoire au chemin de recherche utilisé pour localiser les DLL de l’application.

Syntaxe

BOOL SetDllDirectoryA(
  [in, optional] LPCSTR lpPathName
);

Paramètres

[in, optional] lpPathName

Répertoire à ajouter au chemin de recherche. Si ce paramètre est une chaîne vide («  »), l’appel supprime le répertoire actif de l’ordre de recherche dll par défaut. Si ce paramètre a la valeur NULL, la fonction restaure l’ordre de recherche par défaut.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.

Remarques

La fonction SetDllDirectory affecte tous les appels suivants aux fonctions LoadLibrary et LoadLibraryEx . Il désactive également efficacement le mode de recherche de DLL sans échec lorsque le répertoire spécifié se trouve dans le chemin de recherche.

Notes

Pour les processus Win32 qui n’exécutent pas de processus empaqueté ou protégé, l’appel de cette fonction affecte également l’ordre de recherche dll des processus enfants démarrés à partir du processus qui a appelé la fonction.

Après avoir appelé SetDllDirectory, le chemin de recherche DE DLL standard est :

  1. Répertoire à partir duquel l’application a été chargée.
  2. Répertoire spécifié par le paramètre lpPathName .
  3. Répertoire du système. Utilisez la fonction GetSystemDirectory pour obtenir le chemin d’accès de ce répertoire. Le nom de ce répertoire est System32.
  4. Répertoire système 16 bits. Aucune fonction n’obtient le chemin d’accès de ce répertoire, mais elle fait l’objet d’une recherche. Le nom de ce répertoire est System.
  5. Répertoire Windows. Utilisez la fonction GetWindowsDirectory pour obtenir le chemin d’accès de ce répertoire.
  6. Répertoires répertoriés dans la variable d’environnement PATH.
Chaque fois que la fonction SetDllDirectory est appelée, elle remplace le répertoire spécifié dans l’appel SetDllDirectory précédent. Pour spécifier plusieurs répertoires, utilisez la fonction AddDllDirectory et appelez LoadLibraryEx avec LOAD_LIBRARY_SEARCH_USER_DIRS.

Pour revenir au chemin de recherche standard utilisé par LoadLibrary et LoadLibraryEx, appelez SetDllDirectory avec NULL. Cela restaure également le mode de recherche de DLL sans échec en fonction de la valeur de Registre SafeDllSearchMode .

Pour compiler une application qui utilise cette fonction, définissez _WIN32_WINNT comme 0x0502 ou version ultérieure. Pour plus d’informations, consultez Utilisation des en-têtes Windows.

Notes

L’en-tête winbase.h définit SetDllDirectory comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista, Windows XP avec SP1 [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête winbase.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

AddDllDirectory

Ordre de recherche de bibliothèque de liens dynamiques

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx