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


функция ldap_open (winldap.h)

[ldap_open доступно для использования в операционных системах, указанных в разделе Требования, однако это не рекомендуется. Вместо этого используйте ldap_init.]

Функция ldap_open создает и инициализирует блок подключения, а затем открывает подключение к серверу LDAP.

Синтаксис

WINLDAPAPI LDAP *LDAPAPI ldap_open(
  [in] PSTR  HostName,
  [in] ULONG PortNumber
);

Параметры

[in] HostName

Указатель на строку, завершаемую null. Доменное имя, список имен узлов или пунктирные строки, представляющие IP-адрес узлов сервера LDAP. Используйте одно пространство для разделения имен узлов в списке. За каждым именем узла в списке может следовать номер порта. Необязательный номер порта отделяется от самого узла двоеточием (:). Во время выполнения LDAP пытается подключиться к узлам в указанном порядке, останавливаясь при успешном подключении. Имейте в виду, что только ldap_open пытается установить соединение, прежде чем вернуться к вызывающему объекту. Функция ldap_init не подключается к серверу LDAP.

[in] PortNumber

Содержит номер TCP-порта, к которому нужно подключиться. Порт LDAP по умолчанию 389 можно получить, указав константный LDAP_PORT. Если имя узла содержит номер порта, этот параметр игнорируется.

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

Если функция выполняется успешно, она возвращает дескриптор сеанса в виде указателя на структуру данных LDAP. Если дескриптор сеанса больше не требуется, освободите его с помощью вызова ldap_unbind.

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

Комментарии

Вызовите ldap_open , чтобы создать блок подключения к серверу LDAP. HostName может иметь значение NULL, в этом случае во время выполнения выполняется попытка найти сервер LDAP по умолчанию. Имена узлов пробуются в указанном порядке и останавливаются при первом успешном подключении. Для серверов Active Directory можно использовать функцию DsGetDcName , чтобы получить имя сервера, которое затем можно передать в качестве параметра HostName вместо null.

Если для параметра HostName задано значение NULL или доменное имя, применяется автоматическое повторное подключение. Если подключенный контроллер домена по какой-либо причине перестает работать в течение времени существования подключения, LDAP автоматически повторно подключится к другому контроллеру домена в указанном домене. Это поведение можно отключить или включить с помощью параметра сеанса LDAP_OPT_AUTO_RECONNECT , который включен по умолчанию.

При использовании LDAP_OPT_HOST_NAME используется ldap-сервер по умолчанию. Этот параметр задает имя узла сервера LDAP по умолчанию и возвращает имя узла сервера в Юникоде или ANSI в зависимости от использования ldap_get_optionW или ldap_get_optionA соответственно.

Если номер порта глобального каталога передается ldap_open в качестве одного из аргументов, то имя узла, переданное для этого номера порта, должно быть именем леса для базового вызова DsGetDcName(), чтобы правильно найти сборку мусора в предприятии.

Функция ldap_open выделяет структуру данных LDAP для хранения данных о состоянии сеанса и возвращает дескриптор этой структуре. Передайте этот дескриптор последующим вызовам функций LDAP в ходе сеанса.

Многопоточность: вызовы ldap_open потокобезопасны.

Обратите внимание, ldap_open не рекомендуется использовать текущий протокол LDAP RFC, так как он сразу же открывает сеанс для контроллера домена, не предоставляя вызывающему приложению возможность настроить любые параметры сеанса, например (и, самое главное, параметры сеанса, связанные с безопасностью). Пользователям рекомендуется использовать ldap_init в качестве предпочтительного метода инициализации сеанса LDAP.
 

Требования

   
Минимальная версия клиента Windows Vista
Минимальная версия сервера Windows Server 2008
Целевая платформа Windows
Header winldap.h
Библиотека Wldap32.lib
DLL Wldap32.dll

См. также

Функции

LdapGetLastError

cldap_open

ldap_init

ldap_unbind