Program Outlook ulega awarii po wywołaniu polecenia IMAPIProp::GetProps w nieaktualiznym pliku MAPIOBJECT

Oryginalny numer KB: 4131515

Symptomy

Rozpatrzmy następujący scenariusz:

  • Wiadomość e-mail można utworzyć przy użyciu programu Microsoft Outlook.
  • Do nowej wiadomości dołączasz istniejącą wiadomość e-mail.
  • Otwierasz dołączony komunikat do wyświetlania.
  • Zdarzenie NewInspector służy do uzyskiwania odwołania do bieżącego elementu Outlook.MailItem odpowiadającego właśnie otwartemu załącznikowi wiadomości e-mail.
  • Z obiektu MailItem uzyskujesz odwołanie do bazowego obiektu MAPI, odczytając właściwość MAPIOBJECT w języku C++.
  • Zapisujesz komunikat lub program Outlook inicjuje operację automatycznego zapisywania.
  • Metodę GetProps należy uruchomić w odwołaniu IMAPIProp z odwołania uzyskanego MAPIOBJECT za pośrednictwem zdarzenia NewInspector.

W tym scenariuszu program Outlook ulega awarii.

Przyczyna

Obiekt MAPI uzyskany z MAPIOBJECT właściwości stał się nieaktualny i nie jest już użyteczny. Nie należy ponownie używać właściwości, jeśli odpowiedni element programu Outlook został zmieniony.

Rozwiązanie

Za każdym razem, gdy trzeba uruchomić operację na obiekcie MAPI mapowym na element modelu obiektów programu Outlook lub Outlook, należy uzyskać nowe odwołanie do bazowego obiektu MAPI. Następnie uruchom wszystkie operacje MAPI dla tego nowego odwołania zamiast na nieaktualnych odwołaniach, które mogą już nie być prawidłowe. Użycie nieaktualnych odwołań może spowodować nieoczekiwane zachowanie i spowodować awarię klienta programu Outlook.

Więcej informacji

Zalecamy, aby nie przechowywać żadnych MAPIOBJECT odwołań uzyskanych za pośrednictwem modelu obiektów programu Outlook dłużej niż jest to konieczne. Dzieje się tak, ponieważ obiekt bazowy często może ulec zmianie. Użycie przestarzałego obiektu bazowego może spowodować nieoczekiwane błędy. Dotyczy to wszystkich scenariuszy, w których może być konieczne uzyskanie odwołania za pośrednictwem MAPIOBJECT modelu obiektów programu Outlook, a nie tylko scenariusza wymienionego w sekcji "Objawy".