Есть небольшая аппликуха, собираемая на MSVC 6.0 и MSVC 2005. Соответственно, версии ATL 3.0 и 8.0.
Аппликуха дёргается с помощью COM из основного приложения и при старте вешает глобальный хук на кнопку.
Собсно проблема следующая. Собранный на ATL 8.0 вариант работает некорректно, т.е. _Module.Lock и Module.Unlock вызываются не в тех местах
(Lock при вызове LoadLibrary — подгрузка ресурсной либы, Unlock при вызове MAPILogoff — аппликуха пользует MAPI при нажатии на хукнутую кнопку). Как результат, приложение тихо завершается при первом же нажатии на кнопку (Lock/Unlock вызывают AfxOleLockApp/AfxOleUnlockApp). Для ATL 3.0 всё работает нормально — вызовы Lock и Unlock происходят при работе с COM объектом.
Собственно проблема — куда копать чтобы это поправить?
P.S: в ATL не разбираюсь, копание исходников результатов не дало.
Сам себе и швец, и жнец, и на дуде игрец...
Сам себе и отвечу. Вылезла ещё целая пачка проблем с крайне странным поведением.
Вердикт — переписать с нуля. Тема закрыта.