Носколько вопросов о Win32

From
Vitas Ramanchauskas (2:5061/2.53)
To
Boris Rudakov ()
Date
1996-06-22T12:14Z
Area
SU.WINDOWS.PROG
Hi!{

21 Jun 96 13:58, Boris Rudakov (2:5054/9.4) -> Vitaly Ladygin:

 BR> Впрочем, это смотря что писать, (и сколько пил накануне:):):)
я б сказал наоборот - сколько писать и что пил накануне ;)

 BR> Иногда на ровном месте так упрешься, что часа 3-4 ищешь дурацкий
 BR> баг (как с этим CLS/STS).
                     ^^^^^^^  так что было накануне ? ;)) (cld/std)

 BR> Нэ-хо-чу. Мне надо-то подгрузить Win16 DLL и солучить адрес
 BR> хотя-бы одной функции, ее я вызову через CALL FWORD PTR и дело
 BR> сделано. Делов-то, ненадо мне генераторов :) Как верно заметил по
 BR> поводу этих thunk-ов Шульман, "а надо ли такие сложности ?"

не все так просто в этом мире. когда call происходит в 32-битном сегменте, то на стек ляжет 32-битный адрес. а 16-битная dll этого не ожидает. по этой причине произойдут следующие неприятные вещи - "съедут" параметры, команда ret отработает неправильно (она бы отработала правильно если бы была б спрефиксом 66h). впрочем один экзотический вариант есть - сделать из 32-битного сегмента 16-битный call, но это получится только если адрес возврата будет лежать в пределах первых 64-килобайт. еще будет маленькая большая проблема со стеком (sp-esp), но если все это побороть то можно ручками сделать то, что проще быстрее и надежнее делается с помощью thunk'ов.

}EndOfHi!

--- The End.
 * Origin: Vitas Here (2:5061/2.53)