IMAPISupport::OpenEntry
Aplica-se a: Outlook 2013 | Outlook 2016
Abre um objeto e retorna um ponteiro de interface para obter mais acesso.
HRESULT OpenEntry(
ULONG cbEntryID,
LPENTRYID lpEntryID,
LPCIID lpInterface,
ULONG ulOpenFlags,
ULONG FAR * lpulObjType,
LPUNKNOWN FAR * lppUnk
);
Parâmetros
cbEntryID
[in] A contagem de bytes no identificador de entrada apontada pelo parâmetro lpEntryID .
Lpentryid
[in] Um ponteiro para o identificador de entrada do objeto a ser aberto.
lpInterface
[in] Um ponteiro para o IID (identificador de interface) que representa a interface a ser usada para acessar o objeto. A aprovação de NULL resulta no retorno da interface padrão do objeto. Por exemplo, se o objeto a ser aberto for uma mensagem, a interface padrão será IMessage; para pastas, é IMAPIFolder. As interfaces padrão para objetos do catálogo de endereços são IDistList para uma lista de distribuição e IMailUser para um usuário de mensagens.
ulOpenFlags
[in] Um bitmask de sinalizadores que controla como o objeto é aberto. Os seguintes sinalizadores podem ser definidos:
MAPI_BEST_ACCESS
Solicita que o objeto seja aberto com as permissões de rede máximas permitidas para o chamador. Por exemplo, se o chamador tiver permissão de leitura/gravação, o objeto deverá ser aberto como leitura/gravação; se o chamador tiver permissão somente leitura, o objeto deverá ser aberto como somente leitura.
MAPI_DEFERRED_ERRORS
Permite que o OpenEntry retorne com êxito, possivelmente antes que o objeto esteja totalmente acessível ao chamador. Se o objeto não estiver acessível, fazer uma chamada de objeto subsequente poderá resultar em um erro.
MAPI_MODIFY
Solicita permissão de leitura/gravação. Por padrão, os objetos são abertos como somente leitura e os chamadores não devem trabalhar na suposição de que a permissão de leitura/gravação foi concedida.
lpulObjType
[out] Um ponteiro para o tipo do objeto aberto.
Lppunk
[out] Um ponteiro para um ponteiro para o objeto aberto.
Valor de retorno
S_OK
O objeto foi aberto com êxito.
MAPI_E_NO_ACCESS
Foi feita uma tentativa de modificar um objeto somente leitura ou foi feita uma tentativa de acessar um objeto para o qual o usuário não tem permissões suficientes.
MAPI_E_NOT_FOUND
Não há um objeto associado ao identificador de entrada passado no parâmetro lpEntryID .
MAPI_E_UNKNOWN_ENTRYID
O identificador de entrada passado no parâmetro lpEntryID está em um formato irreconhecível. Esse valor normalmente será retornado se o provedor de catálogo de endereços que contém o objeto não estiver aberto.
Comentários
O método IMAPISupport::OpenEntry é implementado para todos os objetos de suporte do provedor de serviços. Os provedores de serviços chamam IMAPISupport::OpenEntry para recuperar um ponteiro para uma interface que pode ser usada para acessar um objeto específico.
Notas para chamadores
Chame IMAPISupport::OpenEntry somente quando você não souber que tipo de objeto está abrindo. Se você souber que está abrindo uma pasta ou uma mensagem, chame IMsgStore::OpenEntry em vez disso. Se você souber que está abrindo um contêiner de catálogo de endereços, um usuário de mensagens ou uma lista de distribuição, chame IAddrBook::OpenEntry. Esses métodos mais específicos são mais rápidos do que IMAPISupport::OpenEntry.
IMAPISupport::OpenEntry abre todos os objetos como somente leitura, a menos que você defina o sinalizador MAPI_MODIFY ou MAPI_BEST_ACCESS no parâmetro ulFlags e suas permissões sejam suficientes. A configuração de um desses sinalizadores não garante um tipo específico de acesso; as permissões concedidas dependem do nível de acesso, do objeto e do provedor de serviços que possui o objeto. Para determinar o nível de acesso do objeto aberto, recupere sua propriedade PR_ACCESS_LEVEL (PidTagAccessLevel).
Verifique o valor retornado no parâmetro lpulObjType para determinar se o tipo de objeto retornado é o esperado. Se o tipo de objeto for o esperado, selecione o ponteiro do parâmetro lppUnk para um ponteiro do tipo apropriado. Por exemplo, se você estiver abrindo uma pasta, lance lppUnk em um ponteiro do tipo LPMAPIFOLDER.