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 中时,不必发送项数据。