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