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
Zusätzlich zur Angabe, wie Arbeitsspeicher zugewiesen und freigegeben werden soll, definiert MAPI ein Modell, um zu wissen, wann Arbeitsspeicher, der zwischen der öffentlichen Schnittstellenmethode und API-Funktionsaufrufen übergeben wird, freigegeben werden soll. Das Modell gilt nur für Arbeitsspeicher, der für Parameter zugeordnet ist, die keine Zeiger auf Schnittstellen sind, z. B. Zeichenfolgen und Zeiger auf Strukturen. Schnittstellenzeiger verwenden den über IUnknown implementierten Verweiszählmechanismus. Verwenden Sie beim internen Zuweisen und Freigeben von Nicht-MAPI-bezogenem Speicher innerhalb einer Clientanwendung oder eines Dienstanbieters einen beliebigen Mechanismus.
Das Modell definiert Parameter als einen von drei Typen. Dabei kann es sich um Eingabeparameter handeln, die vom Aufrufer mit Informationen festgelegt werden, die von der aufgerufenen Funktion oder Methode verwendet werden sollen, Ausgabeparameter, die von der aufgerufenen Funktion oder Methode festgelegt und an den Aufrufer zurückgegeben werden, oder Eingabe-/Ausgabeparameter, eine Kombination der beiden Typen. Ausgabeparameter sind häufig Zeiger auf Daten oder Zeiger auf Daten. Obwohl die aufgerufene Funktion für die Zuordnung der Daten für Ausgabeparameter verantwortlich ist, ordnet der Aufrufer den Speicher für den Zeiger zu.
Die Regeln zum Zuweisen und Freigeben von Arbeitsspeicher für diese Parametertypen werden in der folgenden Tabelle erläutert.
Typ | Speicherzuordnung | Arbeitsspeicherfreigabe |
---|---|---|
Input |
Der Aufrufer ist verantwortlich und kann jeden Mechanismus verwenden. | Der Aufrufer ist verantwortlich und kann jeden Mechanismus verwenden. |
Ausgabe |
Aufgerufene Funktion ist verantwortlich und muss MAPIAllocateBuffer verwenden. Weitere Informationen finden Sie unter MAPIAllocateBuffer. | Der Aufrufer ist verantwortlich und muss MAPIFreeBuffer verwenden. Weitere Informationen finden Sie unter MAPIFreeBuffer. |
Eingabe-Ausgabe |
Der Aufrufer ist für die anfängliche Zuordnung verantwortlich und die aufgerufene Funktion kann bei Bedarf mithilfe von MAPIAllocateBuffer neu zugeordnet werden. | Die aufgerufene Funktion ist für die anfängliche Freigabe verantwortlich, wenn eine Neuzuordnung erforderlich ist. Der Aufrufer muss den endgültigen Rückgabewert freigeben. |
Bei Fehlerbedingungen müssen Implementierer von Schnittstellenmethoden auf Ausgabe- und Eingabe-/Ausgabeparameter achten, da der Aufrufer in der Regel keine Möglichkeit hat, sie zu sauber. Wenn ein Fehler zurückgegeben wird, muss jeder Ausgabe- oder Eingabeausgabeparameter entweder auf dem wert verbleiben, der vom Aufrufer initialisiert wurde, oder auf einen Wert festgelegt werden, der ohne Aktion seitens des Aufrufers bereinigt werden kann. Beispielsweise muss ein Ausgabezeigerparameter von bei der void ** ppv
Eingabe unverändert bleiben oder kann auf NULL ( *ppv = NULL
) festgelegt werden.