IKnowledgeSyncProvider::GetFullEnumerationChangeBatch
作为完全枚举的一部分,获取一个变更批,该变更批包含 ID 大于指定下限的项的项元数据。
HRESULT GetFullEnumerationChangeBatch(
DWORD dwBatchSize,
const BYTE * pbLowerEnumerationBound,
ISyncKnowledge * pSyncKnowledge,
ISyncFullEnumerationChangeBatch ** ppSyncChangeBatch,
IUnknown ** ppUnkDataRetriever);
参数
- dwBatchSize
[in] 要包含在变更批中的变更数。
- pbLowerEnumerationBound
[in] 项 ID 的下限。此方法返回 ID 大于或等于此 ID 值的变更。
- pSyncKnowledge
[in] 如果某个项变更包含在此知识对象中,则该项的数据已经存在于目标副本中。
- ppSyncChangeBatch
[out] 返回一个包含某些项的项元数据的变更批,这些项具有的 ID 大于指定的下限。
- ppUnkDataRetriever
[out] 返回一个可用于检索变更数据的对象。该对象可以是 ISynchronousDataRetriever 对象,也可以是提供程序特定的对象。
返回值
S_OK
提供程序确定的错误代码
备注
此方法在遗忘知识恢复期间由 Sync Framework 调用。
此方法按照项 ID 的排序顺序枚举项 ID 等于或大于 pbLowerEnumerationBound 的变更。这使 Sync Framework 能够确定目标提供程序中的哪些项已被删除,但被源提供程序遗忘。此外,此方法还可以向批中添加变更,这些变更按项 ID 排序、所具有的项 ID 小于 pbLowerEnumerationBound 且未包含在目标知识中。
实施者注意事项
如果在此批之后再无变更要发送,则必须在返回的变更批上调用 ISyncChangeBatchBase::SetLastBatch。否则,Sync Framework 将再次调用 GetFullEnumerationChangeBatch 以检索其他变更批。
对于将项数据与项变更元数据一起发送的提供程序,可以使用 pSyncKnowledge 来确定是否有必要发送项数据。当项变更包含在 pSyncKnowledge 中时,不必发送项数据。请注意,在可以用它检查容纳的项之前,必须对包含在当前提供程序中的知识对象使用 ISyncKnowledge::MapRemoteToLocal 方法来映射 pSyncKnowledge。