Initialisieren des Transportanbieters
Gilt für: Outlook 2013 | Outlook 2016
Die Transport-Spooler-Schnittstelle definiert Aufrufe, die der MAPI-Spooler an einen Transportanbieter sendet. Transportanbieter implementieren diese Routinen in einer Dynamic Link Library (DLL). Der erste direkte Einstiegspunkt in die DLL, die vom MAPI-Spooler verwendet wird, muss die Initialisierungsfunktion des Transportanbieters XPProviderInit sein.
MAPI verwendet die Routine GetProcAddress , um die Adresse der Initialisierungsroutine des Dienstanbieters abzurufen, und ruft dann diese Routine auf. Der Name der Initialisierungsroutine lautet XPProviderInit für Transportanbieter. Dies unterscheidet sich bei anderen Typen von MAPI-Dienstanbietern, sodass eine DLL eine beliebige Kombination von Dienstanbietertypen, aber nur einen Dienstanbieter eines bestimmten Typs enthalten kann. Ein Dienstanbieter eines bestimmten Typs kann jedoch mehrere Dienste seines Typs implementieren. Beispielsweise kann ein Transportanbieter Nachrichtentransportfunktionen für mehrere Nachrichtendienste implementieren.
Die Headerdatei mapispi.h verfügt über eine Typdefinition für den Funktionsprototyp der Initialisierungsfunktion des Transportanbieters und einen vordefinierten Prozedurnamen dafür. Indem Sie die Initialisierungsroutinen in Ihren C- und C++-Dateien mit denselben Namen benennen, die von GetProcAddress verwendet werden, und indem Sie eine einfache Exportdeklaration in Ihrer DLL.DEF-Datei verwenden, erhalten Sie automatisch eine Typüberprüfung der Parameter in Ihrer Initialisierungsroutine. Beispiele finden Sie im Beispielquellcode des Transportanbieters. Weitere Informationen finden Sie unter Beispiel für Transportanbieter.
Wenn der Initialisierungsaufruf eines Dienstanbieters erfolgreich ist, aber eine Dienstanbieterschnittstellenversionsnummer zurückgibt, die zu klein für die MAPI ist, ruft MAPI sofort die Release-Methode des Dienstanbieterobjekts auf und fährt fort, als wäre der Initialisierungsaufruf mit MAPI_E_VERSION fehlgeschlagen. Auf diese Weise definieren MAPI und der Dienstanbieter gemeinsam den Bereich der Schnittstellenversionsnummern des Dienstanbieters, den sie verarbeiten können. Wenn nichts übereinstimmt, schlägt das Laden des Dienstanbieters mit einem MAPI_E_VERSION Rückgabewert fehl.
Der letzte Schritt für den MAPI-Spooler beim Zugriff auf Dienstanbieterressourcen besteht darin, sich beim Transportanbieter anzumelden. Der MAPI-Spooler ruft die IXPProvider::TransportLogon-Methode des IXPProvider : IUnknown-Objekts auf, das von XPProviderInit zurückgegeben wird. Dies ist der Aufruf, bei dem Anmeldeinformationen aktiviert sind, sofern sie verwendet werden, und Dialogfelder können zugelassen werden.
Wenn ein Prozess eine zweite Transportsitzung für denselben Transportanbieter und dieselbe MAPI-Sitzung öffnet, sollte die Transportanbieter-DLL kein zweites Anbieterobjekt erstellen. Das erste Anbieterobjekt sollte verwendet werden, um sich bei der zweiten Transportsitzung anzumelden. Ein Transportanbieter sollte so programmiert werden, dass er mehrere Transportsitzungen in einem einzelnen Anbieterobjekt unterstützt. Ein zweites Anbieterobjekt sollte nur erstellt werden, wenn unterschiedliche MAPI-Sitzungen im gleichen Prozess verwendet werden.