Freigeben über


MAPIFreeBuffer

Gilt für: Outlook 2013 | Outlook 2016

Gibt einen Speicherpuffer frei, der mit einem Aufruf der MAPIAllocateBuffer-Funktion oder der MAPIAllocateMore-Funktion zugeordnet wurde.

Eigenschaft Wert
Headerdatei
Mapix.h
Implementiert von:
MAPI
Aufgerufen von:
Clientanwendungen und Dienstanbieter
ULONG MAPIFreeBuffer(
  LPVOID lpBuffer
);

Parameter

lpBuffer

[in] Zeiger auf einen zuvor zugewiesenen Speicherpuffer. Wenn NULL im lpBuffer-Parameter übergeben wird, führt MAPIFreeBuffer keine Aktion aus.

Rückgabewert

S_OK

Der Aufruf war erfolgreich, und der angeforderte Arbeitsspeicher wurde freigegeben. MAPIFreeBuffer kann auch S_OK an bereits freigegebenen Speicherorten zurückgeben oder wenn der Speicherblock nicht mit MAPIAllocateBuffer und MAPIAllocateMore zugeordnet ist.

Hinweise

Wenn eine Clientanwendung oder ein Dienstanbieter MAPIAllocateBuffer oder MAPIAllocateMore aufruft, erstellt das Betriebssystem in der Regel in einem zusammenhängenden Speicherpuffer eine oder mehrere komplexe Strukturen mit mehreren Zeigerebenen. Wenn eine MAPI-Funktion oder -Methode einen Puffer mit solchen Inhalten erstellt, kann ein Client später alle im Puffer enthaltenen Strukturen freigeben, indem er den Zeiger auf den Puffer an MAPIFreeBuffer übergibt, der von der MAPI-Funktion zurückgegeben wird, die den Puffer erstellt hat. Damit ein Dienstanbieter einen Speicherpuffer mit MAPIFreeBuffer freigeben kann, muss er den Zeiger an diesen Puffer übergeben, der mit dem Supportobjekt des Anbieters zurückgegeben wird.

Der Aufruf von MAPIFreeBuffer zum Freigeben eines bestimmten Puffers muss erfolgen, sobald ein Client oder Anbieter mit diesem Puffer fertig ist. Durch das einfache Aufrufen der IMAPISession::Logoff-Methode am Ende einer MAPI-Sitzung werden speicherpuffer nicht automatisch freigegeben.

Ein Client oder Dienstanbieter sollte davon ausgehen, dass der in lpBuffer übergebene Zeiger nach einer erfolgreichen Rückgabe von MAPIFreeBuffer ungültig ist. Wenn der Zeiger entweder einen Speicherblock angibt, der nicht vom Messagingsystem über MAPIAllocateBuffer oder MAPIAllocateMore oder einen freien Speicherblock zugewiesen wurde, ist das Verhalten von MAPIFreeBuffer nicht definiert.

Hinweis

Durch die Übergabe eines NULL-Zeigers an MAPIFreeBuffer wird der Anwendungsbereinigungscode einfacher und kleiner, da MAPIFreeBuffer Zeiger auf NULL initialisieren und sie dann im Bereinigungscode freigeben kann, ohne sie zuerst testen zu müssen.

Siehe auch

IMAPISupport::GetMemAllocRoutines