Partager via


SetDllDirectoryA, fonction (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 est NULL, la fonction restaure l’ordre de recherche par défaut.

Valeur de retour

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’erreur étendues, 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 DLL sans échec pendant que le répertoire spécifié se trouve dans le chemin de recherche.

Note

Pour les processus Win32 qui ne sont pas en cours d’exécution d’un 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 DLL standard est :

  1. Répertoire à partir duquel l’application a chargé.
  2. Répertoire spécifié par le paramètre lpPathName.
  3. Répertoire 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. Il n’existe aucune fonction qui obtient le chemin d’accès de ce répertoire, mais elle est recherchée. 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 DLL sans échec en fonction de la valeur de Registre SafeDllSearchMode.

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

Note

L’en-tête winbase.h définit SetDllDirectory comme 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows Vista, Windows XP avec SP1 [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
plateforme cible Windows
d’en-tête winbase.h (inclure Windows.h)
bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

AddDllDirectory

Dynamic-Link ordre de recherche de bibliothèque

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

loadLibraryEx