Outlook se crashe lorsque vous appelez IMAPIProp::GetProps sur un MAPIOBJECT obsolète

Numéro de la ko d’origine :   4131515

Symptômes

Prenons l’exemple du scénario suivant :

  • Vous créez un message électronique à l’aide de Microsoft Outlook.
  • Vous joignez un message électronique existant au nouveau message.
  • Vous ouvrez le message joint pour l’afficher.
  • Vous utilisez l’événement NewInspector pour obtenir une référence à l’outlook.mailItem actuel qui correspond à la pièce jointe que vous ouvrez.
  • À partir de l’objet MailItem, vous obtenez une référence à l’objet MAPI sous-jacent en lisant la propriété MAPIOBJECT en C++.
  • Vous enregistrez le message ou Outlook lance une opération d’auto-ave.
  • Vous démarrez la méthode GetProps sur une référence IMAPIProp à partir de la référence que vous avez obtenue via l’événement MAPIOBJECT NewInspector.

Dans ce scénario, Outlook se crashe.

Cause

L’objet MAPI que vous avez obtenu à partir de la propriété est devenu obsolète et MAPIOBJECT n’est plus utilisable. Vous ne devez pas réutiliser la propriété si l’élément Outlook correspondant a changé.

Résolution

Chaque fois que vous devez exécuter une opération sur l’objet MAPI qui maie un élément outlook ou modèle objet Outlook, vous devez obtenir une nouvelle référence à l’objet MAPI sous-jacent. Ensuite, exécutez toutes les opérations MAPI sur cette nouvelle référence plutôt que sur une référence obsolète qui n’est peut-être plus valide. L’utilisation d’une référence obsolète peut entraîner un comportement inattendu et entraîner le blocage du client Outlook.

Plus d’informations

Nous vous recommandons de ne pas conserver les références obtenues par le biais du modèle objet Outlook plus MAPIOBJECT longtemps que nécessaire. Cela est dû au fait que l’objet sous-jacent est fréquemment sujet à des changements. L’utilisation d’un objet sous-jacent obsolète peut provoquer des erreurs inattendues. Cela s’applique à tous les scénarios dans lesquels vous pourriez avoir à obtenir une référence via le modèle objet Outlook, pas seulement le scénario mentionné dans la section « Symptômes MAPIOBJECT ».