Compartilhar via


Atuando como um provedor de catálogo de endereços de host

Aplica-se a: Outlook 2013 | Outlook 2016

Um provedor host é um provedor de catálogo de endereços que inclui destinatários de outros provedores em seus contêineres e depende da implementação dos destinatários pelos outros provedores para controlar parcialmente sua manutenção. Um provedor host usa os identificadores de modelo desses destinatários estrangeiros para associar os dados desses destinatários ao código no provedor estrangeiro. Esse processo de associação é iniciado quando o provedor recupera a propriedade PR_TEMPLATEID (PidTagTemplateid) de um destinatário e o passa em uma chamada para IMAPISupport::OpenTemplateID.

Quando seu provedor chama IMAPISupport::OpenTemplateID, MAPI corresponde ao MAPIUID dentro do identificador de modelo com um MAPIUID registrado por um provedor e chama o método IABLogon::OpenTemplateID do provedor. O provedor estrangeiro pode retornar um ponteiro para o objeto de propriedade do provedor, para sua própria implementação de objeto de propriedade ou para uma implementação que envolve o objeto do provedor. O ponteiro retornado é colocado no conteúdo do parâmetro lppMAPIPropNew .

Seu provedor pode escolher se deve ou não chamar IMAPISupport::OpenTemplateID com o conjunto de sinalizadores FILL_ENTRY. Defina esse sinalizador quando o destinatário estiver sendo criado ou quando um longo tempo tiver passado desde que seu provedor atualizou as propriedades do destinatário. Um uso comum do sinalizador FILL_ENTRY é manter um destinatário em seu provedor sincronizado com o original. Implementar esse tipo de agenda de sincronização melhora o desempenho.

Para manter um destinatário estrangeiro sincronizado

  1. Determine um intervalo apropriado para atualizações periódicas.

  2. Carimbo de data/hora de cada chamada para IMAPISupport::OpenTemplateID.

  3. Avalie se é necessário ou não executar uma atualização completa com base na quantidade de tempo que expirou desde a última chamada. Se uma atualização completa for necessária, chame IMAPISupport::OpenTemplateID com o sinalizador FILL_ENTRY. Se não for necessário, não defina o sinalizador na chamada.

Quando um cliente faz uma solicitação para uma das propriedades do destinatário copiado, seu provedor pode escolher se deseja lidar com a solicitação em si ou usar o código fornecido pelo provedor estrangeiro. Seu provedor pode esperar que o provedor estrangeiro intercepte a maioria, se não todas, chamadas para IMAPIProp , exceto para IMAPIProp::OpenProperty. Uma chamada para OpenProperty solicitando a propriedade PR_DETAILS_TABLE (PidTagDetailsTable) é sempre encaminhada ao seu provedor.

Para acessar o código do identificador de modelo

  1. Abra o destinatário e chame seu método IMAPIProp::GetProps para recuperar a propriedade PR_TEMPLATEID (PidTagTemplateid). Se GetProps falhar porque PR_TEMPLATEID não estiver disponível, o provedor estrangeiro não oferecerá suporte a um identificador de modelo e código relacionado para esse destinatário. Seu provedor precisará usar a implementação do destinatário para toda a manutenção.

  2. Se o identificador de modelo for retornado do GetProps, passe-o e um ponteiro para a implementação IMAPIProp do destinatário em uma chamada para o método IMAPISupport::OpenTemplateID . Defina o sinalizador FILL_ENTRY se a maioria ou todas as propriedades do destinatário precisarem ser atualizadas, como na hora da criação ou se elas não tiverem sido atualizadas por um tempo.

  3. Se OpenTemplateID retornar a implementação IMAPIProp do provedor estrangeiro, retorne ao cliente um ponteiro para essa implementação.

  4. Se OpenTemplateID não retornar uma implementação, normalmente porque o provedor estrangeiro não está no perfil, retorne ao cliente um ponteiro para a implementação IMAPIProp do provedor. O cliente deve ser capaz de trabalhar com as propriedades do objeto usando qualquer interface.