Compartilhar via


ISynchronousNotifyingChangeApplier2::ApplyFullEnumerationChanges

Executa detecção de conflitos, manipulação de conflitos, aplicação de alterações e gerenciamento do log de conflitos para um lote de alterações como parte de uma sincronização de recuperação.

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

Parâmetros

  • resolutionPolicy
    [in] A política a ser usada para resolver conflitos.
  • collisionPolicy
    [in] A política a ser usada para resolver conflitos de restrição de colisão.
  • pSourceChanges
    [in] O lote de alterações do provedor de origem.
  • pUnkDataRetriever
    [in] Um objeto que pode ser usado para recuperar dados de item a partir da réplica de origem.
  • pDestinationVersions
    [in] Um lote de alterações que contém as versões dos itens armazenados na réplica de destino. Esses itens correspondem aos itens em pSourceChanges.
  • pDestinationKnowledge
    [in] O conhecimento da réplica de destino.
  • pDestinationForgottenKnowledge
    [in] O conhecimento esquecido da réplica de destino.
  • pChangeApplierTarget
    [in] O objeto que será chamado para salvar alterações e conflitos.
  • pConflictLogAccess
    [in] O log de conflitos no qual são armazenados conflitos adiados e temporários.
  • pSessionState
    [in] Informações de estado sobre a sessão atual.
  • pCallback
    [in] Retornos de chamada que receberão notificações sobre eventos de aplicação de alterações.

Valor de retorno

  • S_OK

  • E_INVALIDARG quando resolutionPolicy ou collisionPolicy não é um valor válido.

  • 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

Comentários

Normalmente, esse método é chamado por um provedor de destino a partir de seu método IKnowledgeSyncProvider::ProcessFullEnumerationChangeBatch.

Esse método detecta conflitos de simultaneidade que ocorrem entre as alterações enviadas em pSourceChanges e os itens correspondentes na réplica de destino. Ele resolve qualquer conflito de simultaneidade de acordo com a política especificada por resolutionPolicy. Quando conflitos de restrição de colisão são relatados pelo provedor de destino, esse método os resolve de acordo com a política especificada por collisionPolicy. Se nenhuma política de resolução de conflitos estiver definida, esse método notificará o aplicativo de um conflito, e o aplicativo especificará uma ação de resolução de conflitos. Se necessário, esse método chama métodos em pChangeApplierTarget para salvar alterações na réplica de destino e para salvar conflitos não resolvidos.

O aplicador de alterações ajuda a gerenciar o log de conflitos especificado por pConflictLogAccess, resolvendo conflitos no log e removendo conflitos obsoletos do log. O aplicador de alterações também pode usar o log de conflitos para armazenar conflitos temporários que ocorrem em consequência dos conflitos de restrição de mesclagem. Os conflitos temporários adicionados ao log serão removidos antes do término da sessão de sincronização.

Consulte também

Referência

Interface ISynchronousNotifyingChangeApplier2

Conceitos

Manipulando conflitos