Implementando uma função de ponto de entrada do provedor de serviços
Aplica-se a: Outlook 2013 | Outlook 2016
Cada DLL do provedor de serviços tem uma função de ponto de entrada que o MAPI chama para carregá-la. Lembre-se de que essa função de ponto de entrada não é igual a DllMain, a função de ponto de entrada DLL Win32.
Dependendo do tipo do provedor, a função de ponto de entrada do provedor está em conformidade com um protótipo diferente. O MAPI define diferentes protótipos de função de ponto de entrada para provedores de serviços.
Provider | Protótipo da função de ponto de entrada |
---|---|
Provedores de repositório de mensagens |
MSProviderInit |
Provedores de transporte |
XPProviderInit |
Provedores de catálogo de endereços |
ABProviderInit |
Grande parte da funcionalidade nesses protótipos é a mesma para todos os tipos de provedor de serviços.
O catálogo de endereços, o repositório de mensagens e os provedores de transporte executam as duas tarefas main a seguir em suas funções de ponto de entrada:
- Verifique a versão da SPI (interface do provedor de serviços) para ter certeza de que o MAPI está usando uma versão compatível com a versão que seu provedor de serviços está usando. Use o parâmetro lpulMAPIVer, que contém a versão SPI mapi e o parâmetro lpulProviderVer, que contém sua versão SPI, para executar o marcar. Esses parâmetros são inteiros sem sinal de 32 bits compostos por três partes:
Os bits 24 a 31 representam a versão principal.
Os bits 16 a 23 representam a versão menor.
Os bits 0 a 15 representam o identificador de atualização. Embora o número de versão principal raramente seja alterado, o número de versão menor é alterado sempre que MAPI é lançado e o SPI é alterado. O identificador de atualização é a versão de build interna da Microsoft; ele é usado para acompanhar as alterações durante o processo de desenvolvimento. MAPI define a constante CURRENT_SPI_VERSION, documentada no arquivo de cabeçalho Mapispi.h, para indicar a versão spi atual. Fail your marcar with the error MAPI_E_VERSION if you are using a version of the SPI that is new than the version that MAPI is using.
Crie uma instância de um objeto provedor. Como seu provedor pode ser iniciado e inicializado várias vezes, você deve criar uma nova instância sempre que isso ocorrer. Os provedores são iniciados várias vezes quando aparecem em vários perfis que estão em uso simultaneamente por um ou mais clientes ou quando aparecem várias vezes em um único perfil. Assim como o protótipo da função de ponto de entrada é diferente dependendo do tipo do provedor, o tipo de objeto do provedor também é diferente.
Se você estiver escrevendo um provedor de catálogo de endereços, implemente IABProvider : IUnknown. Se você estiver escrevendo um provedor de armazenamento de mensagens, implemente IMSProvider : IUnknown. Para obter mais informações, consulte Carregando provedores do Repositório de Mensagens.
Se você estiver escrevendo um provedor de transporte, implemente IXPProvider : IUnknown. Para obter mais informações, consulte Inicializando o Provedor de Transporte.