IXPLogon::AddressTypes
Gilt für: Outlook 2013 | Outlook 2016
Gibt die Empfängertypen zurück, die der Transportanbieter verarbeitet.
HRESULT AddressTypes(
ULONG FAR * lpulFlags,
ULONG FAR * lpcAdrType,
LPSTR FAR * FAR * lpppszAdrTypeArray,
ULONG FAR * lpcMAPIUID,
LPUID FAR * FAR * lpppUIDArray
);
Parameter
lpulFlags
[out] Eine Bitmaske von Flags, die den Typ der zurückgegebenen Zeichenfolgen steuert. Das folgende Flag kann festgelegt werden:
MAPI_UNICODE
Die zurückgegebenen Zeichenfolgen liegen im Unicode-Format vor. Wenn das MAPI_UNICODE-Flag nicht festgelegt ist, liegen die Zeichenfolgen im ANSI-Format vor.
lpcAdrType
[out] Ein Zeiger auf die Anzahl der Einträge im Array, auf die der lpppszAdrTypeArray-Parameter verweist.
lpppszAdrTypeArray
[out] Ein Zeiger auf einen Zeiger auf ein Array von Zeichenfolgen, die Empfängertypen identifizieren.
lpcMAPIUID
[out] Ein Zeiger auf die Anzahl der Einträge im Array, auf die der lpppUIDArray-Parameter verweist.
lpppUIDArray
[out] Ein Zeiger auf einen Zeiger auf ein Array von Zeigern auf MAPIUID-Strukturen , die Empfängertypen identifizieren.
Rückgabewert
S_OK
Der Transportanbieter hat erfolgreich die Empfängertypen angegeben, die er verarbeiten kann.
Hinweise für Implementierer
Der MAPI-Spooler ruft die IXPLogon::AddressTypes-Methode unmittelbar nach der Rückgabe eines Transportanbieters von einem Aufruf der IXPProvider::TransportLogon-Methode auf, damit der Transportanbieter angeben kann, welche Empfängertypen er verarbeitet. Um dies anzugeben, sollte der Transportanbieter im lpppszAdrTypeArray-Parameter einen Zeiger auf ein Array von Zeigern auf Zeichenfolgen zurückgeben oder im lpppUIDArray-Parameter einen Zeiger auf ein Array von Zeigern auf MAPIUID-Strukturen zurückgeben oder Werte in beiden Parametern übergeben.
Diese beiden Arrays werden für unterschiedliche Identifizierungsprozesse verwendet. MAPI und der MAPI-Spooler verwenden die MAPIUID-Strukturen im lpppUIDArray-Array , um die Empfängereintragsbezeichner zu identifizieren, die direkt vom Transportanbieter oder vom Messagingsystem verarbeitet werden, mit dem der Transportanbieter eine Verbindung herstellt. Weder MAPI noch der MAPI-Spooler erweitern Adressen mithilfe von Eintragsbezeichnern, die in einer dieser MAPIUID-Strukturen enthalten sind; Diese Strukturen werden nur für die Empfängertypidentifikation verwendet.
Der MAPI-Spooler verwendet jede der Zeichenfolgen im lpppszAdrTypeArray-Parameter für einen Vergleichstest, wenn er entscheidet, welcher Transportanbieter welche Empfänger für eine ausgehende Nachricht behandeln soll. Wenn die PR_ADDRTYPE-Eigenschaft (PidTagAddressType) eines Nachrichtenempfängers genau mit einer Zeichenfolge übereinstimmt, die einen der Messagingadresstypen identifiziert, die der Transportanbieter bereitstellt, kann der Anbieter die Nachricht an diesen Empfänger übermitteln.
Wenn mehrere Transportanbieter denselben Empfängertyp verarbeiten können, wählt MAPI einen Transportanbieter basierend auf der Transportprioritätsreihenfolge aus, die im Profil der Clientanwendung angegeben ist. Um zu bestimmen, welcher Transportanbieter verwendet werden soll, überprüft der MAPI-Spooler alle vom Anbieter angegebenen MAPIUID-Strukturen in der Prioritätsreihenfolge und dann alle vom Anbieter angegebenen Adresstypwerte in der Prioritätsreihenfolge. Der erste Transportanbieter, der einen bestimmten Empfänger in dieser Überprüfung abgleicht, erhält die erste Möglichkeit, diesen Empfänger zu verarbeiten. Wenn dieser Anbieter den Empfänger nicht verarbeitet, setzt der MAPI-Spooler die Überprüfung fort, um einen Transportanbieter für jeden Empfänger zu finden, der noch nicht verarbeitet wurde. Die Überprüfung wird fortgesetzt, bis keine weiteren Übereinstimmungen gefunden werden. An diesem Punkt wird für jeden Empfänger, der nicht behandelt wurde, ein Nichtdelivery-Bericht generiert.
Wenn der Anbieter immer eine bestimmte Gruppe von Empfängertypen unterstützt, können der Adresstyp und die MAPIUID-Arrays , die der Transportanbieter übergeben hat, statisch sein. Wenn der Transportanbieter diese Arrays dynamisch erstellt, kann er Speicher mithilfe des Unterstützungsobjekts zuordnen, das zuvor im Aufruf von TransportLogon übergeben wurde, obwohl dies nicht erforderlich ist.
Der für den Adresstyp und die MAPIUID-Arrays verwendete Arbeitsspeicher sollte bis zum letzten Aufruf der IXPLogon::TransportLogoff-Methode zugeordnet bleiben. Zu diesem Zeitpunkt kann der Transportanbieter den Speicher bei Bedarf freigeben. Der Transportanbieter sollte den Inhalt dieser Arrays nicht ändern, nachdem er vom TransportLogoff-Aufruf zurückgegeben wurde.
Ein Transportanbieter, der jeden Empfängertyp verarbeiten kann, kann NULL im lpppszAdrTypeArray-Parameter zurückgeben. Transportanbieter für LAN-basierte Messagingsysteme, die einen zentralen Server verwenden, um ausgehende Nachrichten an verschiedene Fremdnachrichtensysteme zu übermitteln, tun dies in der Regel. Dieser Transportanbietertyp sollte zuletzt in der MAPI- und MAPI-Spoolerprioritätsreihenfolge der Transportanbieter im Profil installiert werden.
Ein Transportanbieter, der keine ausgehenden Nachrichten unterstützt, die basierend auf dem Adresstyp an ihn gesendet werden, sollte eine einzelne leere Zeichenfolge in lpppszAdrTypeArray zurückgeben. Wenn ein Transportanbieter keine Empfängertypen unterstützt, sollte er NULL für die MAPIUID-Struktur und eine leere Zeichenfolge für den Adresstyp übergeben. Transportanbieter dieses Typs werden am häufigsten zum Installieren eines Nachrichtenpräprozessors verwendet.