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 和 MAPIAllocateMore 分配。
备注
通常,当客户端应用程序或服务提供程序调用 MAPIAllocateBuffer 或 MAPIAllocateMore 时,操作系统在一个连续内存缓冲区中构造一个或多个具有多个级别的指针的复杂结构。 当 MAPI 函数或方法创建包含此类内容的缓冲区时,客户端稍后可以通过将指向创建缓冲区的 MAPI 函数返回的缓冲区的指针传递给 MAPIFreeBuffer 来释放缓冲区中包含的所有结构。 若要使服务提供程序使用 MAPIFreeBuffer 释放内存缓冲区,它必须传递指向使用提供程序的支持对象返回的该缓冲区的指针。
必须在客户端或提供程序使用此缓冲区完成之后立即调用 MAPIFreeBuffer 以释放特定缓冲区。 仅仅在 MAPI 会话结束时调用 IMAPISession::Logoff 方法不会自动释放内存缓冲区。
客户端或服务提供程序应假定在从 MAPIFreeBuffer 成功返回后,在 lpBuffer 中传递的指针无效。 如果指针指示消息传送系统未通过 MAPIAllocateBuffer 或 MAPIAllocateMore 分配的内存块或可用内存块,则 MAPIFreeBuffer 的行为未定义。
注意
将空指针传递给 MAPIFreeBuffer 可使应用程序清理代码更简单、更小,因为 MAPIFreeBuffer 可以初始化指向 NULL 的指针,然后在清理代码中释放这些指针,而无需先对其进行测试。