Inicializando o provedor de transporte
Aplica-se a: Outlook 2013 | Outlook 2016
A interface transport-spooler define chamadas que o spooler MAPI faz para um provedor de transporte. Os provedores de transporte implementam essas rotinas em uma DLL (biblioteca de vínculo dinâmico). O primeiro ponto de entrada direta na DLL usada pelo spooler MAPI deve ser a função de inicialização do provedor de transporte XPProviderInit.
O MAPI usa a rotina GetProcAddress para obter o endereço da rotina de inicialização do provedor de serviços e, em seguida, chama essa rotina. O nome da rotina de inicialização é XPProviderInit para provedores de transporte. É diferente para outros tipos de provedores de serviços MAPI para que uma DLL possa conter qualquer combinação de tipos de provedor de serviços, mas apenas um provedor de serviços de um tipo específico. No entanto, um provedor de serviços de um determinado tipo pode implementar vários serviços do tipo. Por exemplo, um provedor de transporte pode implementar a funcionalidade de transporte de mensagens para vários serviços de mensagem.
O arquivo de cabeçalho mapispi.h tem uma definição de tipo para o protótipo de função da função de inicialização do provedor de transporte e um nome de procedimento predefinido para ele. Ao nomear as rotinas de inicialização em seus arquivos C e C++ com os mesmos nomes usados pelo GetProcAddress e usando uma declaração de exportação simples no arquivo DLL.DEF, você obtém automaticamente a verificação de tipo dos parâmetros em sua rotina de inicialização. Consulte o código-fonte do provedor de transporte de exemplo para obter exemplos. Para obter mais informações, consulte Exemplo do Provedor de Transporte.
Se a chamada de inicialização de um provedor de serviços for bem-sucedida, mas retornar um número de versão de interface do provedor de serviço muito pequeno para o MAPI lidar, MAPI imediatamente chamará o método Release do objeto provedor de serviço e continuará como se a chamada de inicialização tivesse falhado com MAPI_E_VERSION. Dessa forma, o MAPI e o provedor de serviços definem conjuntamente o intervalo de números de versão da interface do provedor de serviços que podem lidar e, se nada corresponder, o carregamento do provedor de serviços falhará com um valor de retorno MAPI_E_VERSION.
A última etapa do spooler MAPI para obter acesso aos recursos do provedor de serviços é fazer logon no provedor de transporte. O spooler MAPI chama o método IXPProvider::TransportLogon do objeto IXPProvider : IUnknown retornado de XPProviderInit. Essa é a chamada em que as credenciais, se usadas, são marcadas e caixas de diálogo podem ser permitidas.
Se um processo abrir uma segunda sessão de transporte na mesma sessão de provedor de transporte e MAPI, a DLL do provedor de transporte não deverá criar um segundo objeto de provedor. O primeiro objeto provedor deve ser usado para fazer logon na segunda sessão de transporte. Um provedor de transporte deve ser programado para dar suporte a várias sessões de transporte em um único objeto de provedor. Um segundo objeto provedor só deve ser criado se diferentes sessões MAPI forem usadas no mesmo processo.