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 へのポインターを初期化し、最初にテストしなくてもクリーンアップ コードで解放できるため、アプリケーション クリーンアップ コードがより簡単で小さくなります。