Потому что речь о DLL, и она есть вызываемая сторона.
Мы говорим на разных языках. Я имел ввиду вполне конкретную вещь: сохранение значения hModule внутри dll во имя избежания каких-то левых вызовов
GetModuleHandle. Ни больше и не меньше, пример с пушпопом демонстрировал возможность сохранения некоторого указателя, но не в случае длл, а в случае сверхкомпактного кода, к коему длл никак относиться не может по определению. То что ты это знаешь мне известно как никому. Целью было доказать, что вызывающая сторона может сохранить что угодно, если захочет.
Интересует код, совместимый с 9x.
Хех. Ну алгоритм Вам теперь известен (формат PE везде одинаков), дерзайте.
А Total Commander "видеть в живую" не доводилось?
Ну давайте еще вспомним far, который до поры до времени можно было запускать и в досе, и в винде. А почему бы не подумать о написании настолько кросплатформенного приложения, которое бы и под линуксом заработало без перекомпиляции? На нобелевскую премию, конечно, не вытянем, но признание получим.
Ну а если серьезно, то это ваше личное право писать такой софт, я же объективных причин не вижу. Ни одной.
А имеет ли это хоть какое-то смысл "в мирных целях"?
Винда гарантрирует стабильность при соблюдении некоторых правил. Правила эти описаны и документированы. И тонны библиотек сторонних разработчиков будут опираться на то, что все должно работать так, как описано. Вы же эти правила нарушите, если не уведомите систему о загрузке новой длл. Если длл Ваша - проблем нет, скорректируйте ее код надлежащим образом. Если не ваша - убедитесь что такой подход не нанесет вреда. Если случай общий - увы, обработкой импорта вам не добиться стабильности. Я, надеюсь, теперь ясно изъяснился по поводу "мирных целей"?
Это, безусловно, нужно. Но разве это реализуется через сообщения DllMain?
Это реализуется занесением информации о подгруженном модуле в
PEB_LDR_DATA. Прочитайте же наконец то, что я тут целый день пишу. Для кого, спрашивается?
А я все практикую лечение травами...