Поделиться через


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

  • E_INVALIDARG, если resolutionPolicy или collisionPolicy не являются допустимыми значениями

  • 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 вызывает IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion в pChangeApplierTarget для каждого элемента в pSourceChanges.

Объект применения изменений участвует в управлении журналом конфликтов, указанным в параметре pConflictLogAccess, выполняя разрешение конфликтов в журнале и удаление устаревших конфликтов из журнала. Объект применения изменений также может сохранять в журнале конфликтов временные конфликты, которые возникают в результате слияния конфликтов ограничений. Все временные конфликты, добавленные в журнал, будут удалены перед завершением сеанса синхронизации.

См. также

Справочник

Интерфейс ISynchronousNotifyingChangeApplier2

Основные положения

Обработка конфликтов