DsGetDcNextA 函数 (dsgetdc.h)
DsGetDcNext 函数检索域控制器枚举操作中的下一个域控制器。
语法
DSGETDCAPI DWORD DsGetDcNextA(
[in] HANDLE GetDcContextHandle,
[out, optional] PULONG SockAddressCount,
[out, optional] LPSOCKET_ADDRESS *SockAddresses,
[out, optional] LPSTR *DnsHostName
);
参数
[in] GetDcContextHandle
包含由 DsGetDcOpen 函数提供的域控制器枚举上下文句柄。
[out, optional] SockAddressCount
指向 ULONG 值的指针,该值接收 SockAddresses 数组中的元素数。 如果此参数 NULL,则不会检索套接字地址。
[out, optional] SockAddresses
指向接收域控制器套接字地址数据的 SOCKET_ADDRESS 结构的数组的指针。 SockAddressCount 接收此数组中的元素数。
所有返回的地址的类型为 AF_INET 或 AF_INET6。 sin_port 成员包含服务器记录中的端口。 端口 0 表示 DNS 中没有可用的端口。
调用方必须通过调用 localFree
如果 SockAddressCountNULL,则忽略此参数。
[out, optional] DnsHostName
指向接收域控制器 DNS 名称的字符串指针的指针。
如果不知道主机名,此参数将接收 NULL。 调用方必须通过调用 netApiBufferFree
返回值
如果成功或 Win32 或 RPC 错误,则返回 ERROR_SUCCESS 否则返回。 可能的错误值包括以下内容。
言论
若要重置枚举,请通过调用 DsGetDcClose 关闭当前枚举,然后再次调用 DsGetDcOpen 重新打开枚举。
DsGetDcNext 返回的 DC 不是只读 DC(RODC),因为这些 DC 仅注册特定于站点的记录和 CName 记录,DsGetDcNext 和 DsGetDcOpen 查找 DNS SRV 记录。
以下过程演示如何从运行 Windows Server 2008 的计算机获取完整的 DC 列表。
获取域控制器的完整列表
- 使用 DsGetDcName 获取域控制器名称。
- 使用 DsBind 连接到该域控制器。
- 使用 InfoLevel 3 (DS_DOMAIN_CONTROLLER_INFO_3) 调用 DsGetDomainControllerInfo 以获取完整列表,包括 RODC。
注意
dsgetdc.h 标头将 DsGetDcNext 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
支持的最低服务器 | Windows Server 2008 |
目标平台 | 窗户 |
标头 | dsgetdc.h |
库 | Netapi32.lib |
DLL | Netapi32.dll |