ISynchronousNotifyingChangeApplier2::ApplyChanges
針對變更批次執行衝突偵測、衝突處理、變更套用以及管理衝突記錄檔。
HRESULT ApplyChanges(
CONFLICT_RESOLUTION_POLICY resolutionPolicy,
COLLISION_CONFLICT_RESOLUTION_POLICY collisionPolicy,
ISyncChangeBatch * pSourceChanges,
IUnknown * pUnkDataRetriever,
IEnumSyncChanges * pDestinationVersions,
ISyncKnowledge * pDestinationKnowledge,
IForgottenKnowledge * pDestinationForgottenKnowledge,
ISynchronousNotifyingChangeApplierTarget * pChangeApplierTarget,
IConflictLogAccess * pConflictLogAccess,
ISyncSessionState * pSessionState,
ISyncCallback * pCallback);
參數
- resolutionPolicy
[in] 要用來解決並行衝突的原則。
- collisionPolicy
[in] 要用來解決衝突條件約束衝突的原則。
- pSourceChanges
[in] 來源提供者的變更批次。
- pUnkDataRetriever
[in] 可用來從來源複寫中擷取項目資料的物件。
- pDestinationVersions
[in] 包含此目的地複寫內儲存之項目版本的變更清單。這些項目會對應至 pSourceChanges 中的項目。
- pDestinationKnowledge
[in] 目的地複寫的知識。
- pDestinationForgottenKnowledge
[in] 目的地複寫的被遺忘知識。
- pChangeApplierTarget
[in] 將要針對儲存變更和衝突所呼叫的物件。
- pConflictLogAccess
[in] 儲存延遲衝突和暫時衝突的衝突記錄檔。
- pSessionState
[in] 有關目前工作階段的狀態資訊。
- pCallback
[in] 將會接收有關變更套用事件之通知的回呼。
傳回值
S_OK
如果 resolutionPolicy 或 collisionPolicy 不是有效的值,則為 E_INVALIDARG。
E_OUTOFMEMORY
E_POINTER
SYNC_E_BATCH_NEEDS_KNOWLEDGE
SYNC_E_OBJECT_NEEDS_STATE
SYNC_E_CHANGE_COUNT_MISMATCH
SYNC_E_CHANGE_NEEDS_KNOWLEDGE
SYNC_E_ITEM_HAS_NO_CHANGE_UNITS
SYNC_E_ITEM_MUST_EXIST
SYNC_E_CHANGE_NOT_IN_KNOWLEDGE
SYNC_E_CHANGE_UNIT_COUNT_MISMATCH
SYNC_E_KNOWLEDGE_DECREASED
SYNC_E_NOT_EXPECTED_CHANGE
備註
通常這個方法是由提供者從它的 IKnowledgeSyncProvider::ProcessChangeBatch 方法呼叫。
這個方法會偵測 pSourceChanges 中所傳送變更與目的地複寫中對應項目之間發生的並行衝突。它會根據 resolutionPolicy 所指定的原則,解決任何並行衝突。當目的地提供者報告衝突條件約束衝突時,這個方法就會根據 collisionPolicy 所指定的原則解決這些衝突。如果沒有設定任何衝突解決原則,這個方法會向應用程式通知衝突,然後此應用程式會指定衝突解決動作。如果有必要,這個方法便會呼叫 pChangeApplierTarget 上的方法,將變更儲存至目的地複寫,並且儲存未解決的衝突。
如果 pDestinationVersions 是 NULL,Sync Framework 就會針對 pSourceChanges 中每個項目,呼叫 pChangeApplierTarget 上的 IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion。
變更套用者會透過解決 pConflictLogAccess 所指定之衝突記錄檔中的衝突並從記錄檔中移除過時的衝突,協助管理衝突記錄檔。變更套用者可能也會使用衝突記錄檔來儲存合併條件約束衝突所導致的暫時衝突。在同步處理工作階段結束之前,將會移除任何加入至記錄檔的暫時衝突。
請參閱
參考
ISynchronousNotifyingChangeApplier2 介面