Compartilhar via


ISynchronousNotifyingChangeApplier2::ApplyChanges

Executa detecção e manipulação de conflitos, aplicação de alterações e gerencia o log de conflitos de um lote de alterações.

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

Parâmetros

  • resolutionPolicy
    [in] A política a ser usada para resolver conflitos de simultaneidade.
  • 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] Uma lista de alterações que contém as versões dos itens que são 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 for 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 a partir de seu método IKnowledgeSyncProvider::ProcessChangeBatch.

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.

Se pDestinationVersions for NULL, Sync Framework chamará IASynchronousNotifyingChangeApplierTarget::GetDestinationVersion em pChangeApplierTarget para cada item em pSourceChanges.

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. Qualquer conflito temporário adicionado ao log será removido antes do término da sessão de sincronização.

Consulte também

Referência

Interface ISynchronousNotifyingChangeApplier2

Conceitos

Manipulando conflitos