Share via


MAPIFreeBuffer

Hace referencia a: Outlook 2013 | Outlook 2016

Libera un búfer de memoria asignado con una llamada a la función MAPIAllocateBuffer o a la función MAPIAllocateMore .

Propiedad Valor
Archivo de encabezado:
Mapix.h
Implementado por:
MAPI
Llamado por:
Aplicaciones cliente y proveedores de servicios
ULONG MAPIFreeBuffer(
  LPVOID lpBuffer
);

Parameters

lpBuffer

[in] Puntero a un búfer de memoria asignado previamente. Si se pasa NULL en el parámetro lpBuffer , MAPIFreeBuffer no hace nada.

Valor devuelto

S_OK

La llamada se realizó correctamente y liberó la memoria solicitada. MAPIFreeBuffer también puede devolver S_OK en ubicaciones ya liberadas o si el bloque de memoria no se asigna con MAPIAllocateBuffer y MAPIAllocateMore.

Comentarios

Normalmente, cuando una aplicación cliente o un proveedor de servicios llama a MAPIAllocateBuffer o MAPIAllocateMore, el sistema operativo construye en un búfer de memoria contiguo una o varias estructuras complejas con varios niveles de punteros. Cuando una función o método MAPI crea un búfer con dicho contenido, un cliente puede liberar más adelante todas las estructuras contenidas en el búfer pasando a MAPIFreeBuffer el puntero al búfer devuelto por la función MAPI que creó el búfer. Para que un proveedor de servicios libere un búfer de memoria mediante MAPIFreeBuffer, debe pasar el puntero a ese búfer devuelto con el objeto de soporte técnico del proveedor.

La llamada a MAPIFreeBuffer para liberar un búfer determinado debe realizarse en cuanto un cliente o proveedor termine de usar este búfer. Simplemente llamar al método IMAPISession::Logoff al final de una sesión MAPI no libera automáticamente los búferes de memoria.

Un cliente o proveedor de servicios debe funcionar suponiendo que el puntero pasado en lpBuffer no es válido después de una devolución correcta de MAPIFreeBuffer. Si el puntero indica un bloque de memoria no asignado por el sistema de mensajería a través de MAPIAllocateBuffer o MAPIAllocateMore o un bloque de memoria libre, el comportamiento de MAPIFreeBuffer no está definido.

Nota:

Pasar un puntero NULL a MAPIFreeBuffer hace que el código de limpieza de la aplicación sea más sencillo y pequeño, ya que MAPIFreeBuffer puede inicializar punteros a NULL y, a continuación, liberarlos en el código de limpieza sin tener que probarlos primero.

Vea también

IMAPISupport::GetMemAllocRoutines