ldap_init 函数 (winldap.h)
ldap_init 函数使用 LDAP 服务器初始化会话。
语法
WINLDAPAPI LDAP *LDAPAPI ldap_init(
[in] PSTR HostName,
[in] ULONG PortNumber
);
参数
[in] HostName
指向以 null 结尾的字符串的指针,该字符串包含域名,或以空格分隔的主机名列表或虚线字符串,表示运行要连接的 LDAP 服务器的主机的 IP 地址。 列表中的每个主机名可以包含一个可选端口号,该端口号与主机本身分隔,冒号 (:) 。 有关连接到 Active Directory 服务器时使用 LDAP_OPT_AREC_EXCLUSIVE 选项的详细信息,请参阅“备注”部分。
[in] PortNumber
包含要连接到的 TCP 端口号。 设置为 LDAP_PORT 以获取默认端口 389。 如果主机名包含端口号,则忽略此参数。
返回值
如果函数成功,它将以指向 LDAP 数据结构的指针的形式返回会话句柄。 当不再需要会话句柄时,必须通过调用 ldap_unbind 来释放会话句柄。
如果函数失败,它将返回 NULL。 使用 LdapGetLastError 检索错误代码。
注解
调用 ldap_init 以创建与 LDAP 服务器的连接块。 与 ldap_open不同,对 ldap_init 的 调用不会打开连接。 可以显式调用 ldap_connect ,让库联系服务器。 如果要指定本地超时,在这种情况下,在调用ldap_connect 之前调用 ldap_init 的连接块ldap_set_option,这非常有用。 但是,通常不需要此调用,因为需要打开连接的第一个操作函数 在内部调用ldap_connect 尚未调用。
函数分配 LDAP 数据结构以维护会话的状态数据,并返回此结构的句柄。 在会话期间将此句柄传递给 LDAP 函数调用。
HostName 参数可以为 NULL,在这种情况下,运行时会尝试查找“默认”LDAP 服务器。 调用 ldap_connect 时,将按列出的顺序尝试主机,并在第一次成功连接时停止。 对于 Active Directory 服务器, DsGetDcName 函数可用于获取服务器的名称,然后可将该名称作为 HostName 参数传递,而不是使用 NULL。
即使 使用 ldap_set_option 函数来设置 LDAP_OPT_GETDSNAME_FLAGS 选项,该选项又指定将传递给 DsGetDCName 以发现要连接到哪个 DC 的标志。 除了LDAP_OPT_GETDSNAME_FLAGS指定的标志外,LDAP 客户端还将DS_ONLY_LDAP_NEEDED标志传递给 DsGetDCName。
如果为 HostName 参数传递 NULL,并且调用计算机是 Active Directory 域的成员,则运行时将在尝试连接时在当前计算机所属的域中搜索 DC。
如果为HostName 参数传递 NULL,并且调用的计算机是 Active Directory 域的 DC,则运行时将使用 127.0.0.1 切换 NULL,并在尝试连接时使用环回连接到本地计算机。
如果为 HostName 参数传递了 Active Directory 域名,则 ldap_init 会在该域中找到“默认”LDAP 服务器。
如果 HostName 设置为 NULL 或域名,则应用自动重新连接。 如果连接的 DC 在连接的生存期内由于某种原因停止运行,LDAP 将自动重新连接到指定域中的另一个 DC。 可以使用默认启用 的“LDAP_OPT_AUTO_RECONNECT 会话”选项关闭或打开此行为。
如果为 HostName 参数传递了 Active Directory DNS 服务器名称,则应调用 ldap_set_option 以在调用创建实际连接的任何 LDAP 函数之前设置 LDAP_OPT_AREC_EXCLUSIVE 标志。 这会强制 A 记录查找,并在解析主机名时绕过任何 SRV 记录查找。 对于具有拨号连接的分支机构,使用 A-Record 查找可以避免在解析名称时强制拨号来查询 SRV 记录的远程 DNS 服务器。
如果将全局编录端口号作为参数之一传递给 ldap_init ,则为该端口号传递的 HostName 必须是 对 DsGetDcName () 基础调用的林的名称,才能在企业中正确查找 GC。
多线程处理:调用 ldap_init 是线程安全的。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
最低受支持的服务器 | Windows Server 2008 |
目标平台 | Windows |
标头 | winldap.h |
Library | Wldap32.lib |
DLL | Wldap32.dll |