Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Hace referencia a: Outlook 2013 | Outlook 2016
Los clientes y proveedores de servicios usan objetos MAPI llamando a los métodos en sus implementaciones de interfaz. Esta es la única manera en que se pueden usar objetos MAPI; Los métodos implementados por un objeto fuera de una interfaz MAPI no son accesibles públicamente. Dado que todas las interfaces de un objeto están relacionadas a través de la herencia, el usuario de un objeto puede llamar a métodos en la interfaz base o en una de las interfaces heredadas como si pertenezcan a la misma interfaz.
Cuando el usuario de un objeto quiere realizar una llamada a un método y ese objeto implementa varias interfaces relacionadas con la herencia, el usuario no necesita saber a qué interfaz pertenece el método. El usuario puede llamar a cualquiera de los métodos en cualquiera de las interfaces con un solo puntero al objeto . Por ejemplo, en la ilustración siguiente se muestra cómo una aplicación cliente usa un objeto folder. Los objetos Folder implementan la interfaz IMAPIFolder : IMAPIContainer , que hereda de IUnknown indirectamente a través de IMAPIProp: IUnknown e IMAPIContainer : IMAPIProp. Un cliente puede llamar a uno de los métodos IMAPIProp , como IMAPIProp::GetProps, y a uno de los métodos IMAPIFolder : IMAPIContainer , como IMAPIFolder::CreateMessage, de la misma manera con el mismo puntero de objeto. Un cliente no es consciente o afectado por el hecho de que estas llamadas pertenecen a interfaces diferentes.
Uso de cliente de un objeto de carpeta
Estas llamadas se traducen en código de forma diferente en función de si el cliente que realiza las llamadas está escrito en C o C++. Antes de que se pueda realizar cualquier llamada a un método, se debe recuperar un puntero a la implementación de la interfaz. Los punteros de interfaz se pueden obtener de las siguientes maneras:
Llamar a un método en un objeto diferente.
Llamar a una función de API.
Llamar al método IUnknown::QueryInterface en el objeto de destino.
MAPI proporciona varios métodos y funciones de API que devuelven punteros a las implementaciones de interfaz. Por ejemplo, los clientes pueden llamar al método IMAPISession::GetMsgStoresTable para recuperar un puntero a un objeto de tabla que proporciona acceso a la información del proveedor del almacén de mensajes a través de la interfaz IMAPITable : IUnknown . Los proveedores de servicios pueden llamar a la función de API CreateTable para recuperar un puntero a un objeto de datos de tabla. Cuando no hay ninguna función o método disponible y los clientes o proveedores de servicios ya tienen un puntero a un objeto, pueden llamar al método QueryInterface del objeto para recuperar un puntero a otra de las implementaciones de interfaz del objeto.