MAPIFreeBuffer
S’applique à : Outlook 2013 | Outlook 2016
Libère une mémoire tampon allouée avec un appel à la fonction MAPIAllocateBuffer ou à la fonction MAPIAllocateMore .
Propriété | Valeur |
---|---|
Fichier d’en-tête : |
Mapix.h |
Implémenté par : |
MAPI |
Appelé par : |
Applications clientes et fournisseurs de services |
ULONG MAPIFreeBuffer(
LPVOID lpBuffer
);
Paramètres
lpBuffer
[in] Pointeur vers une mémoire tampon précédemment allouée. Si NULL est passé dans le paramètre lpBuffer , MAPIFreeBuffer ne fait rien.
Valeur renvoyée
S_OK
L’appel a réussi et libéré la mémoire demandée. MAPIFreeBuffer peut également retourner S_OK sur des emplacements déjà libérés ou si le bloc de mémoire n’est pas alloué avec MAPIAllocateBuffer et MAPIAllocateMore.
Remarques
En règle générale, lorsqu’une application cliente ou un fournisseur de services appelle MAPIAllocateBuffer ou MAPIAllocateMore, le système d’exploitation construit dans une mémoire tampon contiguë une ou plusieurs structures complexes avec plusieurs niveaux de pointeurs. Lorsqu’une fonction ou une méthode MAPI crée une mémoire tampon avec ce contenu, un client peut plus tard libérer toutes les structures contenues dans la mémoire tampon en passant à MAPIFreeBuffer le pointeur vers la mémoire tampon retournée par la fonction MAPI qui a créé la mémoire tampon. Pour qu’un fournisseur de services libère une mémoire tampon à l’aide de MAPIFreeBuffer, il doit passer le pointeur vers cette mémoire tampon retournée avec l’objet de prise en charge du fournisseur.
L’appel à MAPIFreeBuffer pour libérer une mémoire tampon particulière doit être effectué dès qu’un client ou un fournisseur a fini d’utiliser cette mémoire tampon. Le simple fait d’appeler la méthode IMAPISession ::Logoff à la fin d’une session MAPI ne libère pas automatiquement les mémoires tampons.
Un client ou un fournisseur de services doit partir du principe que le pointeur passé dans lpBuffer n’est pas valide après un retour réussi de MAPIFreeBuffer. Si le pointeur indique un bloc de mémoire non alloué par le système de messagerie via MAPIAllocateBuffer ou MAPIAllocateMore ou un bloc de mémoire libre, le comportement de MAPIFreeBuffer n’est pas défini.
Remarque
Le passage d’un pointeur Null à MAPIFreeBuffer simplifie et réduit le code de nettoyage de l’application, car MAPIFreeBuffer peut initialiser les pointeurs sur NULL, puis les libérer dans le code de nettoyage sans avoir à les tester au préalable.