DsGetDcOpenA 函数 (dsgetdc.h)

DsGetDcOpen 函数会打开一个新的域控制器枚举操作。

语法

DSGETDCAPI DWORD DsGetDcOpenA(
  [in]           LPCSTR  DnsName,
  [in]           ULONG   OptionFlags,
  [in, optional] LPCSTR  SiteName,
  [in, optional] GUID    *DomainGuid,
  [in, optional] LPCSTR  DnsForestName,
  [in]           ULONG   DcFlags,
  [out]          PHANDLE RetGetDcContext
);

参数

[in] DnsName

指向以 null 结尾的字符串的指针,该字符串包含域命名系统 (DNS) 要枚举其域控制器的域的名称。 此参数不能为 NULL

[in] OptionFlags

包含一组用于修改函数行为的标志。 这可以是零,也可以是以下一个或多个值的组合。

DS_ONLY_DO_SITE_NAME

仅枚举特定于站点的域控制器。

DS_NOTIFY_AFTER_SITE_RECORDS

检索所有特定于站点的域控制器后, DsGetDcNext 函数将返回 ERROR_FILEMARK_DETECTED 值。 然后,DsGetDcNext 将枚举第二个组,该组包含域中的所有域控制器,包括第一个组中包含的特定于站点的域控制器。

[in, optional] SiteName

指向以 null 结尾的字符串的指针,该字符串包含客户端所在的站点的名称。 此参数是可选的,可以为 NULL

[in, optional] DomainGuid

指向 GUID 值的指针,该值包含 DnsName 指定的域的标识符。 此标识符用于处理重命名域的情况。 如果指定了此值并重命名了 DnsName 中指定的域,则此函数将尝试枚举包含指定标识符的域中的域控制器。 此参数是可选的,可以为 NULL

[in, optional] DnsForestName

指向以 null 结尾的字符串的指针,该字符串包含包含 DnsName 域的林的名称。 此值与 DomainGuid 结合使用,以枚举域控制器(如果已重命名域)。 此参数是可选的,可以为 NULL

[in] DcFlags

包含一组标识要枚举的域控制器类型的标志。 这可以是零,也可以是以下一个或多个值的组合。

DS_FORCE_REDISCOVERY

强制忽略缓存的域控制器数据。 如果未指定此标志, DsGetDcOpen 将从缓存的域控制器数据获取域控制器枚举。

DS_GC_SERVER_REQUIRED

要求枚举的域控制器是域林的全局编录服务器,该域作为根域。 此标志不能与 DS_PDC_REQUIRED 标志组合使用。

DS_KDC_REQUIRED

要求枚举的域控制器当前正在运行 Kerberos 密钥分发中心服务。 此标志不能与 DS_PDC_REQUIREDDS_GC_SERVER_REQUIRED 标志组合使用。

DS_ONLY_LDAP_NEEDED

指定枚举的服务器是 LDAP 服务器。 服务器不一定是域控制器。 每个枚举服务器上都不存在其他服务。 服务器不一定具有可写 配置 容器或可写 架构 容器。 服务器不一定用于创建或修改安全原则。 此标志可与 DS_GC_SERVER_REQUIRED 标志一起使用,以枚举同时托管全局编录服务器的 LDAP 服务器。 在这种情况下,枚举的全局编录服务器不一定是域控制器,并且每个服务器上都隐含着其他服务。 如果指定了此标志,则会忽略 DS_PDC_REQUIREDDS_TIMESERV_REQUIREDDS_GOOD_TIMESERV_PREFERREDDS_DIRECTORY_SERVICES_PREFEREDDS_DIRECTORY_SERVICES_REQUIREDDS_KDC_REQUIRED 标志。

DS_PDC_REQUIRED

要求枚举的域控制器是域的主域控制器。 此标志不能与 DS_GC_SERVER_REQUIRED 标志组合使用。

[out] RetGetDcContext

指向 HANDLE 值的指针,该值接收域控制器枚举上下文句柄。 此句柄与 DsGetDcNext 函数一起使用,用于标识域控制器枚举操作。 此句柄传递到 DsGetDcClose 以关闭域控制器枚举操作。

返回值

如果成功,则返回 ERROR_SUCCESS ,否则返回 Win32 或 RPC 错误。 可能的错误值包括以下内容。

备注

注意

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

要求

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

请参阅

目录服务函数

DsGetDcClose

DsGetDcNext

枚举域控制器