Compartilhar via


MSProviderInit

Aplica-se a: Outlook 2013 | Outlook 2016

Inicializa um provedor de armazenamento de mensagens para operação.

Propriedade Valor
Arquivo de cabeçalho:
Mapispi.h
Implementado por:
Provedores de repositório de mensagens
Chamado por:
MAPI
HRESULT MSProviderInit(
  HINSTANCE hInstance,
  LPMALLOC lpMalloc,
  LPALLOCATEBUFFER lpAllocateBuffer,
  LPALLOCATEMORE lpAllocateMore,
  LPFREEBUFFER lpFreeBuffer,
  ULONG ulFlags,
  ULONG ulMAPIVer,
  ULONG FAR * lpulProviderVer,
  LPMSPROVIDER FAR * lppMSProvider
);

Parâmetros

Hinstance

[in] A instância da DLL (biblioteca de link dinâmico) do provedor de repositório de mensagens que o MAPI usou quando ele foi vinculado.

lpMalloc

[in] Ponteiro para um objeto alocador de memória expondo a interface OLE IMalloc . O provedor do repositório de mensagens 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 o MAPI 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 este provedor do repositório de mensagens usa.

lppMSProvider

[out] Ponteiro para um ponteiro para o objeto do provedor inicializado do repositório de mensagens.

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 MSProviderInit para inicializar um provedor de armazenamento de mensagens seguindo um logon do cliente.

Observações para implementadores

Um provedor do repositório de mensagens deve implementar o MSProviderInit como uma função de ponto de entrada na DLL do provedor. A implementação deve ser baseada no protótipo de função MSPROVIDERINIT , também especificado em MAPISPI.H. MAPI define MSPROVIDERINIT para usar o tipo de chamada de inicialização MAPI padrão, STDMAPIINITCALLTYPE, que faz com que MSProviderInit 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, MSProviderInit deve retornar um objeto provedor diferente em lppMSProvider para cada inicialização, mesmo para várias inicializações no mesmo processo.

A DLL do provedor não deve ser vinculada a Mapix.dll. Em vez disso, ele deve usar esses ponteiros para alocação ou desalocação de memória.

O provedor do repositório de mensagens 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 MSProviderInit, consulte Carregando provedores do Repositório de Mensagens. 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.

Confira também

ABProviderInit
IMSProvider : IUnknown
XPProviderInit