IReconcilableObject::Reconcile 方法 (reconcil.h)
协调对象的状态与一个或多个其他对象。 通过合并所有对象的状态以形成组合状态,对帐更新对象的内部状态。
语法
HRESULT Reconcile(
IReconcileInitiator *pInitiator,
DWORD dwFlags,
HWND hwndOwner,
HWND hwndProgressFeedback,
ULONG ulcInput,
IMoniker **rgpmkOtherInput,
PLONG plOutIndex,
IStorage *pstgNewResidues,
PVOID pvReserved
);
parameters
pInitiator
类型: IReconcileInitiator*
对帐过程的发起者的 IReconcileInitiator 接口的地址。 此参数不得为 NULL。
dwFlags
类型:DWORD
对帐的控制标志。 此参数可以是零,也可以是以下值的组合:
RECONCILEF_FEEDBACKWINDOWVALID
hwndProgressFeedback 参数有效。
RECONCILEF_MAYBOTHERUSER
如果需要,公文包协调器可以提示用户交互。 如果没有此值,则不允许用户交互。 hwndOwner 参数有效。
RECONCILEF_NORESIDUESOK
公文包协调器可以忽略对残留物的请求并执行对帐。 每当发起程序请求残渣时,不支持残渣的协调器应检查此值。 如果没有此值,则不支持残留的协调器必须立即返回REC_E_NORESIDUES。
RECONCILEF_OMITSELFRESIDUE
公文包协调器可以丢弃与此对象关联的任何残留物。 发起方通常将此值用于从一代到一代循环的对帐。
RECONCILEF_ONLYYOUWERECHANGED
正在调用 协调 方法,以将更改对象中的更改传播到其他未更改的对象。 仅当注册表中存在以下项时,才会设置此值。
HKEY_CLASSES_ROOT CLSID {CLSID of reconciler} SingleChangeHook
如果注册表中不存在此键,则发起程序将通过使其他未更改的对象成为已更改对象的二进制相同副本来执行对帐。 rgpmkOtherInput 名字对象标识其他对象。 仅当同时设置了RECONCILEF_YOUMAYDOTHEUPDATES时,才会在 dwFlags 中设置此值。 如果公文包协调器成功完成更新本身,则应返回REC_S_IDIDTHEUPDATES,并且 plOutIndex 参数指向的变量应设置为 -1L。 请注意,如果在 dwFlags 中设置了此值,则不应在成功时返回S_OK。 如果 协调 返回REC_S_IDIDTHEUPDATES,则发起程序不会保存源对象的存储。 如果协调器希望回退到发起程序的位复制实现,它可能会返回S_FALSE。
RECONCILEF_RESUMEDRECONCILIATION
公文包协调器应使用提供的部分残留物恢复对帐。 如果没有此值,协调器应忽略任何输入版本中的任何“已考虑但拒绝”的信息。
RECONCILEF_YOUMAYDOTHEUPDATES
公文包协调器可以执行更新。 如果没有此值,协调器将无法执行更新。 如果协调成功完成,则协调程序在执行更新时应返回REC_S_IDIDTHEUPDATES;如果未执行更新,应返回S_OK。
hwndOwner
类型:HWND
要用作公文包协调程序创建的任何子窗口的父窗口的窗口的句柄。 仅当在 dwFlags 中指定了RECONCILEF_MAYBOTHERUSER时,此参数才有效。
hwndProgressFeedback
类型:HWND
发起方要显示的进度反馈窗口的句柄。 仅当在 dwFlags 中指定了RECONCILEF_FEEDBACKWINDOWVALID时,此参数才有效。 公文包协调器可以使用此窗口句柄调用 SetWindowText 函数,向用户显示其他对帐状态信息。
ulcInput
类型: ULONG
dwFlags 中指定的版本数或部分残渣数。 此参数不得为零。
rgpmkOtherInput
类型: IMoniker**
数组的地址,该数组包含要用于访问要协调的版本或部分残骸的名字对象的地址。
plOutIndex
类型: LONG*
接收索引值的变量的地址,该值指示对帐结果是否与初始版本之一相同。 如果对帐结果是两个或更多个版本的组合,则变量设置为 -1L。 否则,它是从零开始的索引,其中 0 表示此对象,1 表示第一个版本,2 表示第二个版本,依此类而论。
pstgNewResidues
类型: IStorage*
用于存储新残留物的 IStorage 接口的地址。 此参数可以为 NULL ,指示不应保存残渣。
pvReserved
类型: void*
保留;必须为 NULL。
返回值
类型: HRESULT
返回以下值之一。
返回代码 | 说明 |
---|---|
|
已成功完成对帐,必须将更改传播到其他对象。 |
|
未执行任何和解行动。 公文包协调器希望回退到发起程序的位复制实现。 仅当在 dwFlags 中设置了RECONCILEF_ONLYYOUWERECHANGED时,才能返回此值。 |
|
已成功完成对帐,并且 (实现 协调 方法的对象以及 rgpmkOtherInput) 描述的所有其他对象都已相应更新。 因此,发起方不需要进一步执行任何操作来传播更改。 如果协调返回此值,则 plOutIndex 指向的变量应设置为 -1L。 如果 协调 返回此值,则发起程序不会保存源对象的存储。 仅当在 dwFlags 中设置了RECONCILEF_YOUMAYDOTHEUPDATES时,才能返回此值。 |
|
公文包协调器完成了部分(但不是全部)对帐。 它可能需要用户交互。 更改不会传播到其他对象。 |
|
公文包协调器完成了部分(但不是全部)对帐。 它可能需要用户交互。 更改将传播到其他对象。 |
|
公文包协调器不支持生成残留物,因此拒绝对残留物的请求。 对象的状态保持不变。 |
|
公文包协调程序停止了对帐以响应发起程序的终止请求 (请参阅 SetAbortCallback 了解) 的详细信息。 未指定对象的状态。 |
|
无法执行对帐,因为提供的文档版本过于不同。 |
|
调用对象的 协调 实现时,未设置RECONCILEF_YOUMAYDOTHEUPDATES标志;此实现要求在 dwFlags 参数中设置此值。 |
|
对象是一个 OLE 嵌入对象,必须先运行该对象,然后才能执行此操作。对象的状态保持不变。 |
|
错误。 |
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] |
目标平台 | Windows |
标头 | reconcil.h |
DLL | Shell32.dll (版本 4.0 或更高版本) |