Partager via


IMAPISupport::MakeInvalid

S’applique à : Outlook 2013 | Outlook 2016

Marque un objet comme inutilisable.

HRESULT MakeInvalid(
ULONG ulFlags,
LPVOID lpObject,
ULONG ulRefCount,
ULONG cMethods
);

Paramètres

ulFlags

Réservés au; doit être égal à zéro.

lpObject

[in] Pointeur vers l’objet à invalider. L’interface de l’objet doit être dérivée de IUnknown.

ulRefCount

[in] Nombre de références actuelles de l’objet.

cMethods

[in] Nombre de méthodes dans la vtable de l’objet.

Valeur renvoyée

S_OK

L’objet a été correctement marqué comme inutilisable.

Remarques

La méthode IMAPISupport ::MakeInvalid est implémentée pour tous les objets de support. L’objet à invalider doit être dérivé de l’interface IUnknown ou d’une interface dérivée de IUnknown.

MakeInvalid marque un objet comme inutilisable en remplaçant la vtable de l’objet par une vtable stub de taille similaire dans laquelle les méthodes IUnknown ::AddRef et IUnknown ::Release fonctionnent comme prévu. Toutefois, toutes les autres méthodes échouent et retournent la valeur MAPI_E_INVALID_OBJECT.

Remarques pour les appelants

Les fournisseurs de services et les services de messagerie appellent généralement MakeInvalid au moment de l’arrêt . Toutefois, MakeInvalid peut être appelé à tout moment. Par exemple, si un client libère un objet sans libérer certains de ses sous-objets, vous pouvez appeler Immédiatement MakeInvalid pour libérer ces sous-objets.

Vous devez être propriétaire de l’objet que vous tentez d’invalider. Il doit avoir une longueur d’au moins 16 octets et avoir au moins trois méthodes dans sa vtable.

Vous pouvez appeler MakeInvalid , puis effectuer tout travail d’arrêt, tel que l’abandon des structures de données associées, qui est généralement effectué lors de la publication d’un objet. Le code pour prendre en charge l’objet n’a pas besoin d’être conservé en mémoire, car MAPI libère la mémoire en appelant MAPIFreeBuffer , puis libère l’objet. Vous pouvez libérer des ressources, appeler MakeInvalid, puis ignorer l’objet invalidé.

Voir aussi

MAPIAllocateBuffer

IMAPISupport : IUnknown