XPProviderInit
Aplica-se a: Outlook 2013 | Outlook 2016
Inicializa um provedor de transporte para operação.
Propriedade | Valor |
---|---|
Arquivo de cabeçalho: |
Mapispi.h |
Implementado por: |
Provedores de transporte |
Chamado por: |
MAPI |
HRESULT XPProviderInit(
HINSTANCE hInstance,
LPMALLOC lpMalloc,
LPALLOCATEBUFFER lpAllocateBuffer,
LPALLOCATEMORE lpAllocateMore,
LPFREEBUFFER lpFreeBuffer,
ULONG ulFlags,
ULONG ulMAPIVer,
ULONG FAR * lpulProviderVer,
LPXPPROVIDER FAR * lppXPProvider
);
Parâmetros
Hinstance
[in] A instância da DLL (biblioteca de link dinâmico) do provedor de transporte que o MAPI usou quando carregou a DLL.
lpMalloc
[in] Ponteiro para um objeto alocador de memória expondo a interface OLE IMalloc . O provedor de transporte pode precisar usar esse método de alocação ao trabalhar com determinadas interfaces, como o IStream.
lpAllocateBuffer
[in] Ponteiro para a função MAPIAllocateBuffer , a ser usada para alocar memória.
lpAllocateMore
[in] Ponteiro para a função MAPIAllocateMore , a ser usada para alocar memória adicional.
lpFreeBuffer
[in] Ponteiro para a função MAPIFreeBuffer , a ser usada para liberar memória.
ulFlags
[in] Máscara de bits de sinalizadores. O seguinte sinalizador pode ser definido:
MAPI_NT_SERVICE
O provedor está sendo carregado no contexto de um serviço Windows, um tipo especial de processo sem acesso a qualquer interface do usuário.
ulMAPIVer
[in] Número de versão da SPI (interface do provedor de serviço) que Mapi.dll usa. Para o número da versão atual, consulte o arquivo de cabeçalho Mapispi.h.
lpulProviderVer
[out] Ponteiro para o número de versão do SPI que esse provedor de transporte usa.
lppXPProvider
[out] Ponteiro para um ponteiro para o objeto do provedor de transporte inicializado.
Valor de retorno
S_OK
A chamada foi bem-sucedida e retornou o valor ou valores esperados.
MAPI_E_VERSION
A versão spi que está sendo usada pelo MAPI não é compatível com o SPI que está sendo usado por esse provedor.
Comentários
MAPI chama a função de ponto de entrada XPProviderInit para inicializar um provedor de transporte seguindo um logon do cliente. XPProviderInit é chamado uma vez para cada provedor de transporte especificado no perfil do cliente.
Observações para implementadores
Um provedor de transporte deve implementar o XPProviderInit como uma função de ponto de entrada na DLL do provedor. A implementação deve ser baseada no protótipo da função XPPROVIDERINIT , também especificado em Mapispi.h. MAPI define XPPROVIDERINIT para usar o tipo de chamada de inicialização MAPI padrão, STDMAPIINITCALLTYPE, que faz com que XPProviderInit siga a convenção de chamada CDECL. Uma vantagem do CDECL é que as chamadas podem ser tentadas mesmo que o número de parâmetros de chamada não corresponda ao número de parâmetros definidos.
Um provedor pode ser inicializado várias vezes como resultado de aparecer em vários perfis em uso simultâneo ou de aparecer mais de uma vez no mesmo perfil. Como o objeto provedor contém contexto, xPProviderInit deve retornar um objeto provedor diferente em lppXPProvider para cada inicialização, mesmo para várias inicializações no mesmo processo.
O provedor de transporte deve usar as funções apontadas por lpAllocateBuffer, lpAllocateMore e lpFreeBuffer para a maioria da alocação e alocação de memória. Em particular, o provedor deve usar essas funções para alocar memória para uso por aplicativos cliente ao chamar interfaces de objeto como IMAPIProp::GetProps e IMAPITable::QueryRows. Se o provedor também espera usar o alocador de memória OLE, ele deve chamar o método IUnknown::AddRef do objeto alocador apontado pelo parâmetro lpMalloc .
Para obter mais informações sobre como escrever XPProviderInit, consulte Inicializando o Provedor de Transporte. Para obter mais informações sobre funções de ponto de entrada, consulte Implementando uma Função de Ponto de Entrada do Provedor de Serviços.