Verwalten des Arbeitsspeichers in MAPI
Gilt für: Outlook 2013 | Outlook 2016
Zu wissen, wie und wann Speicher belegt und freigegeben werden soll, ist ein wichtiger Bestandteil der Programmierung mit MAPI. MAPI bietet sowohl Funktionen als auch Makros, die Ihr Client oder Dienstanbieter verwenden kann, um den Arbeitsspeicher konsistent zu verwalten. Die drei Funktionen sind wie folgt:
Wenn Clients und Dienstanbieter diese Funktionen verwenden, wird das Problem, wer "besitzt", also einen bestimmten Speicherblock freigeben kann, beseitigt. Ein Client, der eine Dienstanbietermethode aufruft, muss keinen Puffer übergeben, der groß genug ist, um einen Rückgabewert beliebiger Größe zu enthalten. Der Dienstanbieter kann einfach die entsprechende Arbeitsspeichermenge mithilfe von MAPIAllocateBuffer und, falls erforderlich, MAPIAllocateMore zuordnen, und der Client kann sie später mithilfe von MAPIFreeBuffer unabhängig vom Dienstanbieter freigeben.
Die Speichermakros werden verwendet, um Strukturen oder Arrays von Strukturen einer bestimmten Größe zuzuordnen. Clients und Dienstanbieter sollten diese Makros verwenden, anstatt den Arbeitsspeicher manuell zuzuweisen. Wenn ein Client beispielsweise eine Namensauflösungsverarbeitung für eine Empfängerliste mit drei Einträgen ausführen muss, kann das Makro SizeADRLIST verwendet werden, um eine ADRLIST-Struktur zu erstellen, die mit der richtigen Anzahl von ADRENTRY-Membern an IAddrBook::ResolveName übergeben werden soll. Alle Arbeitsspeichermakros sind in MAPIDEFS definiert. H-Headerdatei. Diese Makros sind:
MAPI unterstützt auch die Verwendung der COM-Schnittstelle IMalloc für die Speicherverwaltung. Dienstanbieter erhalten von MAPI zum Zeitpunkt der Initialisierung einen IMalloc-Schnittstellenzeiger und können auch einen über die MAPIGetDefaultMalloc-Funktion abrufen. Der Standard Vorteil der Verwendung der IMalloc-Methoden zum Verwalten des Arbeitsspeichers über die MAPI-Funktionen besteht darin, dass mit den COM-Methoden ein vorhandener Puffer neu zugeordnet werden kann. Die MAPI-Speicherfunktionen unterstützen keine Neuzuordnung.