目录服务函数 (AD DS)
目录服务函数提供一个实用工具,用于在 Windows NT 或 Windows 2000 域中查找域控制器(DC)。 该体系结构与所有版本的 Windows NT 和 Windows 2000 中的客户端和服务器进行交互。 以下函数使开发人员能够使用目录服务中的域控制器和域成员身份:
- DsAddressToSiteNames
- DsAddressToSiteNamesEx
- DsDeregisterDnsHostRecords
- DsEnumerateDomainTrusts
- DsGetDcClose
- DsGetDcName
- DsGetDcNext
- DsGetDcOpen
- DsGetDcSiteCoverage
- DsGetForestTrustInformationW
- DsGetSiteName
- DsMergeForestTrustInformationW
- DsRoleFreeMemory
- DsRoleGetPrimaryDomainInformation
- DsValidateSubnetName
DC 定位符(DsGetDcName)由 Netlogon 服务实现。 每个 DC 使用特定于传输的机制(例如,在 WINS 中)在 DNS 服务器上注册其 DNS 名称及其 NetBIOS 名称。 DC 定位符查找名称,然后将数据报发送到注册该名称的 DC 或 ping。 对于 NetBIOS 域名,数据报是 mailslot 消息。 对于 DNS 域名,数据报是 LDAP UDP 搜索。 每个此类 DC 都会做出响应,指示它当前正在运行。 要响应的第一个 DC 将返回到调用方。
返回的 DC 已缓存,以便后续调用方不需要重复上述算法,并鼓励所有调用方使用相同的 DC。 这可确保单个客户端具有 DC 内容的一致视图。
通过 DNS 域名搜索 DC 时,DC 定位器会尝试在“最近的”站点中找到 DC。 每个 DC 都会注册其他 DNS 记录,这些记录指示 DC 位于哪个站点以及 DC 包含哪些站点。 DC 定位符首先搜索此特定于站点的 DNS 记录,然后搜索不特定于站点的 DNS 记录,从而更喜欢该站点中的 DC。 当 DC 定位符向 DC 发送数据报时,DC 会在 DS 的配置/站点/子网容器中查找客户端的 IP 地址以查找子网对象。 子网对象的 siteObject 属性定义包含客户端的站点的名称。 DC 使用包含客户端的站点名称以及此 DC 是否覆盖该站点的指示器响应 ping。 如果 DC 不包含该站点,并且 DC 定位器尚未尝试在该站点中找到 DC,则 DC 定位符会再次尝试在站点中找到 DC。
若要查找包含客户端的站点的名称,请使用 DsGetSiteName 函数。 Configuration/Sites/Subnet 容器中对象的名称必须是有效的子网名称。 DsValidateSubnetName 函数指示指定的子网名称是否有效。