다음을 통해 공유


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 인터페이스

개념

충돌 처리