Носколько вопросов о 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)