Partager via


Gestion de la mémoire dans MAPI

S’applique à : Outlook 2013 | Outlook 2016

Savoir comment et quand allouer et libérer de la mémoire est une partie importante de la programmation avec MAPI. MAPI fournit des fonctions et des macros que votre client ou fournisseur de services peut utiliser pour gérer la mémoire de manière cohérente. Les trois fonctions sont les suivantes :

MAPIAllocateBuffer

MAPIAllocateMore

MAPIFreeBuffer

Lorsque les clients et les fournisseurs de services utilisent ces fonctions, la question de savoir qui « possède » (autrement dit, sait comment libérer) un bloc de mémoire particulier est éliminé. Un client appelant une méthode de fournisseur de services n’a pas besoin de passer une mémoire tampon suffisamment grande pour contenir une valeur de retour de n’importe quelle taille. Le fournisseur de services peut simplement allouer la quantité de mémoire appropriée à l’aide de MAPIAllocateBuffer et, si nécessaire, MAPIAllocateMore, et le client peut la publier ultérieurement à volonté à l’aide de MAPIFreeBuffer, indépendamment du fournisseur de services.

Les macros de mémoire sont utilisées pour allouer des structures ou des tableaux de structures d’une taille spécifique. Les clients et les fournisseurs de services doivent utiliser ces macros plutôt que d’allouer la mémoire manuellement. Par exemple, si un client doit effectuer un traitement de résolution de noms sur une liste de destinataires avec trois entrées, la macro SizedADRLIST peut être utilisée pour créer une structure ADRLIST à transmettre à IAddrBook ::ResolveName avec le nombre correct de membres ADRENTRY . Toutes les macros de mémoire sont définies dans MAPIDEFS. Fichier d’en-tête H. Ces macros sont les suivantes :

Macro Macro
SizedADRLIST
SizedDtblPage
SizedDtblButton
SizedENTRYID
SizedDtblCheckBox
SizedSPropProblemArray
SizedDtblComboBox
SizedSPropTagArray
SizedDtblEdit
SizedSRowSet
SizedDtblGroupBox
SizedSSortOrderSet
SizedDtblLabel

MAPI prend également en charge l’utilisation de l’interface COM IMalloc pour la gestion de la mémoire. Les fournisseurs de services reçoivent un pointeur d’interface IMalloc par MAPI au moment de l’initialisation et peuvent également en récupérer un via la fonction MAPIGetDefaultMalloc . L’avantage main de l’utilisation des méthodes IMalloc pour gérer la mémoire sur les fonctions MAPI est qu’avec les méthodes COM, il est possible de réallouer une mémoire tampon existante. Les fonctions de mémoire MAPI ne prennent pas en charge la réallocation.