ISupportFilteredSync::AddFilter
Define o filtro que é usado para enumeração de alteração pelo provedor de origem, quando implementado por uma classe derivada.
HRESULT AddFilter(
IUnknown * pFilter,
FILTERING_TYPE filteringType);
Parâmetros
Termo |
Definição |
pFilter |
[in] O filtro que é usado para enumeração de alteração pelo provedor de origem. |
filteringType |
[in] Indica o tipo de informações incluídas em um lote de alterações durante a sincronização filtrada. |
Valor de retorno
S_OK.
SYNC_E_FILTER_NOT_SUPPORTED quando o tipo de filtro que é especificado por pFilter não tiver suporte.
Códigos de erro determinados pelo provedor.
Comentários
A negociação de filtro é obtida por meio das seguintes etapas:
Antes de o provedor de origem começar a enumerar alterações, o Sync Framework inicia a negociação de filtro chamando IRequestFilteredSync::SpecifyFilter no provedor de destino.
Durante o processamento de IRequestFilteredSync::SpecifyFilter, o provedor de destino transmite filtros a IFilterRequestCallback::RequestFilter.
Durante o processamento de IFilterRequestCallback::RequestFilter, o Sync Framework chama ISupportFilteredSync::AddFilter no provedor de origem. Se o provedor de origem não oferecer suporte ao filtro solicitado, o provedor de destino poderá continuar solicitando filtros até encontrar um que tenha suporte.
Quando um filtro tiver sido negociado com êxito, o provedor de origem o usará para determinar quais itens incluir durante a enumeração de alteração.
Observações para implementadores
Uma implementação desse método pode examinar o filtro especificado por pFilter e filteringType, e retornar SYNC_E_FILTER_NOT_SUPPORTED para indicar que o filtro não tem suporte. O provedor de destino pode então solicitar filtros diferentes até que seja encontrado um que tenha suporte.
O provedor de destino normalmente encerrará a sessão de sincronização quando um erro diferente de SYNC_E_FILTER_NOT_SUPPORTED for retornado de ISupportFilteredSync::AddFilter.