Как создать порт, доступный из MS-DOS
От: Master Gekus Россия  
Дата: 21.02.05 14:46
Оценка:
Собственно, возникла следующая проблема. Нужно создать устройство, которое было бы доступно из режима MS-DOS на NT-платформах — типа "LPT1:" или "COM". Т.е. имеется MS-DOS программа, которая выводин на печать некоторые данные — я хочу написать драйвер, который их перехватит, ну и дальше что-либо с ними сделает — перекодирует и пошлет на принтер, установленный в системе, или что-нибудь подобное.

MS-DOS программа выводит на печать именно на устройство — не на прямую через порты. И позволяет настроить порт для вывода на печать — в том числе и указать произвольное имя — хоть "NUL"!

Не могут ли господа подсказать, хотя бы в каком направлении копать? Обязателен ли для этого DDK?

Может, я ерундой занимаюсь, и есть готовые решения?

С уважением,
Заливочкин Евгений
Re: Как создать порт, доступный из MS-DOS
От: Pavel Dvorkin Россия  
Дата: 22.02.05 06:44
Оценка:
Здравствуйте, Master Gekus, Вы писали:

MG>Собственно, возникла следующая проблема. Нужно создать устройство, которое было бы доступно из режима MS-DOS на NT-платформах — типа "LPT1:" или "COM". Т.е. имеется MS-DOS программа, которая выводин на печать некоторые данные — я хочу написать драйвер, который их перехватит, ну и дальше что-либо с ними сделает — перекодирует и пошлет на принтер, установленный в системе, или что-нибудь подобное.


MG>MS-DOS программа выводит на печать именно на устройство — не на прямую через порты. И позволяет настроить порт для вывода на печать — в том числе и указать произвольное имя — хоть "NUL"!


MG>Не могут ли господа подсказать, хотя бы в каком направлении копать? Обязателен ли для этого DDK?


Я тут не большой специалист, но, насколько я понимаю, нужен драйвер, который создает символическую ссылку (например, "XYZ"), которая потом и будет видна в 3 кольце.
With best regards
Pavel Dvorkin
Re: Как создать порт, доступный из MS-DOS
От: Alter_ Украина http://alter.org.ua
Дата: 22.02.05 08:23
Оценка:
Здравствуйте, Master Gekus, Вы писали:

MG>Собственно, возникла следующая проблема. Нужно создать устройство, которое было бы доступно из режима MS-DOS на NT-платформах — типа "LPT1:" или "COM". Т.е. имеется MS-DOS программа, которая выводин на печать некоторые данные — я хочу написать драйвер, который их перехватит, ну и дальше что-либо с ними сделает — перекодирует и пошлет на принтер, установленный в системе, или что-нибудь подобное.


MG>MS-DOS программа выводит на печать именно на устройство — не на прямую через порты. И позволяет настроить порт для вывода на печать — в том числе и указать произвольное имя — хоть "NUL"!


MG>Не могут ли господа подсказать, хотя бы в каком направлении копать? Обязателен ли для этого DDK?


MG>Может, я ерундой занимаюсь, и есть готовые решения?


На сколько я знаю, решения есть (сам одно такое писал — Virtual Serial Port называлось), но они за деньги.
Драйвер нужен. И обрабатывать он должен уметь специфические для данного устройcтва IOCTLs.
А в usermode поюзать DefineDosDevice(). Как раз для создания symlink'а на DeviceObject драйвера в
месте, доступном для Win32 applications — "\??", известном также как "\DosDevices" и "\\.\".
--
Alter, http://alter.org.ua
Re: Как создать порт, доступный из MS-DOS
От: Ms-Rem  
Дата: 23.02.05 14:03
Оценка:
Здравствуйте, Master Gekus, Вы писали:

MG>Собственно, возникла следующая проблема. Нужно создать устройство, которое было бы доступно из режима MS-DOS на NT-платформах — типа "LPT1:" или "COM". Т.е. имеется MS-DOS программа, которая выводин на печать некоторые данные — я хочу написать драйвер, который их перехватит, ну и дальше что-либо с ними сделает — перекодирует и пошлет на принтер, установленный в системе, или что-нибудь подобное.


Очень просто:
CreateIoDevice — создаем обьект устройства
IoCreateSymbolicLink — создать символическую ссылку в пространстве имен \DosDevices\

DDK просто обязателен

и еще тебе желательно прочитать книгу В.Солдатова "Программирование драйверов под windows"

Найдешь где скачать — мыль мне на ms-rem{at}yandex.ru
... << RSDN@Home 1.1.3 stable >>
Re: Как создать порт, доступный из MS-DOS
От: emusic Франция https://software.muzychenko.net/ru
Дата: 23.02.05 14:24
Оценка:
Здравствуйте, Master Gekus, Вы писали:

MG>Собственно, возникла следующая проблема. Нужно создать устройство, которое было бы доступно из режима MS-DOS на NT-платформах — типа "LPT1:" или "COM".


Не слушай ужасов про kernel-mode драйверы, которых тебе тут понаписали 16-разрядные DOS-программы в NT-линейке работают в VDM — Virtual DOS Machines. Есть специальный вид драйвера для VDM — это банальная 32-разрядная user-mode DLL, которая указывает, для каких действий VDM ее надо дергать, и соответствующим образом эти действия обрабатывает. Нечто вроде супервизора. Можно обрабатывать программные прерывания, обращения к портам и т.п.

Делать и отлаживать VDM-драйвер не в пример проще, чем kernel-mode драйвер, ибо он, во-первых, всю систему не уронит при ошибке, а во-вторых — может пользоваться практически всем набором Win32 API.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.