Поделиться через


MAPIFreeBuffer

Область применения: Outlook 2013 | Outlook 2016

Освобождает буфер памяти, выделенный с помощью вызова функции MAPIAllocateBuffer или ФУНКЦИИ MAPIAllocateMore .

Свойство Значение
Файл заголовка:
Mapix.h
Реализовано в:
MAPI
Вызывающая сторона:
Клиентские приложения и поставщики услуг
ULONG MAPIFreeBuffer(
  LPVOID lpBuffer
);

Параметры

lpBuffer

[в] Указатель на ранее выделенный буфер памяти. Если в параметре lpBuffer передается значение NULL, MAPIFreeBuffer ничего не делает.

Возвращаемое значение

S_OK

Вызов выполнен успешно и освободит запрошенную память. MAPIFreeBuffer также может возвращать S_OK в уже освобожденных расположениях или если блок памяти не выделен с помощью MAPIAllocateBuffer и MAPIAllocateMore.

Замечания

Обычно, когда клиентское приложение или поставщик услуг вызывает MAPIAllocateBuffer или MAPIAllocateMore, операционная система создает в одном непрерывном буфере памяти одну или несколько сложных структур с несколькими уровнями указателей. Когда функция ИЛИ метод MAPI создает буфер с таким содержимым, клиент может впоследствии освободить все структуры, содержащиеся в буфере, передав в MAPIFreeBuffer указатель на буфер, возвращенный функцией MAPI, создающей буфер. Чтобы поставщик услуг освободил буфер памяти с помощью MAPIFreeBuffer, он должен передать указатель на этот буфер, возвращенный с объектом поддержки поставщика.

Вызов MAPIFreeBuffer для освобождения определенного буфера должен быть выполнен сразу после завершения использования этого буфера клиентом или поставщиком. Простой вызов метода IMAPISession::Logoff в конце сеанса MAPI не освобождает буферы памяти автоматически.

Клиент или поставщик услуг должен исходить из предположения, что указатель, переданный в lpBuffer , недопустим после успешного возврата из MAPIFreeBuffer. Если указатель указывает либо блок памяти, не выделенный системой обмена сообщениями с помощью MAPIAllocateBuffer или MAPIAllocateMore , либо блок свободной памяти, поведение MAPIFreeBuffer не определено.

Примечание.

Передача указателя NULL в MAPIFreeBuffer упрощает и уменьшает размер кода очистки приложения, так как MAPIFreeBuffer может инициализировать указатели на NULL, а затем освободить их в коде очистки без необходимости сначала тестировать их.

См. также

IMAPISupport::GetMemAllocRoutines