부실 MAPIOBJECT에서 IMAPIProp::GetProps를 호출하면 Outlook이 충돌합니다.
원래 KB 번호: 4131515
증상
다음과 같은 경우를 생각해볼 수 있습니다.
- Microsoft Outlook을 사용하여 전자 메일 메시지를 만듭니다.
- 기존 전자 메일 메시지를 새 메시지에 첨부합니다.
- 연결된 메시지를 열어 볼 수 있습니다.
- NewInspector 이벤트를 사용하여 방금 연 전자 메일 첨부 파일에 해당하는 현재 Outlook.MailItem에 대한 참조를 가져옵니다.
- MailItem 개체에서 C++에서 MAPIOBJECT 속성을 읽어 기본 MAPI 개체에 대한 참조를 가져옵니다.
- 메시지를 저장하거나 Outlook에서 자동 저장 작업을 시작합니다.
- NewInspector 이벤트를 통해 가져온 참조에서 IMAPIProp 참조에서
MAPIOBJECT
GetProps 메서드를 시작합니다.
이 시나리오에서는 Outlook이 충돌합니다.
원인
속성에서 MAPIOBJECT
가져온 MAPI 개체가 부실해지고 더 이상 사용할 수 없습니다. 해당 Outlook 항목이 변경된 경우 속성을 다시 사용하면 안 됩니다.
해결 방법
Outlook 또는 Outlook 개체 모델 항목에 매핑되는 MAPI 개체에서 작업을 실행해야 할 때마다 기본 MAPI 개체에 대한 새 참조를 가져와야 합니다. 그런 다음 더 이상 유효하지 않을 수 있는 부실 참조 대신 해당 새 참조에서 MAPI 작업을 실행합니다. 부실 참조를 사용하면 예기치 않은 동작이 발생하고 Outlook 클라이언트가 충돌할 수 있습니다.
추가 정보
Outlook 개체 모델을 통해 얻은 참조를 필요 이상으로 오래 보관 MAPIOBJECT
하지 않는 것이 좋습니다. 이는 기본 개체가 자주 변경될 수 있기 때문입니다. 부실한 기본 개체를 사용하면 예기치 않은 오류가 발생할 수 있습니다.
이는 "증상" 섹션에 언급된 시나리오뿐만 아니라 Outlook 개체 모델을 통해 참조를 가져와 MAPIOBJECT
야 할 수 있는 모든 시나리오에 적용됩니다.
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기