次の方法で共有


MAPIFreeBuffer

適用対象: Outlook 2013 | Outlook 2016

MAPIAllocateBuffer 関数または MAPIAllocateMore 関数の呼び出しで割り当てられたメモリ バッファーを解放します。

プロパティ
ヘッダー ファイル:
Mapix.h
実装元:
MAPI
呼び出し元:
クライアント アプリケーションとサービス プロバイダー
ULONG MAPIFreeBuffer(
  LPVOID lpBuffer
);

パラメーター

lpBuffer

[in]以前に割り当てられたメモリ バッファーへのポインター。 lpBuffer パラメーターに NULL が渡された場合、MAPIFreeBuffer は何も行いません。

戻り値

S_OK

呼び出しが成功し、要求されたメモリが解放されました。 MAPIFreeBuffer は、既に解放されている場所でS_OKを返すこともできます。また、MAPIAllocateBuffer と MAPIAllocate でメモリ ブロックが割り当てられていない場合もあります。

注釈

通常、クライアント アプリケーションまたはサービス プロバイダーが MAPIAllocateBuffer または MAPIAllocateMore を呼び出すと、オペレーティング システムは、複数のレベルのポインターを持つ 1 つ以上の複雑な構造体を 1 つの連続したメモリ バッファーに構築します。 MAPI 関数またはメソッドがこのような内容のバッファーを作成する場合、クライアントは後で MAPIFreeBuffer に渡すことによって、バッファーに含まれるすべての構造体を解放できますバッファーを作成した MAPI 関数によって返されるバッファーへのポインター。 サービス プロバイダーが MAPIFreeBuffer を使用してメモリ バッファーを解放するには、プロバイダーのサポート オブジェクトで返されたバッファーへのポインターを渡す必要があります。

特定のバッファーを解放するための MAPIFreeBuffer の呼び出しは、クライアントまたはプロバイダーがこのバッファーを使用して完了したらすぐに行う必要があります。 MAPI セッションの終了時に IMAPISession::Logoff メソッドを呼び出すだけでは、メモリ バッファーは自動的に解放されません。

クライアントまたはサービス プロバイダーは、MAPIFreeBuffer から正常に戻った後、lpBuffer で渡されたポインターが無効であることを前提として動作する必要があります。 ポインターが MAPIAllocateBuffer または MAPIAllocateMore または空きメモリ ブロックを介してメッセージング システムによって割り当てられていないメモリ ブロックを示す場合、 MAPIFreeBuffer の動作は未定義です。

注:

MAPIFreeBuffer に null ポインターを渡すと、MAPIFreeBuffer は NULL へのポインターを初期化し、最初にテストしなくてもクリーンアップ コードで解放できるため、アプリケーション クリーンアップ コードがより簡単で小さくなります。

関連項目

IMAPISupport::GetMemAllocRoutines