Fin d’une session MAPI
S’applique à : Outlook 2013 | Outlook 2016
Les clients peuvent mettre fin à leurs sessions en réponse à la demande d’un utilisateur, immédiatement ou après le traitement de tous les messages sortants, et en cas d’erreur critique. Certains clients doivent rester connectés afin que les messages sortants en attente puissent atteindre le fournisseur de transport et le système de messagerie de destination. Si un tel client envoie un message et se déconnecte immédiatement, le message peut rester dans la file d’attente sortante jusqu’à ce qu’un utilisateur se reconnecte et reste connecté suffisamment longtemps pour que le message soit transmis.
Lorsque vous devez mettre fin à votre session avec le sous-système MAPI
Annulez les inscriptions pour toutes les notifications en appelant la méthode Unadvise de chaque objet inscrit.
Libérez tous les objets ouverts en appelant leurs méthodes IUnknown ::Release . Les types d’objets ouverts peuvent inclure les récepteurs de conseil, la table status, le dossier Boîte d’envoi, une ou plusieurs banques de messages et le carnet d’adresses.
Appelez MAPIFreeBuffer pour libérer de la mémoire pour tous les identificateurs d’entrée mis en cache, tels que PR_IPM_SUBTREE_ENTRYID (PidTagIpmSubtreeEntryId).
Appelez IMAPISession ::Logoff, en définissant l’indicateur MAPI_LOGOFF_UI si vous autorisez une interface utilisateur et l’indicateur MAPI_LOGOFF_SHARED si vous êtes propriétaire de la session partagée active. La fermeture de session avertit tous les autres clients qui utilisent la session partagée active qu’ils doivent se déconnecter en envoyant une notification d’erreur.
Relâchez le pointeur de session en appelant la méthode IUnknown ::Release de la session.
Si vous avez appelé OleInitialize au démarrage de la session pour initialiser les bibliothèques OLE, annulez-les maintenant en appelant OleUninitialize. Seuls les clients qui ont appelé OleInitialize doivent appeler OleUninitialize.
Annulez l’initialisation des bibliothèques MAPI en appelant MAPIUninitialize. Si vous avez appelé OleInitialize à un moment donné, assurez-vous qu’un appel à OleUninitialize se produit avant cet appel à MAPIUninitialize. Le moment est crucial. Si l’appel à OleUninitialize suit l’appel à MAPIUninitialize, votre client risque de se terminer de manière non conforme.
Si vous avez appelé ScInitMapiUtil au démarrage de la session pour initialiser la bibliothèque de l’utilitaire MAPI, annulez son initialisation en appelant DeinitMapiUtil. Seuls les clients qui ont appelé ScInitMapiUtil doivent appeler DeinitMapiUtil.
Remarque
Tous les objets ouverts doivent être libérés avant l’appel à IMAPISession ::Logoff. Les objets qui restent ouverts après l’appel de la fermeture de session deviennent non valides ; ils ne peuvent accepter aucun appel et peuvent ne jamais être libérés. Si un appel est effectué à l’un de ces objets, attendez-vous à ce que l’appel échoue.
MAPI n’a aucun mécanisme pour supprimer les DLL pendant le processus d’arrêt de session. La DLL d’un fournisseur de services ne peut être supprimée que lorsqu’un client de configuration tel que le Panneau de configuration appelle sa fonction de point d’entrée de service de messagerie avec l’événement MSG_SERVICE_INSTALL.