LsaEnumerateTrustedDomains 函数 (ntsecapi.h)

LsaEnumerateTrustedDomains 函数检索受信任的域的名称和 SID,以便对登录凭据进行身份验证。 LsaEnumerateTrustedDomains 适用于运行 Windows NT 4.0 或更低版本的 Windows NT 的系统。 将 DsEnumerateDomainTrusts 用于任何其他信任枚举目的。 具体而言, LsaEnumerateTrustedDomains 仅当以下一项或多项为 true 时才能使用:

  • 调用系统运行的是 Windows NT 4.0 或早期版本的 Windows NT。
  • 使用 PolicyHandle 参数) 指定的目标系统 (,是运行 Windows NT 4.0 或更低版本的域控制器。
  • 调用系统运行Windows NT 4.0 或更早版本,不是域控制器,目标系统是调用系统的域中的域控制器。 目标系统可以运行任何版本的Windows NT,包括 Windows 2000 和 Windows XP。

语法

NTSTATUS LsaEnumerateTrustedDomains(
  [in]  LSA_HANDLE              PolicyHandle,
  [in]  PLSA_ENUMERATION_HANDLE EnumerationContext,
  [out] PVOID                   *Buffer,
  [in]  ULONG                   PreferedMaximumLength,
  [out] PULONG                  CountReturned
);

参数

[in] PolicyHandle

Policy 对象的句柄。 句柄必须具有POLICY_VIEW_LOCAL_INFORMATION访问权限。 有关详细信息,请参阅 打开策略对象句柄

[in] EnumerationContext

指向枚举句柄的指针,该句柄使你能够进行多次调用来枚举所有受信任的域。 首次调用 LsaEnumerateTrustedDomains 时, EnumerationContext 必须指向已初始化为零的变量。 在后续调用 LsaEnumerateTrustedDomains 时, EnumerationContext 必须指向上一次调用返回的枚举句柄。

[out] Buffer

接收指向包含一个或多个受信任域的名称和 SID 的 LSA_TRUST_INFORMATION 结构的数组的指针。

如果不再需要这些信息,请将返回的指针传递给 LsaFreeMemory

[in] PreferedMaximumLength

指定返回缓冲区的首选最大大小(以字节为单位)。 此信息是近似的;返回的实际字节数可能大于此值。

[out] CountReturned

指向一个变量的指针,该变量接收 Buffer 参数中返回的元素数。

返回值

如果函数成功,则返回值为以下 NTSTATUS 值之一。

说明
STATUS_SUCCESS
枚举已成功完成。
STATUS_MORE_ENTRIES
调用成功,但要枚举的受信任域更多。 再次调用 LsaEnumerateTrustedDomains ,传递 EnumerationContext 参数中返回的值。
STATUS_NO_MORE_ENTRIES
不再有要枚举的受信任域。
 

如果函数失败,则返回值为 NTSTATUS 代码。 有关详细信息,请参阅 LSA 策略函数返回值

可以使用 LsaNtStatusToWinError 函数将 NTSTATUS 代码转换为 Windows 错误代码。

注解

对于域控制器仅运行 Windows NT 4.0 或更低版本的 Windows NT 的域,LsaEnumerateTrustedDomains 将返回所有受信任域的列表。 在 4.0 版(包括 4.0 版)的 Windows NT版本中,所有受信任的域都直接受信任。

在 Windows XP 和 Windows 2000 混合模式域中,域控制器可能运行 Windows XP、Windows 2000 或 Windows NT。 因此,在混合模式域中,某些受信任的域直接受信任,而其他域则间接受信任。 在枚举混合模式域中系统的受信任域时, LsaEnumerateTrustedDomains 仅返回直接受信任的域。

相比之下,Windows XP 和 Windows 2000 本机模式域仅包含 Windows 2000 域控制器,即使域中可能存在运行 Windows NT 4.0 或更低版本的成员。 在本机模式 Windows XP 和 Windows 2000 域中枚举系统的受信任域时, LsaEnumerateTrustedDomains 将返回直接信任和间接受信任的域。

检索所有信任信息可能需要多个 LsaEnumerateTrustedDomains 调用。 可以使用 EnumerationContext 参数进行多个调用,如下所示:在第一次调用时,将 EnumerationContext 指向的变量设置为零。 如果 LsaEnumerateTrustedDomains 返回STATUS_SUCCESS或STATUS_MORE_ENTRIES,请再次调用函数,并传入上一次调用返回的 EnumerationContext 值。 当函数返回STATUS_NO_MORE_ENTRIES时,枚举完成。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 ntsecapi.h
Library Advapi32.lib
DLL Advapi32.dll

另请参阅

LSA_TRUST_INFORMATION

LsaEnumerateTrustedDomainsEx

LsaFreeMemory

LsaOpenPolicy