Носколько вопросов о Win32
- From
- Vitaly Ladygin (2:5020/146.23)
- To
- Boris Rudakov ()
- Date
- 1996-06-22T01:30Z
- Area
- SU.WINDOWS.PROG
Hello Boris!
Пятница Июнь 21 1996, письмо Boris Rudakov к Vitaly Ladygin:
BR> Ну, вопервых, познавательные мотивы, конечно, со счетов сбрасывать
BR> нельзя :)
Так смотри что генератор сделал и познавай.....
BR> Их авторы
BR> пытаются охватить максимально широкую область применения (я не
BR> исключение:), но это привносит а) ряд ограничений (!)
Честно говоря, они настолько незначительны в данном случае....
BR> и обратил внимание на
BR> изрядное число проделываемых действий, направленных ТОЛЬКО НА ТО, ЧТОБЫ
BR> ЭТО все вообще РАБОТАЛО.
Конкретнее, пожалуйста. Что тебе не нравится?
VL>> Важно. hInstance уникален только в пределах одного процесса. В разных
VL>> процессах один и тот же модуль может иметь разный hInstance и разные
VL>> модули могут иметь совпадающий. Так что для различения _процессов_
VL>> hInstance использовать нельзя.
BR> Позволь несогласиться :)
BR> И HTASK и HINSTANCE, взятые из Win16 отражения,
Это две большие разницы - hInstance в 16 и 32-х разрядах. Я имел ввиду 32-х разрядный hInstance.
BR> Тем более, что узнать HInstance текущего Win16 приложения так
BR> же легко, как и его HTASK:
BR> HINSTANCE BBRCCAPI GetCurAppInstance(void)
BR> {
BR> UINT SS_Seg;
BR> asm {MOV SS_Seg, SS}
BR> return (HINSTANCE) GlobalHandle(SS_Seg);
BR> }
Тут надо экспериментировать. Когда мы боролись с thunk-ам, выяснилось что-то страшное. Типа того, что после thunk-ового вызова в 16-ти битный код, SS указывает вообще на несуществующий сегмент, а Exception-ы связанные с этим перехватываются и соответствующим образом обрабатываются.....
Может нам это и привиделось, но было очень похоже.....
Так что привязываться к SS может оказаться не правильно. Надо проверять.
BR> Во-во-во. Вот они те самые ограничения, о которых я говорил выше.
BR> Нэ-хо-чу. Мне надо-то подгрузить Win16 DLL и солучить адрес хотя-бы
BR> одной функции, ее я вызову через CALL FWORD PTR и дело сделано.
BR> Делов-то, ненадо мне генераторов :)
Жил-был мальчик и торчал у него в пупочке винтик. Родители постоянно запрещали ему трогать этот винтик, но как-то раз, он остался один, взял отвертку и открутил этот винтик. В результате у него отвалилась задница.
Мораль - не ищи приключений на свою задницу ;-)))))))))
IMHO, всякие левые приемы стоит применять тогда и _только_ тогда, когда ясно, что документированные "стандартные" методы не работают или работают не так как надо. Это, конечно, не более чем мое IMHO.
BR> Как верно заметил по поводу этих
BR> thunk-ов Шульман, "а надо ли такие сложности ?"
Вот именно. С одной стороны, не очень понятно насколько он сам в этом разобрался (его книга про Win95 на два порядка слабее чем аналогичная про Win3.х). С другой стороны, главное ответить самому себе на вопрос "_зачем_ создавать себе дополнительные сложности?". Не спорю, иногда надо, но зачем в данном конкретном случае?
В.Ладыгин
P.S. Во вторник я уеду к командировку недели на две-три. Там у меня будет _только_ netmail по адресу 2:5020/69.9
--- GoldED 2.40+
* Origin: You can reply to lad@dials.msk.su or (2:5020/146.23)