dsBindWithSpnA 函数 (ntdsapi.h)

DsBindWithSpn 函数使用指定的凭据和特定的服务主体名称绑定到域控制器, (SPN) 进行相互身份验证。

此函数针对需要完全控制相互身份验证的情况提供。 如果希望 DsBind 为你查找服务器,请不要使用此函数,因为 SPN 特定于计算机,并且你提供的 SPN 不太可能与 DsBind 为你找到的服务器匹配。 提供 NULLServicePrincipalName 参数会导致与 DsBindWithCred 相同的行为。

语法

NTDSAPI DWORD DsBindWithSpnA(
  [in, optional] LPCSTR                   DomainControllerName,
  [in, optional] LPCSTR                   DnsDomainName,
  [in, optional] RPC_AUTH_IDENTITY_HANDLE AuthIdentity,
  [in, optional] LPCSTR                   ServicePrincipalName,
  [out]          HANDLE                   *phDS
);

参数

[in, optional] DomainControllerName

指向以 null 结尾的字符串的指针,该字符串包含要绑定到的域的完全限定 DNS 名称。 有关详细信息,请参阅 DsBind 主题中的 DomainControllerName 说明。

[in, optional] DnsDomainName

指向以 null 结尾的字符串的指针,该字符串包含要绑定到的域的完全限定 DNS 名称。 有关详细信息,请参阅 DsBind 主题中的 DnsDomainName 说明。

[in, optional] AuthIdentity

包含表示要用于绑定的凭据 的RPC_AUTH_IDENTITY_HANDLE 值。 The

DsMakePasswordCredentials 函数用于获取此值。 如果此参数为 NULL,则使用调用线程的凭据。

在使用 DsFreePasswordCredentials 函数释放此句柄之前,必须调用 DsUnBind

[in, optional] ServicePrincipalName

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

[out] phDS

接收绑定句柄的 HANDLE 值的地址。 若要关闭此句柄,请将其传递给 DsUnBind 函数。

返回值

如果成功 则返回ERROR_SUCCESS,否则返回 Windows 或 RPC 错误代码。 下面是最常见的错误代码。

注解

注意

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

要求

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

另请参阅

域控制器和复制管理功能

DsBind

DsBindWithCred

DsUnBind