Función SetDllDirectoryA (winbase.h)

Agrega un directorio a la ruta de acceso de búsqueda que se usa para buscar archivos DLL para la aplicación.

Sintaxis

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

Parámetros

[in, optional] lpPathName

Directorio que se va a agregar a la ruta de acceso de búsqueda. Si este parámetro es una cadena vacía (""), la llamada quita el directorio actual del orden de búsqueda de DLL predeterminado. Si este parámetro es NULL, la función restaura el orden de búsqueda predeterminado.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función SetDllDirectory afecta a todas las llamadas posteriores a las funciones LoadLibrary y LoadLibraryEx . También deshabilita eficazmente el modo de búsqueda de DLL seguro mientras el directorio especificado está en la ruta de acceso de búsqueda.

Nota

En el caso de los procesos Win32 que no ejecutan un proceso empaquetado o protegido, llamar a esta función también afectará al orden de búsqueda DLL de los procesos secundarios iniciados desde el proceso que ha llamado a la función.

Después de llamar a SetDllDirectory, la ruta de búsqueda de DLL estándar es:

  1. Directorio desde el que se cargó la aplicación.
  2. Directorio especificado por el parámetro lpPathName .
  3. Directorio del sistema. Use la función GetSystemDirectory para obtener la ruta de acceso de este directorio. El nombre de este directorio es System32.
  4. Directorio del sistema de 16 bits. No hay ninguna función que obtenga la ruta de acceso de este directorio, pero se busca. El nombre de este directorio es System.
  5. El directorio de Windows. Use la función GetWindowsDirectory para obtener la ruta de acceso de este directorio.
  6. Los directorios que aparecen en la variable de entorno PATH.
Cada vez que se llama a la función SetDllDirectory , reemplaza el directorio especificado en la llamada a SetDllDirectory anterior. Para especificar más de un directorio, use la función AddDllDirectory y llame a LoadLibraryEx con LOAD_LIBRARY_SEARCH_USER_DIRS.

Para revertir a la ruta de acceso de búsqueda estándar usada por LoadLibrary y LoadLibraryEx, llame a SetDllDirectory con NULL. Esto también restaura el modo de búsqueda de DLL seguro basado en el valor del registro SafeDllSearchMode .

Para compilar una aplicación que usa esta función, defina _WIN32_WINNT como 0x0502 o posterior. Para obtener más información, vea Usar los encabezados de Windows.

Nota

El encabezado winbase.h define SetDllDirectory como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista, Windows XP con SP1 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winbase.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

AddDllDirectory

Orden de búsqueda de la biblioteca de vínculos dinámicos

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx