Arrêt d’un fournisseur de magasin de messages
S’applique à : Outlook 2013 | Outlook 2016
Si votre fournisseur est un fournisseur de magasin de messages, il peut être arrêté de l’une des manières suivantes :
Quand un client ou le spouleur MAPI appelle IMsgStore ::StoreLogoff. L’arrêt d’un fournisseur de magasin de messages avec StoreLogoff entraîne l’arrêt de manière ordonnée et contrôlée.
Lorsqu’un client appelle IMAPISession ::Logoff.
Votre implémentation de IMsgStore ::StoreLogoff doit commencer par appeler IMAPISupport ::StoreLogoffTransports pour informer MAPI qu’il est en cours d’arrêt, en indiquant que tous les fournisseurs de transport associés doivent être déconnectés. Lorsque IMsgStore ::StoreLogoff est retourné, son appelant appelle la méthode IUnknown ::Release de votre magasin de messages. Implémentez cette méthode Release en appelant la méthode IUnknown ::Release de l’objet de support.
MAPI effectue les tâches suivantes dans son implémentation de IUnknown ::Release pour les magasins de messages :
Supprime toutes les structures MAPIUID inscrites par le fournisseur de magasin de messages.
Supprime la ligne du fournisseur de magasin de messages de la table status.
Appelle IMSLogon ::Logoff pour libérer tous les objets, sous-objets et status objets ouverts.
Appelle IUnknown ::Release pour libérer l’objet d’ouverture de session du fournisseur de magasin de messages.
Certains clients peuvent omettre l’appel à IMsgStore ::StoreLogoff, en lançant l’arrêt de votre fournisseur de magasin de messages avec l’appel à la méthode IUnknown ::Release de la banque de messages. Dans ces circonstances, un arrêt sans appel à StoreLogoff est moins ordonné et contrôlé. Écrivez la méthode Release de votre magasin de messages pour gérer cette possibilité et suivez si un appel à IMAPISupport ::StoreLogoffTransports s’est produit ou non. StoreLogoffTransports doit être appelé une seule fois pendant le processus d’arrêt. Si vous détectez dans votre méthode Release que StoreLogoffTransports n’a pas encore été appelé, appelez-le avec l’indicateur LOGOFF_ABORT.