共用方式為


IReplicaMetadata::GetFilteredChangeBatch

設定變更批次,其中包含目的地提供者之指定知識內未包含而且指定之篩選所接受之項目的項目中繼資料。

HRESULT GetFilteredChangeBatch(
  DWORD dwBatchSize,
  ISyncKnowledge *pSyncKnowledge,
  ISyncFilterInfo * pFilterInfo,
  IChangeBatchCallback *pCallback,
  ISyncChangeBatch ** ppSyncChangeBatch);

參數

  • dwBatchSize
    [in] 要建立之批次的大小。
  • pSyncKnowledge
    [in] 目的地提供者的知識。
  • pFilterInfo
    [in] 控制此變更批次要包含哪些項目之篩選的相關資訊。
  • pCallback
    [in, unique] 回呼介面,呼叫時可判斷某個項目是否應加入到此批次。
  • ppSyncChangeBatch
    [out] 傳回下一個變更批次。

傳回值

  • S_OK

  • E_POINTER

  • 如果 dwBatchSize 是 0,則為 E_INVALIDARG。

備註

已經指定篩選的同步處理時,這個方法可協助同步處理提供者實作它的 IKnowledgeSyncProvider::GetChangeBatch 方法。

每個項目要加入到批次前,就會呼叫 pCallback 的 IChangeBatchCallback::OnAddingItemToBatch 方法。如果此方法在其 pfShouldIncludeInBatch 參數中傳回 TRUE,項目就會加入到這個批次,如果不是,就不會加入。

當提供者呼叫這個方法之前,他們必須先確定中繼資料存放區內的版本可反映所有的本機變更,包括刪除在內。這是透過明確的中繼資料維護通過來完成,以便列舉項目及更新項目的中繼資料。

這個類別的實作 (可透過 ISqlSyncMetadataStore 取得) 會依照全域識別碼順序將變更加入到變更批次。

當沒有其他變更要傳送時,這個類別的實作 (透過 ISqlSyncMetadataStore 取得) 便會在傳回的變更批次上呼叫 SetLastBatch

實作者注意事項

為了幫助使用全域識別碼順序且能夠使用範圍的提供者,應該要列舉變更,並依照全域識別碼順序將變更加入到變更批次。傳回之變更批次內的第一個變更會開始新的範圍。

如果這個批次之後沒有其他變更要傳送,必須在傳回的變更批次上呼叫 SetLastBatch,否則 Sync Framework 將會再次呼叫 IKnowledgeSyncProvider::GetChangeBatch 來擷取其他變更批次。

請參閱

參考

IReplicaMetadata 介面