DsBindByInstanceW 函数 (ntdsapi.h)

DsBindByInstance 函数显式绑定到任何 AD LDS 或 Active Directory 实例。

语法

NTDSAPI_POSTXP DWORD DsBindByInstanceW(
  [in]           LPCWSTR                  ServerName,
  [in]           LPCWSTR                  Annotation,
  [in]           GUID                     *InstanceGuid,
  [in]           LPCWSTR                  DnsDomainName,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  [in, optional] LPCWSTR                  ServicePrincipalName,
  [in, optional] DWORD                    BindFlags,
  [out]          HANDLE                   *phDS
);

参数

[in] ServerName

指向指定实例名称的以 null 结尾的字符串的指针。 此参数需要绑定到 AD LDS 实例。 如果在绑定到 Active Directory 实例时此参数 NULL,则 DnsDomainName 参数必须包含值。 如果此参数和 DnsDomainName 参数都 NULL,则该函数将失败,返回值 ERROR_INVALID_PARAMETER (87)。

[in] Annotation

指向以 null 结尾的字符串的指针,该字符串指定 AD LDS 实例的端口号,或者在绑定到 Active Directory 实例时 NULL。 例如,“389”。

如果按域绑定到 Active Directory 实例时此参数 NULL,则必须指定 DnsDomainName 参数。 如果绑定到 AD LDS 实例时此参数 NULL,则必须指定 InstanceGuid 参数。

[in] InstanceGuid

指向包含 AD LDS 实例 GUIDGUID 值的指针。 GUID 值是实例的 nTDSDSA 对象的 objectGUID 属性。 如果在绑定到 AD LDS 实例时 NULL 此参数,则必须指定 批注 参数。

[in] DnsDomainName

指向以 null 结尾的字符串的指针,该字符串在按域绑定到 Active Directory 实例时指定域的 DNS 名称。 将此参数设置为 NULL,以便按服务器或 AD LDS 实例绑定到 Active Directory 实例。

[in, optional] AuthIdentity

用于启动 RPC 会话的凭据的句柄。 使用 DsMakePasswordCredentials 函数创建适合 AuthIdentity的结构。

[in, optional] ServicePrincipalName

指向一个以 null 结尾的字符串的指针,该字符串指定要分配给客户端的服务主体名称。 在 ServicePrincipalName 中传递 NULL 等效于对 DsBindWithCred 函数的调用。

[in, optional] BindFlags

包含一组用于定义此函数行为的标志。 此参数可以包含以下一个或多个值的零或组合。

NTDSAPI_BIND_ALLOW_DELEGATION (1)

使绑定使用委托模拟级别。 这使需要委派的操作(如 DsAddSidHistory)才能成功。 指定此标志还会导致 DsBindWithSpnEx 运行类似于 DsBindWithSpn

如果未指定此标志,绑定将使用模拟模拟级别。 有关模拟级别的详细信息,请参阅 模拟级别

大多数操作不需要委托模拟级别;仅当需要此标志时,才应指定此标志。 使用委托模拟级别绑定到恶意服务器,恶意服务器可以使用凭据连接到非恶意服务器,并执行意外操作。

NTDSAPI_BIND_FORCE_KERBEROS (4)

Active Directory 轻型目录服务:如果指定了此标志,DsBindWithSpnEx 需要使用 Kerberos 身份验证。 如果无法建立 Kerberos 身份验证,DsBindWithSpnEx 将不会尝试使用任何其他机制进行身份验证。

[out] phDS

接收绑定句柄的 HANDLE 值的地址。 若要关闭此句柄,请调用 DsUnBind

返回值

如果成功或 RPC 或 Win32 错误,则返回 NO_ERROR 否则返回。 可能的错误代码包括以下列表中所列的错误代码。

言论

以下列表列出了绑定到实例所需的参数值。

实例 ServerName 批注 InstanceGuid DnsDomainName
按服务器排序的 Active Directory 服务器名称 NULL NULL NULL
按域排序的 Active Directory NULL NULL NULL DNS 域名
AD LDS(按端口) 安装了 AD LDS 的计算机的 DNS 名称。 端口号 NULL NULL
AD LDS by GUID 安装了 AD LDS 的计算机的 DNS 名称。 NULL 实例 GUID NULL
 
注意, 当绑定到具有多个 AD LDS 实例的计算机上的 AD LDS 实例时,请由实例 GUID 而不是端口号绑定时提高性能。
 

注意

ntdsapi.h 标头将 DsBindByInstance 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows Vista
支持的最低服务器 Windows Server 2008
目标平台 窗户
标头 ntdsapi.h
Ntdsapi.lib
DLL Ntdsapi.dll