[Q]: Как осуществить 16→32-bit thunking для данных?
[A]: Maxim Elkin (2:5020/979.1)
Q> Как осуществлять передачу параметров при использовании API из Q> 16-битного кода? Пусть, например, мне нужно вызвать SomeFunc, которой Q> нужно передать 32-битный указатель, а у меня он располагается в ds:si.
Hапример, так:
Convert 16bit selector:offset pointer to flat 32bit one #define SEL2FLAT(x) (PVOID)( ( ((ULONG)x»3) & 0xffff0000l) | ((ULONG)x&0xffffl) ) То есть на ассемблере 2-3 команды (смотря где у тебя лежит 16:16 ptr). Hо, сам понимаешь, не гарантируется совместимость с будущими версиями оси. [A]: Max Alekseyev (2:5015/60) В DOSCALLS входят функции DosSelToFlat и DosFlatToSel.