Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: Outlook 2013 | Outlook 2016
MAPI stellt ein Unterstützungsobjekt bereit, ein Objekt, das die SCHNITTSTELLE IMAPISupport : IUnknown implementiert, für alle Dienstanbieter während der Anmeldung und für alle Nachrichtendienste während der Konfiguration.
Auf Unterstützungsobjekte kann von Clients nicht zugegriffen werden. sie werden von MAPI implementiert und nur von Dienstanbietern aufgerufen. Die IMAPISupport-Schnittstelle wird in der Headerdatei Mapispi.h angegeben. Der Bezeichner ist IID_IMAPISup und der Zeigertyp LPMAPISUP. Von Unterstützungsobjekten werden keine MAPI-Eigenschaften verfügbar gemacht.
Ein Anbieter kann ein oder mehrere Unterstützungsobjekte erhalten, je nachdem, wie oft MAPI den Anbieter protokolliert oder wie oft die Nachrichtendiensteingabefunktion des Anbieters aufgerufen wird. In der Regel wird ein Anbieter mindestens einmal pro Sitzung angemeldet. Adressbuch- und Transportanbieter werden jedes Mal angemeldet, wenn ein Client eine Sitzung mit einem Profileintrag startet, der sie anfordert. Nachrichtenspeicheranbieter werden jedes Mal angemeldet, wenn ein Client die IMAPISession::OpenMsgStore-Methode aufruft.
Bei mehreren Anmeldungen in einer Sitzung können Sie entweder jedes Supportobjekt separat beibehalten und verwenden oder nur das erste beibehalten und verwenden, wobei jedes nachfolgende Unterstützungsobjekt verworfen wird. Um ein Unterstützungsobjekt beizubehalten, rufen Sie die zugehörige IUnknown::AddRef-Methode auf. Das Aufrufen von AddRef für ein Supportobjekt, das Sie während einer Sitzung beibehalten möchten, ist äußerst wichtig. Wenn der Aufruf nicht erfolgt, gibt MAPI das Unterstützungsobjekt frei und gibt seinen Arbeitsspeicher frei.
Der Zweck des Supportobjekts besteht darin, Implementierungen für eine ziemlich große Anzahl von Methoden bereitzustellen, die häufig von den Anbietern verwendet werden. Jedes Unterstützungsobjekt enthält auch Kontextdaten, die für seine eigene instance spezifisch sind, z. B. die Sitzung, in der der Anbieter ausgeführt wird, den vom Anbieter verwendeten Profilabschnitt und Fehlerinformationen für die Sitzung.
Es gibt vier verschiedene Typen von Supportobjekten: einen für jeden Hauptanbietertyp (Adressbuch, Nachrichtenspeicher und Transport) und einen für die Konfigurationsunterstützung.
MAPI passt jedes Unterstützungsobjekt an, indem Implementierungen von Methoden eingeschlossen werden, die für seine Verwendung relevant sind. Implementierungen einiger Methoden, z. B. IMAPISupport::OpenProfileSection, sind in allen Unterstützungsobjekten enthalten. Implementierungen anderer Methoden, z. B. IMAPISupport::SpoolerNotify, gelten nur für bestimmte Unterstützungsobjekte. Nur Nachrichtenspeicher- und Transportanbieter können diese Methode verwenden. Wenn ein Adressbuchanbieter oder ein Nachrichtendienst versucht, ihn aufzurufen, gibt MAPI MAPI_E_NO_SUPPORT zurück.
Unterstützungsobjekte können verwendet werden, um viele Aufgaben auszuführen, z. B. die folgenden:
Zugreifen auf einen Profilabschnitt.
Kopieren von Ordnern oder Nachrichten. Weitere Informationen finden Sie unter Kopieren oder Verschieben einer Nachricht oder eines Ordners.
Zugreifen auf Objekte, die zu anderen Anbietern gehören. Weitere Informationen finden Sie unter Unterstützen des Objektzugriffs und -vergleichs.
Behandeln von Ereignisbenachrichtigungen. Weitere Informationen finden Sie unter Unterstützen von Ereignisbenachrichtigungen.
Zuweisung und Freigabe von Arbeitsspeicher.
Abrufen eines eindeutigen Bezeichners.
Ungültige Objekte.
Behandeln von Fehlern.
Registrieren von Nachrichten-Präprozessoren.
Vorbereiten von Nachrichtenübermittlungsberichten.
Zum Zeitpunkt der Anmeldung ruft MAPI die Anmeldemethode des Anbieterobjekts jedes Dienstanbieters auf. Für Adressbuchanbieter ruft MAPI IABProvider::Logon auf. Für Nachrichtenspeicheranbieter ruft DIE MAPI IMSProvider::Logon auf. Für Transportanbieter ruft MAPI IXPProvider::TransportLogon auf. MAPI übergibt einen Zeiger auf das entsprechende Unterstützungsobjekt in einem der Parameter an diese Methode. Die Anmeldemethode instanziiert wiederum ein Anmeldeobjekt und übergibt den Zeiger für das Unterstützungsobjekt. Das Anmeldeobjekt ruft die IUnknown::AddRef-Methode des Unterstützungsobjekts auf, um es bei Bedarf beizubehalten. Weitere Informationen zum Anmeldevorgang für Dienstanbieter finden Sie unter Starten eines Dienstanbieters.
Wenn sich ein Client abmeldet, ruft MAPI die Abmeldemethode des Anmeldeobjekts auf. Die Abmeldungsmethode ruft die IUnknown::Release-Methode des Supportobjekts auf, um anzugeben, dass der Anbieter keine der Supportmethoden mehr aufrufen möchte. Wie bei der Anmeldung weisen die Abmeldemethoden leicht unterschiedliche Namen auf. Die Schnittstellen IABLogon und IMSLogon verfügen über Logoff-Methoden . Die IXPLogon-Schnittstelle verfügt über eine TransportLogoff-Methode .
Nachrichtendiensteinstiegspunktfunktionen werden aufgerufen, wenn ein Anmeldeversuch mit dem Fehler MAPI_E_UNCONFIGURED fehlschlägt oder wenn ein Client eine Konfigurationsanforderung initiiert. MAPI instanziiert ein Konfigurationsunterstützungsobjekt und ruft die Einstiegspunktfunktion des Nachrichtendiensts für den nicht konfigurierten Anbieter oder den Anbieter auf, dessen Konfiguration sich gerade ändert. Im Gegensatz zu den anderen Unterstützungsobjekten sind Konfigurationsunterstützungsobjekte nur gültig, bis die Einstiegspunktfunktion zurückgegeben wird. Nachrichtendienste rufen die AddRef-Methoden dieser Objekte nicht auf, um sie beizubehalten.
In der Regel führt MAPI Aufrufe an die Einstiegspunktfunktion eines Anbieters für den Nachrichtendienst durch, aber manchmal wird ein Anbieter aufgefordert, den Aufruf zu tätigen. Dies kann auftreten, wenn ein Client die IMAPIStatus::SettingsDialog-Methode eines Anbieters aufruft, um den Anbieter aufzufordern, sein Konfigurationseigenschaftenblatt anzuzeigen. SettingsDialog sollte IMAPISupport::GetSvcConfigSupportObj aufrufen, um ein Konfigurationsunterstützungsobjekt abzurufen, das an die Einstiegspunktfunktion des Nachrichtendiensts übergeben werden kann.
Die IMAPISupport::GetMemAllocRoutines-Methode ist verfügbar, um die Adressen der Speicherbelegungs- und -zuordnungsfunktionen zu bestimmen, ohne eine Verbindung mit MAPI herstellen zu müssen. Die Verwendung von GetMemAllocRoutines erleichtert auch die Nachverfolgung von Speicherverlusten, indem die Aufrufe der Zuordnungsfunktion mit Debugcode umgibt. Wenn Sie GetMemAllocRoutines wie empfohlen aufrufen, tun Sie dies vor dem Aufrufen der CreateIProp-Funktion , die die Adressen der Zuordnungsfunktion als Parameter erfordert.
Wenn Sie ein neues Adressbuch- oder Nachrichtenspeicherobjekt erstellen müssen, erstellen Sie einen Suchschlüssel für das Objekt in seiner PR_SEARCH_KEY (PidTagSearchKey)-Eigenschaft, und legen Sie diesen fest. Rufen Sie IMAPISupport::NewUID auf, um einen eindeutigen Bezeichner für die Erstellung eines Suchschlüssels zu erhalten. Verwenden Sie keine eigene hartcodierte MAPIUID. Die MAPIUID eines Anbieters sollte nur für Eintragsbezeichner verwendet werden. Weitere Informationen zum Erstellen von Suchschlüsseln finden Sie unter MAPI-Datensatz und Suchschlüssel.
Eine Clientanwendung kann manchmal ein Objekt freigeben, ohne eines oder mehrere zugehörige Objekte freizugeben. In einem solchen Fall muss ein Anbieter möglicherweise ein nicht freigegebenes Objekt unbrauchbar machen. Dazu gibt der Anbieter alle ressourcen frei, die mit dem -Objekt verbunden sind, und ruft dann IMAPISupport::MakeInvalid auf, um die VTable des Objekts für ungültig zu erklären. MakeInvalid ersetzt die IUnknown-Methoden der vtable (QueryInterface, AddRef und Release) durch MAPI-Standardimplementierungen und bewirkt, dass alle anderen Methoden MAPI_E_INVALID_OBJECT zurückgeben. MakeInvalid gibt auch den gesamten Arbeitsspeicher des Objekts außer der vtable frei.