IReplicaMetadata::GetFullEnumerationChangeBatch

作为完全枚举的一部分,获取一个变更批,该变更批包含 ID 大于或等于指定下限的项的项元数据。

HRESULT GetFullEnumerationChangeBatch(
  DWORD dwBatchSize,
  const BYTE * pbLowerEnumerationBound,
  ISyncKnowledge * pSyncKnowledge,
  ISyncFullEnumerationChangeBatch ** ppSyncChangeBatch);

参数

  • dwBatchSize
    [in] 要返回的变更批的大小。
  • pbLowerEnumerationBound
    [in] 项 ID 的下限。此方法返回 ID 大于或等于此 ID 值的变更。
  • pSyncKnowledge
    [in] 目标副本的知识。
  • ppSyncChangeBatch
    [out] 返回变更批。

返回值

  • S_OK

  • E_POINTER

  • 如果 dwBatchSize 为 0,则返回值为 E_INVALIDARG。

备注

此方法可帮助同步提供程序实现其 IKnowledgeSyncProvider::GetFullEnumerationChangeBatch 方法。此方法在遗忘知识恢复期间调用。

提供程序在调用此方法之前,必须确保元数据存储区中的版本反映了所有本地变更,包括删除。其实现方法为通过显式元数据维护传递来枚举项并更新其元数据。

通过 ISqlSyncMetadataStore 获得的此类的实现按照全局 ID 顺序添加对变更批的变更。

可通过 ISqlSyncMetadataStore, 获得的此类的实现还会返回 ID 小于 pbLowerEnumerationBound 的所有项,这些项不包含在 pSyncKnowledge 中。

通过 ISqlSyncMetadataStore 获得的此类的实现在没有更多要发送的变更时对返回的变更批调用 SetLastBatch

实施者注意事项

此方法必须按照项 ID 的排序顺序枚举项 ID 等于或大于 pbLowerEnumerationBound 的变更。这使 Sync Framework 能够确定目标提供程序中的哪些项已被删除,但被源提供程序遗忘。

如果此批之后没有更多要发送的变更,则必须对返回的变更批调用 SetLastBatch;否则 Sync Framework 将再次调用 IKnowledgeSyncProvider::GetFullEnumerationChangeBatch 以检索其他变更批。

对于将项数据和项变更元数据一起发送的提供程序,可以使用 pSyncKnowledge 来确定是否有必要发送项数据。当项变更包含在 pSyncKnowledge 中时,不必发送项数据。

请参阅

参考

IReplicaMetadata 接口