Freigeben über


ISynchronousNotifyingChangeApplier2::ApplyChanges

Führt Konflikterkennung, Konfliktbehandlung, Änderungsanwendung und die Verwaltung des Konfliktprotokolls für einen Batch von Änderungen aus.

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);

Parameter

  • resolutionPolicy
    [in] Die Richtlinie, die zum Auflösen von Parallelitätskonflikten verwendet werden soll.
  • collisionPolicy
    [in] Die Richtlinie, die zum Auflösen von Kollisionseinschränkungskonflikten verwendet werden soll.
  • pSourceChanges
    [in] Der Änderungsbatch vom Quellenanbieter.
  • pUnkDataRetriever
    [in] Ein Objekt, das zum Abrufen von Elementdaten aus dem Quellreplikat verwendet werden kann.
  • pDestinationVersions
    [in] Eine Liste von Änderungen, die die Versionen der im Zielreplikat gespeicherten Elemente enthält. Diese Elemente entsprechen den Elementen in pSourceChanges.
  • pDestinationKnowledge
    [in] Das Wissen des Zielreplikats.
  • pDestinationForgottenKnowledge
    [in] Das vergessene Wissen des Zielreplikats.
  • pChangeApplierTarget
    [in] Das Objekt, das zum Speichern von Änderungen und Konflikten aufgerufen wird.
  • pConflictLogAccess
    [in] Das Konfliktprotokoll, in dem verzögerte und temporäre Konflikte gespeichert werden.
  • pSessionState
    [in] Zustandsinformationen über die aktuelle Sitzung.
  • pCallback
    [in] Rückrufe, die Benachrichtigungen über Änderungsanwendungsereignisse empfangen.

Rückgabewert

  • S_OK

  • E_INVALIDARG, wenn resolutionPolicy oder collisionPolicy kein gültiger Wert ist.

  • 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

Hinweise

Normalerweise wird diese Methode von einem Anbieter über seine IKnowledgeSyncProvider::ProcessChangeBatch-Methode aufgerufen.

Diese Methode erkennt Parallelitätskonflikte, die zwischen den in pSourceChanges gesendeten Änderungen und den entsprechenden Elementen im Zielreplikat auftreten. Sie löst alle Parallelitätskonflikte gemäß der von resolutionPolicy angegebenen Richtlinie auf. Wenn Kollisionseinschränkungskonflikte vom Zielanbieter gemeldet werden, löst diese Methode sie nach der von collisionPolicy angegebenen Richtlinie auf. Wenn keine Richtlinie zur Konfliktauflösung festgelegt wird, benachrichtigt diese Methode die Anwendung über einen Konflikt, und die Anwendung gibt eine Konfliktauflösungsaktion an. Falls erforderlich, ruft diese Methode anschließend Methoden für pChangeApplierTarget auf, um Änderungen im Zielreplikat sowie nicht aufgelöste Konflikte zu speichern.

Wenn pDestinationVersions gleich NULL ist, ruft Sync Framework für jedes Element in pSourceChanges IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion für pChangeApplierTarget auf.

Der Änderungsanwender unterstützt die Verwaltung des von pConflictLogAccess angegebenen Konfliktprotokolls durch Auflösen von Konflikten im Protokoll und Entfernen veralteter Konflikte aus dem Protokoll. Der Änderungsanwender speichert im Konfliktprotokoll möglicherweise auch temporäre Konflikte, die als Ergebnis der Zusammenführung von Einschränkungskonflikten auftreten. Alle temporären dem Protokoll hinzugefügten Konflikte werden vor dem Ende der Synchronisierungssitzung entfernt.

Siehe auch

Verweis

ISynchronousNotifyingChangeApplier2-Schnittstelle

Konzepte

Konfliktbehandlung