Compartilhar via


Acessando objetos usando a sessão

Aplica-se a: Outlook 2013 | Outlook 2016

O ponteiro de sessão que você recebe de sua chamada para MAPILogonEx pode ser usado para acessar uma grande variedade de objetos. A tabela a seguir lista os métodos usados para acessar vários objetos:

Object Método session
Seção Perfil
IMAPISession::OpenProfileSection
Repositório de mensagens
IMAPISession::OpenMsgStore
Catálogo de endereços
IMAPISession::OpenAddressBook
Objeto de administração do serviço de mensagem
IMAPISession::AdminServices
Pasta, mensagem, contêiner de catálogo de endereços, lista de distribuição ou usuário de mensagens
IMAPISession::OpenEntry

Com o método OpenEntry e um identificador de entrada válido, você pode abrir qualquer catálogo de endereços ou objeto do provedor do repositório de mensagens. Há outros métodos OpenEntry no MAPI, além do método IMAPISession . OpenEntry é implementado nos seguintes objetos:

Object Method
Objeto de logon do provedor de catálogo de endereços
IABLogon::OpenEntry
Catálogo de endereços
IAddrBook::OpenEntry
Contêiner do catálogo de endereços
IMAPIContainer::OpenEntry
Sessão
IMAPISession::OpenEntry
Repositório de mensagens
IMsgStore::OpenEntry
Objeto de logon do provedor de armazenamento de mensagens
IMSLogon::OpenEntry
Pasta
IMAPIContainer::OpenEntry
Objeto support
IMAPISupport::OpenEntry

Alguns métodos OpenEntry exigem que um identificador de entrada do objeto seja aberto, assim como IMAPISession::OpenEntry; outros métodos permitem que NULL seja especificado. Um identificador de entrada NULL é interpretado de forma diferente dependendo do objeto. Por exemplo, quando você chama IAddrBook::OpenEntry com um identificador de entrada NULL, MAPI abre o contêiner raiz do catálogo de endereços. O método OpenEntry do repositório de mensagens se comporta de forma semelhante; ela abre a pasta raiz do repositório de mensagens. IMAPIContainer::OpenEntry, implementado por pastas e contêineres de catálogo de endereços, pode retornar MAPI_E_INVALID_PARAMETER ou o contêiner raiz, dependendo do implementador.

Além de não permitir um valor NULL para o identificador de entrada, o método OpenEntry da sessão difere de outros métodos OpenEntry porque seu trabalho não é abrir objetos. Em vez disso, examina o identificador de entrada e encaminha a chamada para outro método OpenEntry implementado pelo provedor de serviços apropriado. Por exemplo, se você chamar IMAPISession::OpenEntry com o identificador de entrada de uma mensagem, MAPI chamará o método IMSLogon::OpenEntry do repositório de mensagens responsável pela mensagem.

Além de usar a sessão para abrir objetos, os clientes a usam para compará-los. O método IMAPISession::CompareEntryIDs compara objetos comparando seus identificadores de entrada. Se as estruturas MAPIUID contidas nos identificadores de entrada pertencerem ao mesmo provedor de serviços, o MAPI encaminhará a chamada para esse provedor. CompareEntryIDs retorna um valor de erro quando os dois identificadores de entrada não correspondem. Embora esse método possa comparar identificadores de entrada que pertencem a qualquer tipo de objeto, CompareEntryIDs funciona melhor para objetos de nível mais alto, como armazenamentos de mensagens e contêineres de catálogo de endereços. Para comparar objetos de nível inferior, compare diretamente as chaves de pesquisa dos objetos (PR_SEARCH_KEY (PidTagSearchKey)) ou chaves de registro (PR_RECORD_KEY (PidTagRecordKey)).

Assim como OpenEntry, CompareEntryIDs é implementado por vários objetos. Escolha qual método OpenEntry e CompareEntryID usar de acordo com a quantidade de informações que você tem sobre o objeto ou objetos a serem abertos ou comparados. Use as seguintes diretrizes ao decidir qual método de interface chamar:

  • Se você não tiver informações sobre os objetos de destino, chame IMAPISession::OpenEntry ou IMAPISession::CompareEntryIDs. Essa abordagem permite o acesso a qualquer objeto, mas é a mais lenta das três.

  • Se você souber que os objetos de destino são entradas de catálogo de endereços, em vez de, por exemplo, pastas, chame o método IAddrBook::OpenEntry ou IAddrBook::CompareEntryIDs . IAddrBook::OpenEntry abre o contêiner raiz do catálogo de endereços quando NULL é especificado como o objeto de destino. Essa abordagem permite o acesso a qualquer objeto de catálogo de endereços e é mais rápida do que usar IMAPISession, mas mais lenta do que usar IMAPIContainer.

  • Se o identificador de entrada que está sendo usado for um identificador de entrada de curto prazo ou se você souber que os objetos de destino pertencem a um determinado contêiner ou pasta do catálogo de endereços, chame o método IMAPIContainer::OpenEntry . Essa abordagem gera o desempenho mais rápido, mas permite o acesso apenas a objetos em um contêiner ou pasta específico.