OS/2 FAQ


OS/2 Programming FAQ - пpогpаммиpование. Статья 060

Q Как осуществить 16->32-bit thunking для данных?
A
(All)

Q: Как осуществлять передачу параметров при использовании API из 16-битного кода? Пусть, например, мне нужно вызвать SomeFunc, которой нужно передать 32-битный указатель, а у меня он располагается в ds:si.

(Maxim Elkin, 2:5020/979.1)
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о, сам понимаешь, не гарантируется совместимость с будущими версиями оси.

(Max Alekseyev, 2:5015/60)
В DOSCALLS входят функции DosSelToFlat и DosFlatToSel.


К предыдущей статье | К оглавлению раздела | К следующей статье

Вернуться к списку разделов FAQ.

Если у вас есть вопросы или пожелания, пишите, мы будем рады.

Данный FAQ cоставили Ivan Borovicov и Viatcheslav Odintsov (2:5020/181) на основе OS/2 FAQ Дмитрия Завалишина (dz) и материалов переписки в группе эхоконференций su.os2.*. Оформление статей: Николай Королев. Программирование JSP для RU/2: Евгений Кулешов. Благодарности: Дмитрию Максимовичу (MaximDim) за громадную помощь на первых этапах и Дмитрию Бану (banshee) за его помощь при проверке текста.



Новые статьи на нашем сайте:


Комментариев к странице: 0 | Добавить комментарий
Домой | Проект ядро Core/2 | Проект OS/4 Download | Новости | Гостевая книга | Подробно обо всем | Нужные программы | Проекты | OS/2 FAQ | Всячина | За и Против | Металлолом | #OS2Russian | RDM/2 | Весёлые картинки | Наша галерея | Доска объявлений | Карта сайта | ПОИСК | ФОРУМ