ISyncChangeBatch2::AddMergeTombstoneMetadataToGroup
将指定的合并逻辑删除添加到当前打开的组中。
HRESULT AddMergeTombstoneMetadataToGroup(
const BYTE * pbOwnerReplicaId,
const BYTE * pbWinnerItemId,
const BYTE * pbItemId,
const SYNC_VERSION * pChangeVersion,
const SYNC_VERSION * pCreationVersion,
DWORD dwWorkForChange,
ISyncChangeBuilder ** ppChangeBuilder);
参数
- pbOwnerReplicaId
[in] pChangeVersion 和 pCreationVersion 均有效的副本的副本 ID。ID 格式必须与提供程序的 ID_PARAMETERS 结构指定的格式相匹配。
- pbWinnerItemId
[in] 发生合并后的项的 ID。这也称为入选 ID。ID 格式必须与提供程序的 ID_PARAMETERS 结构指定的格式相匹配。
- pbItemId
[in] 发生合并前的项的 ID。这也称为落选 ID。ID 格式必须与提供程序的 ID_PARAMETERS 结构指定的格式相匹配。
- pChangeVersion
[in] 此变更的版本。
- pCreationVersion
[in] 由 pbItemId 标识的项的创建版本。
- dwWorkForChange
[in] 变更的工作量估计值。此值用在应用变更的过程中,用于向应用程序报告已完成的工作。
- ppChangeBuilder
[in, out, unique] 返回一个可用于将变更单位信息添加到变更的对象。
返回值
S_OK。
E_POINTER。
如果 ISyncChangeBatch2 对象已发送给变更应用方或同步会话,或者该对象是使用 IProviderSyncServices::DeserializeChangeBatch 或 IProviderSyncServices::DeserializeFullEnumerationChangeBatch 创建的,则返回值为 SYNC_E_CHANGE_BATCH_IS_READ_ONLY。
如果没有打开的组或者先前将某个空组添加到了批中,则返回值为 SYNC_E_INVALID_OPERATION。
如果某个排序组已经打开,且 pbItemId 小于先前添加到该组的项的项 ID 或小于打开组时指定的项 ID,则返回值为 SYNC_E_RANGE_OUT_OF_ORDER。
备注
通过合并冲突中的两个项来解决约束冲突时,会创建一个合并逻辑删除。通过合并解决约束冲突时,较小的项 ID 将选作入选项 ID,而较大的项 ID 会选作落选项 ID。入选项 ID 用于标识合并项。合并逻辑删除跟踪同步社区中落选项 ID 与入选项 ID 标识相同项的情况。合并逻辑删除的元数据与删除的项逻辑删除的元数据相同,只是增加了入选项 ID。