Freigeben über


Verwenden von MAPI-Objekten

Gilt für: Outlook 2013 | Outlook 2016

Clients und Dienstanbieter verwenden MAPI-Objekte, indem sie die Methoden in ihren Schnittstellenimplementierungen aufrufen. Nur so können MAPI-Objekte verwendet werden. Methoden, die von einem Objekt außerhalb einer MAPI-Schnittstelle implementiert werden, sind nicht öffentlich zugänglich. Da alle Schnittstellen eines Objekts durch Vererbung miteinander verknüpft sind, kann der Benutzer eines Objekts Methoden entweder in der Basisschnittstelle oder in einer der geerbten Schnittstellen aufrufen, als ob sie zur gleichen Schnittstelle gehören.

Wenn der Benutzer eines Objekts eine Methode aufrufen möchte und dieses Objekt mehrere Schnittstellen implementiert, die durch Vererbung verbunden sind, muss der Benutzer nicht wissen, zu welcher Schnittstelle die Methode gehört. Der Benutzer kann jede der Methoden auf einer der Schnittstellen mit einem einzigen Zeiger auf das -Objekt aufrufen. Die folgende Abbildung zeigt beispielsweise, wie eine Clientanwendung ein Ordnerobjekt verwendet. Folder-Objekte implementieren die IMAPIFolder : IMAPIContainer-Schnittstelle , die von IUnknown indirekt über IMAPIProp erbt: IUnknown und IMAPIContainer : IMAPIProp. Ein Client kann eine der IMAPIProp-Methoden , z. B. IMAPIProp::GetProps, und eine der METHODEN IMAPIFolder : IMAPIContainer , z. B. IMAPIFolder::CreateMessage, auf die gleiche Weise mit demselben Objektzeiger aufrufen. Ein Client weiß nicht, dass diese Aufrufe zu verschiedenen Schnittstellen gehören oder davon betroffen sind.

Kundenverwendung eines Ordnerobjekts

Clientverwendung eines Ordnerobjekts

Diese Aufrufe werden unterschiedlich in Code übersetzt, je nachdem, ob der Client, der die Aufrufe durchführt, in C oder C++ geschrieben ist. Bevor ein Aufruf einer Methode erfolgen kann, muss ein Zeiger auf die Schnittstellenimplementierung abgerufen werden. Schnittstellenzeiger können auf folgende Weise abgerufen werden:

MAPI stellt mehrere Methoden und API-Funktionen bereit, die Zeiger auf Schnittstellenimplementierungen zurückgeben. Clients können beispielsweise die IMAPISession::GetMsgStoresTable-Methode aufrufen, um einen Zeiger auf ein Tabellenobjekt abzurufen, das zugriff auf Nachrichtenspeicheranbieterinformationen über die IMAPITable: IUnknown-Schnittstelle bietet. Dienstanbieter können die API-Funktion CreateTable aufrufen, um einen Zeiger auf ein Tabellendatenobjekt abzurufen. Wenn keine Funktion oder Methode verfügbar ist und Clients oder Dienstanbieter bereits über einen Zeiger auf ein Objekt verfügen, können sie die QueryInterface-Methode des Objekts aufrufen, um einen Zeiger auf eine andere Schnittstellenimplementierung des Objekts abzurufen.

Siehe auch