Compartir a través de


IMAPISession::OpenEntry

Hace referencia a: Outlook 2013 | Outlook 2016

Abre un objeto y devuelve un puntero de interfaz para obtener acceso adicional.

HRESULT OpenEntry(
  ULONG cbEntryID,
  LPENTRYID lpEntryID,
  LPCIID lpInterface,
  ULONG ulFlags,
  ULONG FAR * lpulObjType,
  LPUNKNOWN FAR * lppUnk
);

Parameters

cbEntryID

[in] Recuento de bytes en el identificador de entrada al que apunta el parámetro lpEntryID .

lpEntryID

[in] Puntero al identificador de entrada del objeto que se va a abrir.

lpInterface

[in] Puntero al identificador de interfaz (IID) que representa la interfaz que se va a usar para acceder al objeto abierto. Al pasar NULL, se devuelve la interfaz estándar del objeto. Por ejemplo, si el objeto que se va a abrir es un mensaje, la interfaz estándar es IMessage; para carpetas, es IMAPIFolder. Las interfaces estándar para los objetos de libreta de direcciones son IDistList para una lista de distribución y IMailUser para un usuario de mensajería.

ulFlags

[in] Máscara de bits de marcas que controla cómo se abre el objeto. Se pueden usar las siguientes marcas:

MAPI_BEST_ACCESS

Solicita que el objeto se abra con los permisos de red máximos permitidos para el usuario y el acceso máximo a la aplicación cliente. Por ejemplo, si el cliente tiene permiso de lectura y escritura, el objeto debe abrirse con permiso de lectura y escritura; si el cliente tiene permiso de solo lectura, el objeto debe abrirse con permiso de solo lectura.

MAPI_CACHE_OK

Use todos los medios, incluidas las libretas de direcciones sin conexión, para realizar la resolución de nombres.

MAPI_CACHE_ONLY

Use solo la libreta de direcciones sin conexión para realizar la resolución de nombres. Por ejemplo, puede usar esta marca para permitir que una aplicación cliente abra la lista global de direcciones (GAL) en modo de intercambio almacenado en caché y acceda a una entrada en esa libreta de direcciones desde la memoria caché sin crear tráfico entre el cliente y el servidor. Esta marca solo es compatible con el proveedor de libreta de direcciones de Exchange.

MAPI_DEFERRED_ERRORS

Permite que OpenEntry devuelva correctamente, posiblemente antes de que el objeto esté totalmente disponible para el cliente que realiza la llamada. Si el objeto no está disponible, realizar una llamada de objeto posterior puede producir un error.

MAPI_MODIFY

Solicita permiso de lectura y escritura. De forma predeterminada, los objetos se abren con permiso de solo lectura y los clientes no deben funcionar en la suposición de que se concede el permiso de lectura y escritura.

MAPI_NO_CACHE

No use la libreta de direcciones sin conexión para realizar la resolución de nombres. Esta marca solo es compatible con el proveedor de libreta de direcciones de Exchange.

SHOW_SOFT_DELETES

Mostrar los elementos que están marcados actualmente como eliminados temporalmente (es decir, están en la fase de tiempo de retención de elementos eliminados).

lpulObjType

[out] Puntero al tipo del objeto abierto.

lppUnk

[out] Puntero a un puntero al objeto abierto.

Valor devuelto

S_OK

El objeto se abrió correctamente.

MAPI_E_NO_ACCESS

Se intentó modificar un objeto de solo lectura o se intentó acceder a un objeto para el que el usuario no tiene permisos suficientes.

MAPI_E_NOT_FOUND

No hay ningún objeto asociado al identificador de entrada pasado en el parámetro lpEntryID .

MAPI_E_UNKNOWN_ENTRYID

El identificador de entrada pasado en el parámetro lpEntryID está en un formato irreconocible. Este valor se devuelve normalmente si el proveedor de servicios que contiene el objeto no está abierto.

Comentarios

El método IMAPISession::OpenEntry abre un almacén de mensajes o un objeto de libreta de direcciones, devolviendo un puntero a una interfaz que se puede usar para acceder al objeto.

Notas para los llamadores

Importante

Al abrir entradas de carpeta en un almacén público, como carpetas y mensajes, use IMsgStore::OpenEntry en lugar de IMAPISession::OpenEntry. Esto garantiza que las carpetas públicas funcionen correctamente cuando se definen varias cuentas de Exchange en un perfil.

Llame a IMAPISession::OpenEntry solo cuando no sepa qué tipo de objeto está abriendo. Si sabe que está abriendo una carpeta o un mensaje, llame a IMsgStore::OpenEntry. Si sabe que está abriendo un contenedor de libreta de direcciones, un usuario de mensajería o una lista de distribución, llame a IAddrBook::OpenEntry. Estos métodos más específicos son más rápidos que IMAPISession::OpenEntry.

MAPI abre todos los objetos con permiso de solo lectura, a menos que establezca la marca MAPI_MODIFY o MAPI_BEST_ACCESS en el parámetro ulFlags . Establecer una de estas marcas no garantiza un tipo determinado de acceso; Los permisos que se conceden dependen del proveedor de servicios, el nivel de acceso y el objeto . Para determinar el nivel de acceso del objeto abierto, recupere su propiedad PR_ACCESS_LEVEL (PidTagAccessLevel).

Llamar a IMAPISession::OpenEntry y establecer lpEntryID para que apunte al identificador de entrada de un almacén de mensajes es lo mismo que llamar al método IMAPISession::OpenMsgStore con el MDB_NO_DIALOG marca establecido. La configuración de la marca también es equivalente, salvo que para solicitar permiso de lectura y escritura con OpenMsgStore, debe establecer la marca de MDB_WRITE en lugar de MAPI_MODIFY.

Compruebe el valor devuelto en el parámetro lpulObjType para determinar si el tipo de objeto devuelto es el esperado. Si el tipo de objeto no es el que esperaba, convierta el puntero desde el parámetro lppUnk a un puntero del tipo adecuado. Por ejemplo, si abre una carpeta, convierta lppUnk en un puntero de tipo LPMAPIFOLDER.

Referencia de MFCMAPI

Para obtener un ejemplo de código de MFCMAPI, vea la siguiente tabla.

Archivo Función Comment
MAPIFunctions.cpp
CallOpenEntry
MFCMAPI usa el método IMAPISession::OpenEntry para abrir un objeto .

Vea también

IAddrBook::OpenEntry

IDistList : IMAPIContainer

IMailUser : IMAPIProp

IMAPIFolder : IMAPIContainer

IMAPISession::OpenMsgStore

IMessage: IMAPIProp

IMsgStore::OpenEntry

IMAPISession: IUnknown

MFCMAPI como un ejemplo de c�digo