Поделиться через


Функция SetDllDirectoryW (winbase.h)

Добавляет каталог в путь поиска, используемый для поиска библиотек DLL для приложения.

Синтаксис

BOOL SetDllDirectoryW(
  [in, optional] LPCWSTR lpPathName
);

Параметры

[in, optional] lpPathName

Каталог, добавляемый в путь поиска. Если этот параметр является пустой строкой (""), вызов удаляет текущий каталог из порядка поиска библиотеки DLL по умолчанию. Если этот параметр имеет значение NULL, функция восстанавливает порядок поиска по умолчанию.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение ненулевое.

Если функция завершается ошибкой, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите GetLastError.

Замечания

Функция setDllDirectory влияет на все последующие вызовы LoadLibrary и LoadLibraryEx. Он также эффективно отключает безопасный режим поиска DLL, пока указанный каталог находится в пути поиска.

Заметка

Для процессов Win32, которые не выполняя упакованный или защищенный процесс, вызов этой функции также повлияет на порядок поиска библиотек DLL дочерних процессов, запущенных из процесса, который вызвал функцию.

После вызова SetDllDirectoryиспользуется стандартный путь поиска библиотеки DLL:

  1. Каталог, из которого загружено приложение.
  2. Каталог, указанный параметром lpPathName.
  3. Системный каталог. Используйте функцию GetSystemDirectory , чтобы получить путь к этому каталогу. Имя этого каталога — System32.
  4. 16-разрядный системный каталог. Нет функции, которая получает путь к этому каталогу, но выполняется поиск. Имя этого каталога — System.
  5. Каталог Windows. Используйте функцию getWindowsDirectory GetWindowsDirectory, чтобы получить путь к этому каталогу.
  6. Каталоги, перечисленные в переменной среды PATH.
Каждый раз , когда вызывается функция setDllDirectory, она заменяет каталог, указанный в предыдущем вызове SetDllDirect ory. Чтобы указать несколько каталогов, используйте функцию AddDllDirectory и вызовите LoadLibraryEx с LOAD_LIBRARY_SEARCH_USER_DIRS.

Чтобы вернуться к стандартному пути поиска, используемому LoadLibrary и LoadLibraryEx, вызовите SetDllDirectory с значением NULL. Это также восстанавливает безопасный режим поиска DLL на основе значения реестра SafeDllSearchMod e.

Чтобы скомпилировать приложение, использующее эту функцию, определите _WIN32_WINNT как 0x0502 или более поздней версии. Дополнительные сведения см. в разделе Использование заголовков Windows.

Заметка

Заголовок winbase.h определяет SetDllDirectory как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista, Windows XP с пакетом обновления 1 (SP1) [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка winbase.h (включая Windows.h)
библиотеки Kernel32.lib
DLL Kernel32.dll

См. также

AddDllDirectory

порядка поиска библиотеки Dynamic-Link

GetDllDirectory

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadLibraryEx