ISynchronousNotifyingChangeApplier2::ApplyFullEnumerationChanges
Выполняет обнаружение конфликтов, обработку конфликтов и применение изменений, а также управляет журналом конфликтов для пакета изменений в ходе синхронизации восстановления.
Синтаксис
HRESULT ApplyFullEnumerationChanges(
CONFLICT_RESOLUTION_POLICY resolutionPolicy,
COLLISION_CONFLICT_RESOLUTION_POLICY collisionPolicy,
ISyncFullEnumerationChangeBatch * 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::ProcessFullEnumerationChangeBatch.
Этот метод обнаруживает конфликты параллелизма, возникающие между изменениями, отправленными в pSourceChanges, и соответствующими элементами в реплике назначения. Он разрешает все конфликты параллелизма в соответствии с политикой, определяемой параметром resolutionPolicy. Когда поставщик назначения сообщает о конфликтах ограничений, этот метод разрешает их в соответствии с политикой, заданной параметром collisionPolicy. Если политика устранения конфликтов не задана, этот метод уведомляет приложение о конфликте, а действие по устранению конфликта определяется приложением. В случае необходимости этот метод затем вызывает методы применительно к pChangeApplierTarget, для сохранения изменений в реплике назначения и неразрешенных конфликтов.
Объект применения изменений участвует в управлении журналом конфликтов, указанным в параметре pConflictLogAccess, выполняя разрешение конфликтов в журнале и удаление устаревших конфликтов из журнала. Объект применения изменений также может сохранять в журнале конфликтов временные конфликты, которые возникают в результате слияния конфликтов ограничений. Все временные конфликты, добавленные в журнал, будут удалены перед завершением сеанса синхронизации.