Compartilhar via


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.

Confira também

IMAPISupport: IUnknown