Partager via


ISynchronousNotifyingChangeApplier2::ApplyChanges

Effectue des opérations de détection de conflit, de gestion des conflits, d'application de modifications et de gestion du journal des conflits pour un lot de modifications.

Syntaxe

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

Paramètres

  • resolutionPolicy
    [in] Stratégie à utiliser pour résoudre les conflits d'accès concurrentiels.

  • collisionPolicy
    [in] Stratégie à utiliser pour résoudre les conflits de contraintes de collision.

  • pSourceChanges
    [in] Lot de modifications du fournisseur de source.

  • pUnkDataRetriever
    [in] Objet qui peut être utilisé pour récupérer des données d'élément du réplica source.

  • pDestinationVersions
    [in] Liste de modifications qui contient les versions des éléments stockés dans le réplica de destination. Ces éléments correspondent aux éléments dans pSourceChanges.

  • pDestinationKnowledge
    [in] Connaissance du réplica de destination.

  • pDestinationForgottenKnowledge
    [in] Connaissance oubliée du réplica de destination.

  • pChangeApplierTarget
    [in] Objet qui sera appelé pour enregistrer les modifications et conflits.

  • pConflictLogAccess
    [in] Journal des conflits dans lequel sont stockés les conflits différés et les conflits temporaires.

  • pSessionState
    [in] Informations d'état relatives à la session active.

  • pCallback
    [in] Rappels qui recevront des notifications à propos des événements d'application de modifications.

Valeur de retour

  • S_OK

  • E_INVALIDARG lorsque resolutionPolicy ou collisionPolicy n'est pas une valeur valide.

  • 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

Notes

En général, cette méthode est appelée par un fournisseur à partir de sa méthode IKnowledgeSyncProvider::ProcessChangeBatch.

Cette méthode détecte les conflits d'accès concurrentiel qui se produisent entre les modifications envoyées dans pSourceChanges et les éléments correspondants dans le réplica de destination. Elle résout tous les conflits d'accès concurrentiel conformément à la stratégie spécifiée par resolutionPolicy. Lorsque les conflits de contraintes de collision sont signalés par le fournisseur de destination, cette méthode les résout conformément à la stratégie spécifiée par collisionPolicy. Si aucune stratégie de résolution de conflit n'est définie, cette méthode indique à l'application qu'un conflit s'est produit, et l'application spécifie une action de résolution de conflit. Si nécessaire, cette méthode appelle ensuite des méthodes sur pChangeApplierTarget pour enregistrer les modifications dans le réplica de destination et enregistrer les conflits non résolus.

Si pDestinationVersions a la valeur NULL, Sync Framework appelle IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion sur pChangeApplierTarget pour chaque élément dans pSourceChanges.

L'applicateur de modifications facilite la gestion du journal des conflits spécifié par pConflictLogAccess, en résolvant les conflits figurant dans le journal et en supprimant du journal ceux qui sont obsolètes. L'applicateur de modifications peut également utiliser le journal des conflits pour stocker des conflits temporaires résultant de la fusion de conflits de contraintes. Tous les conflits temporaires ajoutés au journal seront supprimés avant la fin de la session de synchronisation.

Voir aussi

Autres ressources

Interface ISynchronousNotifyingChangeApplier2

Gestion des conflits