MAPIInitialize

Aplica-se a: Outlook 2013 | Outlook 2016

Incrementa a contagem de referências do subsistema MAPI e inicializa dados globais para a DLL mapi.

Propriedade Valor
Arquivo de cabeçalho:
Mapix.h
Implementado por:
MAPI
Chamado por:
Aplicativos do cliente
HRESULT MAPIInitialize(
  LPVOID lpMapiInit
);

Parâmetros

lpMapiInit

[in] Ponteiro para uma estrutura de MAPIINIT_0 . O parâmetro lpMapiInit pode ser definido como NULL.

Valor de retorno

S_OK

O subsistema MAPI foi inicializado com êxito.

Comentários

A função MAPIInitialize incrementa a contagem de referência MAPI para o subsistema MAPI e a função MAPIUninitialize decrementa a contagem de referência interna. Assim, o número de chamadas para uma função deve ser igual ao número de chamadas para a outra. MAPIInitialize retornará S_OK se o MAPI não tiver sido inicializado anteriormente.

Um cliente ou provedor de serviços deve chamar MAPIInitialize antes de fazer qualquer outra chamada MAPI. A falha ao fazer isso faz com que as chamadas do cliente ou do provedor de serviços retornem o valor MAPI_E_NOT_INITIALIZED.

Ao chamar MAPIInitialize de um aplicativo multithread, defina o parâmetro lpMapiInit como uma estrutura de MAPIINIT_0 declarada da seguinte maneira:

MAPIINIT_0 MAPIINIT= { 0, MAPI_MULTITHREAD_NOTIFICATIONS}

e chame:

MAPIInitialize (&MAPIINIT);

Quando essa estrutura é declarada, o MAPI cria um thread separado para lidar com a janela de notificação, que continua até que a contagem de referência de inicialização caia para zero. Um serviço windows deve definir o membro ulflags da estrutura de MAPIINIT_0 apontada por lpMapiInit para MAPI_NT_SERVICE.

Observação

Você não pode chamar MAPIInitialize ou MAPIUninitialize de dentro de uma função DllMain win32 ou qualquer outra função que crie ou encerre threads. Para obter mais informações, consulte Usando objetos Thread-Safe.

MAPIInitialize não retorna nenhuma informação de erro estendida. Ao contrário da maioria das outras chamadas MAPI, os significados de seus valores retornados são estritamente definidos para corresponder à etapa específica da inicialização que falhou:

  1. Verifica parâmetros e sinalizadores.

    MAPI_E_INVALID_PARAMETER ou MAPI_E_UNKNOWN_FLAGS. O chamador passou parâmetro inválido ou sinalizador.

  2. Inicializa as chaves de registro necessárias pelo MAPI e confirma o tipo de sistema operacional. Essa etapa só acontecerá se o processo do cliente estiver em execução como um serviço no Windows e definir o sinalizador DE SERVIÇO MAPI_NT na estrutura MAPIINIT_0 .

    MAPI_E_TOO_COMPLEX. O processo de chamada é um serviço Windows e as chaves de registro exigidas pelo MAPI não puderam ser inicializadas.

    Informações adicionais podem estar disponíveis no log de eventos do aplicativo.

  3. Verifique a compatibilidade do MAPI com o OLE e, em seguida, inicialize o OLE.

  4. Verifica a compatibilidade entre as versões atuais do OLE e do MAPI.

    MAPI_E_VERSION. A versão do OLE instalada na estação de trabalho não é compatível com essa versão do MAPI.

  5. Inicializa o OLE.

    Somente nesta etapa, essa função pode retornar um código de erro não listado aqui. Qualquer erro não listado aqui deve ser assumido como proveniente da função OLE CoInitialize.

  6. Inicializa variáveis globais por processo.

    MAPI_E_SESSION_LIMIT. MAPI configura um contexto específico para o processo atual. Falhas poderão ocorrer no Win16 se o número de processos exceder um determinado número ou em qualquer sistema se a memória disponível estiver esgotada.

  7. Inicializa variáveis globais compartilhadas de todos os processos.

    MAPI_E_NOT_ENOUGH_RESOURCES. Não havia recursos suficientes do sistema disponíveis para concluir a operação.

  8. Inicializa o mecanismo de notificação, cria sua janela e seu thread se solicitado pelo sinalizador MAPI_MULTITHREAD_NOTIFICATIONS.

    MAPI_E_INVALID_OBJECT. Pode falhar se os recursos do sistema estiverem esgotados.

  9. Carrega e inicializa o provedor de perfil. Verifica se MAPIInitialize pode acessar a chave do registro em que os dados de perfil são armazenados.

    MAPI_E_NOT_INITIALIZED. O provedor de perfil encontrou um erro.

Referência do MFCMAPI

Para ver códigos de exemplo do MFCMAPI, confira a tabela a seguir.

Arquivo Função Comentário
ContentsTableListCtrl.cpp
O MFCMAPI usa o método MAPIInitialize para inicializar MAPI em um thread em segundo plano para fazer algum processamento de tabela.

Confira também

MFCMAPI como exemplo de código