Outlook kraschar när du anropar IMAPIProp::GetProps på en inaktuell MAPIOBJECT
Ursprungligt KB-nummer: 4131515
Symptom
Tänk dig följande situation:
- Du skapar ett e-postmeddelande med hjälp av Microsoft Outlook.
- Du bifogar ett befintligt e-postmeddelande till det nya meddelandet.
- Du öppnar det bifogade meddelandet för visning.
- Du använder händelsen NewInspector för att hämta en referens till den aktuella Outlook.MailItem som motsvarar den e-postbilaga som du precis öppnade.
- Från MailItem-objektet får du en referens till det underliggande MAPI-objektet genom att läsa MAPIOBJECT-egenskapen i C++.
- Du sparar meddelandet eller så initierar Outlook en autosparningsåtgärd.
- Du startar metoden GetProps på en IMAPIProp-referens från referensen
MAPIOBJECT
som du fick via NewInspector-händelsen.
I det här scenariot kraschar Outlook.
Orsak
MAPI-objektet som du hämtade från MAPIOBJECT
egenskapen har blivit inaktuellt och kan inte längre användas. Du bör inte återanvända egenskapen om motsvarande Outlook-objekt har ändrats.
Åtgärd
Varje gång du måste köra en åtgärd på MAPI-objektet som mappar till ett Outlook- eller Outlook-objektmodellobjekt bör du få en ny referens till det underliggande MAPI-objektet. Kör sedan alla MAPI-åtgärder på den nya referensen i stället för på en inaktuell referens som kanske inte längre är giltig. Om du använder en inaktuell referens kan det orsaka oväntat beteende och krascha Outlook-klienten.
Mer information
Vi rekommenderar att du inte håller fast vid referenser MAPIOBJECT
som du har fått via Outlook-objektmodellen längre än nödvändigt. Det beror på att det underliggande objektet ofta kan komma att ändras. Om du använder ett inaktuellt underliggande objekt kan det orsaka oväntade fel.
Detta gäller för alla scenarier där du kan behöva hämta en MAPIOBJECT
referens via Outlook-objektmodellen, inte bara det scenario som nämns i avsnittet "Symptom".
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för