IKnowledgeSyncProvider::GetFullEnumerationChangeBatch
取得變更批次,其中包含識別碼大於指定之下限之項目的項目中繼資料 (完整列舉的一部分)。
HRESULT GetFullEnumerationChangeBatch(
DWORD dwBatchSize,
const BYTE * pbLowerEnumerationBound,
ISyncKnowledge * pSyncKnowledge,
ISyncFullEnumerationChangeBatch ** ppSyncChangeBatch,
IUnknown ** ppUnkDataRetriever);
參數
- dwBatchSize
[in] 要包含在變更批次中的變更數目。
- pbLowerEnumerationBound
[in] 項目識別碼的下限。這個方法會傳回識別碼大於或等於此識別碼值的變更。
- pSyncKnowledge
[in] 如果某個項目變更包含在這個知識物件中,就表示該項目的資料已經存在目的地複寫上。
- ppSyncChangeBatch
[out] 傳回變更批次,其中包含識別碼大於指定之下限之項目的項目中繼資料。
- ppUnkDataRetriever
[out] 傳回可用來擷取變更資料的物件。它可以是 ISynchronousDataRetriever 物件或提供者特有的物件。
傳回值
S_OK
提供者決定的錯誤碼
備註
在被遺忘的知識復原期間,Sync Framework 會呼叫這個方法。
這個方法會依照項目識別碼的排序次序來列舉項目識別碼等於或大於 pbLowerEnumerationBound 的變更。如此可讓 Sync Framework 判斷目的地提供者上的哪些項目已被刪除,但是被來源提供者所遺忘。此方法也可以選擇依項目識別碼排序,將變更加入至項目識別碼小於 pbLowerEnumerationBound 及未包含於目的地知識內的批次中。
實作者注意事項
如果這個批次之後沒有其他變更要傳送,就必須在傳回的變更批次上呼叫 ISyncChangeBatchBase::SetLastBatch。否則,Sync Framework 會再次呼叫 GetFullEnumerationChangeBatch 來擷取另一個變更批次。
對於要同時傳送項目資料與項目變更中繼資料的提供者,可以使用 pSyncKnowledge 來判斷是否必須傳送項目資料。如果項目變更是包含在 pSyncKnowledge 中,就不需要傳送項目資料。請注意,必須先使用目前提供者中所包含知識物件上的 ISyncKnowledge::MapRemoteToLocal 方法對應 pSyncKnowledge,然後才能用它來檢查項目是否要包含。