取得篩選的變更批次,其中包含識別碼大於或等於指定之下限之項目的項目中繼資料,做為完整列舉的一部分。
HRESULT GetFilteredFullEnumerationChangeBatch(
DWORD dwBatchSize,
ISyncFilterInfo * pFilterInfo,
IChangeBatchCallback * pCallback,
const BYTE * pbLowerFullEnumerationBound,
ISyncKnowledge * pSyncKnowledge,
ISyncFullEnumerationChangeBatch ** ppChangeBatch);
參數
- dwBatchSize
[in] 要傳回之變更批次的大小。
- pFilterInfo
[in] ISyncFilterInfo 物件,這個物件表示可用來控制哪些變更要包含在變更批次中之篩選的相關資訊。
- pCallback
[in, unique] 用於判斷是否要將某個項目加入至變更批次中的 IChangeBatchCallback 物件。
- pbLowerFullEnumerationBound
[in] 項目識別碼的下限。這個方法會傳回識別碼大於或等於此識別碼值的變更 (如果這些變更滿足 pFilterInfo 中指定的篩選準則)。
- pSyncKnowledge
[in] 目的地複寫的知識。
- ppChangeBatch
[out] 傳回變更批次。
傳回值
S_OK。
E_POINTER。
如果 dwBatchSize 是 0,則為 E_INVALIDARG。
備註
使用項目篩選時,這個方法可協助同步處理提供者實作它的 IKnowledgeSyncProvider::GetFullEnumerationChangeBatch 方法。在被遺忘的知識復原期間會呼叫這個方法。
當提供者呼叫這個方法之前,他們必須先確定中繼資料存放區內的版本可反映所有的本機變更,包括刪除在內。這是透過明確的中繼資料維護作業來完成,以便列舉項目及更新項目的中繼資料。
透過 ISqlSyncMetadataStore 取得之這個類別的實作,會執行下列功能:
將變更以全域識別碼順序加入至變更批次。
如果所有項目的識別碼都小於 pbLowerEnumerationBound,而且符合在 pFilterInfo 中指定的篩選準則,則傳回不包含在 pSyncKnowledge 中的所有項目。
沒有其他要傳送的變更時,針對傳回的變更批次呼叫 SetLastBatch。
實作者注意事項
這個方法必須依照項目識別碼的排序順序來列舉項目識別碼等於或大於 pbLowerEnumerationBound,並符合在 pFilterInfo 中指定之篩選準則的變更。如此可讓 Sync Framework 判斷目的地提供者上的哪些項目已被刪除,但是被來源提供者所遺忘。
如果這個批次之後沒有其他變更要傳送,必須在傳回的變更批次上呼叫 SetLastBatch,否則 Sync Framework 將會再次呼叫 IKnowledgeSyncProvider::GetFullEnumerationChangeBatch 來擷取其他變更批次。
對於要同時傳送項目資料與項目變更中繼資料的提供者,可以使用 pSyncKnowledge 來判斷是否必須傳送項目資料。如果項目變更是包含在 pSyncKnowledge 中,就不需要傳送項目資料。