· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Перенос DOS -> WIN ?

Посл.отвђт Сообщенiе


Дата: Окт 3, 2003 23:14:10

Заранее прошу прощения за ламерский вопрос. В нормальных условиях я мог бы поэкспериментировать и разобраться сам, но время поджимает :(

Итак, имеется древняя софтина с исходниками на C++. Софтина досовская, но под виндовс на DVM работает без претензий. Так вот, необходимо расширить возможности данной софтины, но... Оригинальный код на C++ напичкан ассемблерными вставками для пересылки данных через LPT. Есть подозрение, что из-за старых методов общения с LPT этот код не будет работать без DVM. Заменять все низкоуровневые обращения на высокоуровневые - дело не очень перспективное. Поэтому решил спросить:

Можно ли заставить обычный 32-битный код (DLL или EXE) работать как будто через DVM (DOS Virtual Machine)?

ЗЫ: Можно конечно запихнуть старый 16-битный модуль к себе в ресурсы 32-битного и вызывать потом через консоль, но это уже изврат.


Дата: Окт 4, 2003 05:20:09

Полностью проги с ДОСки на вЫнЬ мне переносить не переходилось, но отдельные процедуры каторые работали с портами я переносил. К сожаления фишка каторую я применял работает только под вЫнЬ9хэ - я вламывался в ring0 и работал из него )


Дата: Окт 4, 2003 05:42:31 · Поправил: volodya

Quantum

Друг мой, я оговорюсь сразу - я руками этого не делал и знаю только теорию. Так вот - ни фига у тебя не выйдет :( В первую очередь потому, что это NTVDM, а ты работаешь в win32-подсистеме. Поэтому тебе придется либо расхакивать NTVDM, либо переписывать прогу. Коллы из win32 NTVDM не задевают никоим боком. Это правильно. Но это печально для тебя :(


Дата: Окт 4, 2003 05:58:44

Это не справедливо :( Выходит, что старая досовская прога спокойно шастает по всяким портам даже на NT4 (проверял недавно), а моя, блин, только на 9х и то с натяжкой...

я вламывался в ring0 и работал из него
Я такое тоже делал, но прога работала через раз, особенно заметно было на Win2000 с последними сервиспаками.

Значит выход один: компилить в старом Борланд С++ и продолжать работать под прикрытием DVM, или драйвер писать (последнее - шутка) :(


Дата: Окт 4, 2003 07:12:15

volodya
Всё, похоже, что проблема решена :-) Скачал пару бесплатных драйверов. Буду тестировать, а завтра "отдохну" над UPX'ом ;-)

2 All
Кроме бесплатных дров (вроде Inpout32) есть немало платных, причём дорогих... С чего бы это? Чем они лучше? Может кто-то имел возможность с ними работать и поделится впечатлениями?


Дата: Окт 4, 2003 07:52:35

Quantum

Сомнительный отдых. :( Учти, там нехило используются виртуальные функции. В зависимости от типа файла - PE/DOS/ELF и т.п., используется свой обработчик. Нас, понятное дело, интересует только PE.

Но это оффтоп.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.051