Outlook krasjer når du ringer IMAPIProp::GetProps på en foreldet MAPIOBJECT

Opprinnelig KB-nummer:   4131515

Symptomer

Vurder følgende scenario:

  • Du oppretter en e-postmelding ved hjelp av Microsoft Outlook.
  • Du legger ved en eksisterende e-postmelding i den nye meldingen.
  • Du åpner den vedlagte meldingen for visning.
  • Du bruker NewInspector-hendelsen til å få en referanse til gjeldende Outlook.MailItem som tilsvarer e-postvedlegget du nettopp åpnet.
  • Fra MailItem-objektet får du en referanse til det underliggende MAPI-objektet ved å lese MAPIOBJECT-egenskapen i C++.
  • Du lagrer meldingen, eller Outlook starter en automatisk lagring-operasjon.
  • Du starter GetProps-metoden på en IMAPIProp-referanse fra referansen du hentet MAPIOBJECT gjennom NewInspector-hendelsen.

I dette scenarioet krasjer Outlook.

Årsak

MAPI-objektet du fikk fra MAPIOBJECT egenskapen, er foreldet og kan ikke lenger brukes. Du bør ikke bruke egenskapen på nytt hvis det tilsvarende Outlook-elementet er endret.

Løsning

Hver gang du må kjøre en operasjon på MAPI-objektet som tilordnes til et Outlook- eller Outlook-objektmodellelement, bør du få en ny referanse til det underliggende MAPI-objektet. Kjør deretter eventuelle MAPI-operasjoner på den nye referansen i stedet for på en foreldet referanse som kanskje ikke lenger er gyldig. Bruk av en foreldet referanse kan føre til uventet virkemåte og krasje Outlook-klienten.

Mer informasjon

Vi anbefaler at du ikke holder på referanser som du har hentet gjennom MAPIOBJECT Outlook-objektmodellen lenger enn nødvendig. Dette er fordi det underliggende objektet ofte kan endres. Bruk av et foreldet underliggende objekt kan føre til uventede feil. Dette gjelder for alle scenarier der du kanskje må få en referanse gjennom Outlook-objektmodellen, ikke bare scenarioet som er nevnt i Delen MAPIOBJECT Symptomer.