ISynchronousNotifyingChangeApplier::ApplyChanges
変更バッチに対して競合検出、競合処理、および変更の適用を実行します。
HRESULT ApplyChanges(
CONFLICT_RESOLUTION_POLICY resolutionPolicy,
ISyncChangeBatch *pSourceChanges,
IUnknown * pUnkDataRetriever,
IEnumSyncChanges * pDestinationVersions,
ISyncKnowledge *pDestinationKnowledge,
IForgottenKnowledge *pDestinationForgottenKnowledge,
ISynchronousNotifyingChangeApplierTarget * pChangeApplierTarget,
ISyncSessionState * pSessionState,
ISyncCallback *pCallback);
パラメータ
- resolutionPolicy
[in] 競合を解決するために使用するポリシーです。
- pSourceChanges
[in] 同期元プロバイダからの変更のバッチです。
- pUnkDataRetriever
[in] 同期元レプリカから項目データを取得するために使用できるオブジェクトです。
- pDestinationVersions
[in] 同期先レプリカに格納されている項目のバージョンが含まれている変更の一覧です。これらの項目は、pSourceChanges の項目に対応しています。
- pDestinationKnowledge
[in] 同期先レプリカのナレッジです。
- pDestinationForgottenKnowledge
[in] 同期先レプリカの忘れられたナレッジです。
- pChangeApplierTarget
[in] 変更および競合を保存するために呼び出されるオブジェクトです。
- pSessionState
[in] 現在のセッションに関する状態情報です。
- pCallback
[in] 変更の適用イベントに関する通知を受信するコールバックです。
戻り値
S_OK
E_OUTOFMEMORY
E_POINTER
SYNC_E_OBJECT_NEEDS_STATE
SYNC_E_INTERNAL_ERROR
SYNC_E_CHANGE_COUNT_MISMATCH
SYNC_E_CHANGE_NEEDS_KNOWLEDGE
SYNC_E_ITEM_HAS_NO_CHANGE_UNITS
SYNC_E_CHANGE_NOT_IN_KNOWLEDGE
SYNC_E_CHANGE_UNIT_COUNT_MISMATCH
SYNC_E_NOT_EXPECTED_CHANGE
SYNC_E_ITEM_MUST_EXIST
SYNC_E_ID_FORMAT_MISMATCH
SYNC_E_BATCH_NEEDS_KNOWLEDGE
解説
通常、このメソッドはプロバイダによって IKnowledgeSyncProvider::ProcessChangeBatch メソッドから呼び出されます。このメソッドは、pSourceChanges で送信された変更と同期先レプリカ内の対応する項目の間で発生する競合を検出します。このメソッドにより、resolutionPolicy で指定されたポリシーに従ってすべての競合が解決されます。必要に応じて、このメソッドは、pChangeApplierTarget のメソッドを呼び出し、同期先レプリカへの変更を保存し、未解決の競合を保存します。
pDestinationVersions が NULL の場合、このメソッドは、pSourceChanges 内の項目ごとに pChangeApplierTarget で ISynchronousNotifyingChangeApplierTarget::GetDestinationVersion を呼び出します。
参照
リファレンス
ISynchronousNotifyingChangeApplier インターフェイス
CONFLICT_RESOLUTION_POLICY 列挙体