DsReplicaSyncAllA 函数 (ntdsapi.h)

DsReplicaSyncAll 函数在必要时使用可传递复制将服务器与所有其他服务器同步。 默认情况下, DsReplicaSyncAll 将服务器与其站点中的所有其他服务器同步;但是,也可以使用它跨站点边界同步。

语法

NTDSAPI DWORD DsReplicaSyncAllA(
  [in]            HANDLE                                  hDS,
  [in]            LPCSTR                                  pszNameContext,
  [in]            ULONG                                   ulFlags,
  [in]            BOOL(* )(LPVOID,PDS_REPSYNCALL_UPDATEA) pFnCallBack,
  [in, optional]  LPVOID                                  pCallbackData,
  [out, optional] PDS_REPSYNCALL_ERRINFOA                 **pErrors
);

参数

[in] hDS

包含从 DSBindDSBindWithCred 函数获取的目录服务句柄。

[in] pszNameContext

指向以 null 结尾的字符串的指针,该字符串指定要同步的命名上下文的可分辨名称。 pszNameContext 参数是可选的;如果值为 NULL,则复制配置命名上下文。

[in] ulFlags

传递用于处理请求的其他数据。 此参数可以是以下值的组合。

DS_REPSYNCALL_ABORT_IF_SERVER_UNAVAILABLE

如果无法联系任何服务器,或者由于拓扑断开连接或损坏而无法访问任何服务器,则生成致命错误。

DS_REPSYNCALL_CROSS_SITE_BOUNDARIES

同步跨越站点边界。 默认情况下, DsReplicaSyncAll 仅尝试与主系统位于同一站点中的 DC 同步。 设置此标志以尝试与企业林中的所有 DC 同步。 但是,仅当 DC 通过同步 (RPC) 传输连接时,才能同步 DC。

DS_REPSYNCALL_DO_NOT_SYNC

禁用所有同步。 仍会分析拓扑,并且仍标识不可用或无法访问的服务器。

DS_REPSYNCALL_ID_SERVERS_BY_DN

如果出现非致命错误,则返回服务器可分辨名称 (DN) ,而不是其 GUID DNS 名称。

DS_REPSYNCALL_NO_OPTIONS

此选项不起作用。

DS_REPSYNCALL_PUSH_CHANGES_OUTWARD

使用可传递的复制将来自主服务器的更改推出到所有伙伴。 这将反转复制的方向,以及复制集的执行顺序与通常的“拉取”执行模式相反。

DS_REPSYNCALL_SKIP_INITIAL_CHECK

假定所有服务器都在响应。 这会加快 DsReplicaSyncAll 函数的操作速度,但如果某些服务器没有响应,可能会阻止某些可传递复制。

DS_REPSYNCALL_SYNC_ADJACENT_SERVERS_ONLY

禁用可传递的复制。 仅执行与相邻服务器的同步。

[in] pFnCallBack

指向应用程序定义的 SyncUpdateProc 函数的指针,该函数在遇到错误时由 DsReplicaSyncAll 函数调用,启动两个服务器的同步,完成两个服务器的同步,或完成站点中所有服务器的同步。

[in, optional] pCallbackData

指向作为 pFnCallBack 参数指向的 SyncUpdateProc 回调函数的第一个参数传递的应用程序定义数据的指针。

[out, optional] pErrors

指向 的以 NULL 结尾的指针数组
DS_REPSYNCALL_ERRINFO 包含同步期间发生的错误的结构。 用于保存指针数组和 MsCS\mscs\clusctl_resource_type_get_private_property_fmts.xml 数据的内存将作为单个内存块进行分配,并且当对 LocalFree 的单个调用不再需要时,应释放该内存,并在用作参数 的 pErrors 中返回的指针值。

返回值

如果函数成功,则返回值 ERROR_SUCCESS

如果函数失败,则返回值如下所示。

注解

DsReplicaSyncAll 函数在生成要从其同步的拓扑之前尝试绑定到所有服务器。 如果无法联系服务器,函数将从拓扑中排除该服务器,并尝试解决该服务器问题。 在 ulFlags 中设置DS_REPSYNCALL_SKIP_INITIAL_CHECK标志会绕过初始绑定。

如果无法联系服务器,DsReplicaSyncAll 函数会尝试围绕服务器进行路由,并从尽可能多的服务器进行复制,除非在 ulFlags 中设置了DS_REPSYNCALL_ABORT_IF_SERVER_UNAVAILABLE

DsReplicaSyncAll 函数可以使用 pFnCallBack 指向的回调函数,使最终用户了解复制的当前状态。 DsReplicaSyncAll 函数的执行在调用 pFnCallBack 指向的函数时暂停。 如果回调函数的返回值为 TRUE,则复制将继续;否则, DsReplicaSyncAll 函数将终止复制。

注意

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

要求

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

另请参阅

DS_REPSYNCALL_ERRINFO

DS_REPSYNCALL_UPDATE

域控制器和复制管理功能

DsReplicaSync

SyncUpdateProc