MAPI приводит к завершению ATL
От: Мишень-сан  
Дата: 29.10.09 09:40
Оценка:
Доброго времени суток!

Столкнулся с совершенно мистическим поведением.

Есть EXE COM модуль, использующий ATL и MFC.
Занимается отправкой скриншотов на принтер и по почте.
При отправке скриншота по почте в виде приложения к письму используется Simple MAPI (mapi32.dll), дабы отправка происходила через имеющуюся почтовую учётку.
Письмо отправляется без проблем, но при использовании MAPILogoff для закрытия сессии по невыясненной причине происходит вызов _Module.Unlock().
_Module — глобальный экземпляр наследника CComModule. В методах Lock и Unlock вызываются AfxLockApp и AfxUnlockApp соответственно. Это ведёт к тому, что при достижении нуля в счётчике блокировок уничтожается главное окно и модуль завершается.
Собственно, неясно, почему MAPILogoff приводит к такой мистике.

Да, ещё один интересный момент. Этот модуль собирается под MSVC6.0 и MSVC2005. Изначально писался под 6.0 и соответственно ATL 3.0, в такой сборке баг не наблюдается. Зато вылазит в сборке под MSVC2005 (ATL 8.0).

MSDN молчит.
Гугл тоже.
Re: MAPI приводит к завершению ATL
От: Аноним  
Дата: 10.11.09 13:35
Оценка:
Здравствуйте, Мишень-сан,

МС>MSDN молчит.

МС>Гугл тоже.
и RSDN молчит тоже
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.