Acceso a objetos mediante la sesión
Hace referencia a: Outlook 2013 | Outlook 2016
El puntero de sesión que recibe de la llamada a MAPILogonEx se puede usar para acceder a una amplia variedad de objetos. En la tabla siguiente se enumeran los métodos que se usan para acceder a varios objetos:
Objeto | Método de sesión |
---|---|
Sección Perfil |
IMAPISession::OpenProfileSection |
Almacén de mensajes |
IMAPISession::OpenMsgStore |
Libreta de direcciones |
IMAPISession::OpenAddressBook |
Objeto de administración del servicio de mensajes |
IMAPISession::AdminServices |
Carpeta, mensaje, contenedor de libreta de direcciones, lista de distribución o usuario de mensajería |
IMAPISession::OpenEntry |
Con el método OpenEntry y un identificador de entrada válido, puede abrir cualquier objeto de proveedor de almacén de mensajes o libreta de direcciones. Hay otros métodos OpenEntry en MAPI, además del método IMAPISession . OpenEntry se implementa en los objetos siguientes:
Objeto | Método |
---|---|
Objeto de inicio de sesión del proveedor de libretas de direcciones |
IABLogon::OpenEntry |
Libreta de direcciones |
IAddrBook::OpenEntry |
Contenedor de libreta de direcciones |
IMAPIContainer::OpenEntry |
Sesión |
IMAPISession::OpenEntry |
Almacén de mensajes |
IMsgStore::OpenEntry |
Objeto de inicio de sesión del proveedor de mensajes |
IMSLogon::OpenEntry |
Folder |
IMAPIContainer::OpenEntry |
Objeto de compatibilidad |
IMAPISupport::OpenEntry |
Algunos métodos OpenEntry requieren que se abra un identificador de entrada del objeto, al igual que IMAPISession::OpenEntry; otros métodos permiten especificar NULL. Un identificador de entrada NULL se interpreta de forma diferente en función del objeto . Por ejemplo, al llamar a IAddrBook::OpenEntry con un identificador de entrada NULL, MAPI abre el contenedor raíz de la libreta de direcciones. El método OpenEntry del almacén de mensajes se comporta de forma similar; abre la carpeta raíz del almacén de mensajes. IMAPIContainer::OpenEntry, implementado por carpetas y contenedores de libreta de direcciones, puede devolver MAPI_E_INVALID_PARAMETER o el contenedor raíz, en función del implementador.
Además de no permitir un valor NULL para el identificador de entrada, el método OpenEntry de la sesión difiere de otros métodos OpenEntry porque su trabajo es no abrir objetos. En su lugar, examina el identificador de entrada y reenvía la llamada a otro método OpenEntry implementado por el proveedor de servicios adecuado. Por ejemplo, si llama a IMAPISession::OpenEntry con el identificador de entrada de un mensaje, MAPI llama al método IMSLogon::OpenEntry del almacén de mensajes responsable del mensaje.
Además de usar la sesión para abrir objetos, los clientes la usan para compararlos. El método IMAPISession::CompareEntryIDs compara objetos comparando sus identificadores de entrada. Si las estructuras MAPIUID contenidas en los identificadores de entrada pertenecen al mismo proveedor de servicios, MAPI reenvía la llamada a ese proveedor. CompareEntryIDs devuelve un valor de error cuando los dos identificadores de entrada no coinciden. Aunque este método puede comparar los identificadores de entrada que pertenecen a cualquier tipo de objeto, CompareEntryIDs funciona mejor para objetos de nivel superior, como almacenes de mensajes y contenedores de libreta de direcciones. Para comparar objetos de nivel inferior, compare directamente las claves de búsqueda de los objetos (PR_SEARCH_KEY (PidTagSearchKey)) o las claves de registro (PR_RECORD_KEY (PidTagRecordKey)).
Al igual que OpenEntry, CompareEntryIDs se implementa mediante varios objetos. Elija qué método OpenEntry y CompareEntryID usar según la cantidad de información que tenga sobre el objeto u objetos que se van a abrir o comparar. Use las siguientes directrices al decidir qué método de interfaz llamar:
Si no tiene información sobre los objetos de destino, llame a IMAPISession::OpenEntry o IMAPISession::CompareEntryIDs. Este enfoque permite el acceso a cualquier objeto, pero es el más lento de los tres.
Si sabe que los objetos de destino son entradas de libreta de direcciones en lugar de, por ejemplo, carpetas, llame al método IAddrBook::OpenEntry o IAddrBook::CompareEntryIDs . IAddrBook::OpenEntry abre el contenedor raíz de la libreta de direcciones cuando se especifica NULL como objeto de destino. Este enfoque permite el acceso a cualquier objeto de libreta de direcciones y es más rápido que usar IMAPISession, pero más lento que usar IMAPIContainer.
Si el identificador de entrada que se usa es un identificador de entrada a corto plazo o si sabe que los objetos de destino pertenecen a un contenedor o carpeta de libreta de direcciones determinado, llame al método IMAPIContainer::OpenEntry . Este enfoque produce el rendimiento más rápido, pero permite el acceso solo a los objetos de un contenedor o carpeta específico.