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, а затем освободить их в коде очистки без необходимости сначала тестировать их.