Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

За 2005-03-25

Re: драйверы под Windows

Glad to greet, baton_usenet!

You seem to have written (Thursday, March 24, 2005):

b> кто-нибудь из вас разрабатывал драйверы под винду?
b> интересовался этим вопросом?
b> есть документация? ссылки?
b> помогите, пожалуйста, укажите направление!

Для начала читай MSDN: Windows Driver Model (WDM), kernel-mode,
DeviceIoControl.
Далее ищи DDK (в принципе нынче пираты, молодцы, стали такие сд
выпускать, найти можно). Когда будешь четко понимать архитектуру
винды и способы взаимодействия с низким уровнем в user/kernel mode,
можно в качестве примера ознакомиться с исходниками драйвера для USB
устройств (только надо ещё хорошо знать саму спецификацию (1.1) до
уровня формирования пактов):
http://sourceforge.net/projects/libusb-win32/

b> нужна литература, кой-какая имеется.

Как-то недавно видел от BHV пару книг по USB и SCSI с азов (очень
подробно все шаги). Ещё, помнится, была отдельно книга по драйверам,
но не помню про неё ничего.

ЗЫ Ещё есть WYSIWYG система, мастерящая скелет драйвера из Wizard-а.
Jumbo Kernel Driver (вроде), но стоит она 2-4 тыщи бакинских, и
кряков я не видал ;) .

Alles Gute!

..In Code We Trust...

   2005-03-25 20:42:08 (#339830)

Re: драйверы под Windows

Доброго часу,

b> есть документация? ссылки?
b> помогите, пожалуйста, укажите направление!
b> нужна литература, кой-какая имеется.
Есть книжка на английском языке, после внимательного прочтения которой
снимается куча вопросов:
Programming the Microsoft Windows Driver Model / Walter Oney -- 2nd ed.
Можно (скорее всего) взять на club.shelek.com, плюс если возникают
вопросы то там же есть форум, посвященный этому делу.

Как уже правильно заметили обязательным является наличие DDK. С ней же
идет и документация.

Best RegardZ,
<DeaD> |< R [] |_ I |<

Я красивый, я сильный, я умный, я добрый. И я сам все это открыл. (Ежи Лец)

Отвечать сюда: mailto:dead-krolik [at] rambler.ru
Ходить сюда: http://dead-krolik.narod.ru

Фраза дня: I don't want to live on in my work, I want to live on in my apartment.

Номер выпуска : 4189
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339829
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Dead Krolik 2005-03-25 20:41:26 (#339829)

Вопрос

Здравствуйте, специалисты.

Я только делаю первые шаги в программировании. Не могу разобраться
как работать с маке файлами. Подскажите может где нибудь есть что скачать
по этому вопросу для просвещения.

   Виктор 2005-03-25 20:41:11 (#339828)

Re[5]: драйверы под Windows

> тестирование драйвера на каждой поддерживаемой плотформе - обязательно!

Я не имел в виду, что достаточно поверхностного тестрования. Я хотел
сказать, что даже жёсткое тестирование только на одной платформе может не
выявить в обозримое design-время столько же ошибок, как тестирование на
обоих. И при этом неважно, будет ли драйвер реально использоваться под этой
другой платформой. Ошибки сами по себе от этого не исправятся.

> раз отличий не много, то прошу прислать материал на
> baton_usenet(гав-гав)mail.ru

Отличия касаются реализации WDM в разных ОС, а не интерфейса драйверов с
ними. С точки зрения интерфейса они как раз одинаковые. Поэтому некоторые
ошибки ловятся синим экраном в Win9x, а на WinNT based всё прекрасно
работает и наоборот.
Однако, мне кажется, к твоей задаче это не относится. См дальше

> да. в принципе, так и есть. это будет программа, которая будет
> печатать в файл (наподобие Adobe Acrobat, который печатает в pdf)

Не знаю, как Акробат печатает в pdf, но у тебя задача на kernel-mode
драйверы вроде не завязывается. И это хорошо. Ибо написать надо будет
"всего-лишь" DLL.

> <skipнуто>
> ...по-моему достаточно описал.

Да, вполне. В DDK нужно смотреть в первую очередь в разделы, посвящённые
принтерам. Однако ж драйверы принтеров имеют много общего с дисплейными
драйверами. Поэтому не мешает и туда заглядывать. Коротко о теории:
Драйверы принтеров являются GDI-драйверами. Утрировано говоря, их назначение

заключается в трансляции GDI-вызовов приложения, которые достигают драйвера
транзитом через ОС, в команды и данные для принтера, которые тот может
непосредственно у себя обработать. Вообще-то, видео-драйверы занимаются тем
же, только устройство вывода у них немножко другого класса -). Поэтому в DDK

(по крайней мере в том, что у меня) оба эти типа рассматриваются в
совокупности как "графические драйверы".
Запросы от приложений в первую очередь поступают в GDI32.DLL. Та,
разобравшись, куда указывает HDC, направляет запрос т.н. "графическому
принтерному драйверу", который получает управляющие пакеты и данные, которые

как-то там интерпретирует и порождает некий поток выходных данных в
некотором там формате, как правило EMF, и отправляет его назад в GDI. На
чём, собственно его работа и заканчивается. Ибо далее GDI задействует
спулер, а тот в свою очередь провайдера печати.
В общем случае провайдер печати может быть довольно сложной конструкцией -
ведь есть ещё понятие сетевой печати. Грубо говоря, если выходной формат к
принтеру - это EMF, то на этом драйвер принтера и заканчивается, ибо Wind-а
уже имеет у себя соответствующие средства. Если же нет, то должны быть также

такие драйверы, как "Language monitor DLL", "Port Monitor DLL", и наконец
"kernel-mode port driver", которые будут являться частью провайдера. Тебе
это по всей видимости не понадобится. А, вот ещё. Есть понятие
"интерфейсного принтерного драйвера". Это тот, который занимается
интерфейсом с пользователем и служит для настройки "графического принтерного

драйвера" и чего там ещё к нему разработчики прилагают.
Самое главное здесь - правильно и быстро сформировать поток выходных данных
в "графическом принтерном драйвере". В общем случае GDI направляет запрос от

приложения прямо ему. Но он может ответить ошибкой, типа "функция не
поддерживается", и тогда GDI сама сымитирует этот запрос на уровне более
простых команд. Например: "нарисуй окружность - параметры такие-то" - "не
могу, не умею" - "ну ладно, давай по Брезенхему на точки тебе разложу" - "о,

другое дело, поехали" типа того. Это позволяет задействовать аппаратные
возможности ускорения, если они есть. Однако, есть запросы, которые драйвер
обязан уметь обрабатывать.
Пока всё. Для старта, наверное, достаточно. Теперь будет легче шариться в
DDK. Однако ж ещё раз напоминаю, что сам я "графических драйверов" не писал.

Только читал теорию и рассматривал Sample-ы в DDK. Когда-то собирался писать

универсальный VBE2.0 видео-драйвер для тогда ещё только что вышедшей Windows

95. Да так и не собрался.

4All Поправьте, если где ошибся. Всё ж таки давно я этим занимался.

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4185
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339663
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-03-25 15:57:19 (#339663)

Re[4]: драйверы под Windows

> да. в принципе, так и есть. это будет программа, которая будет печатать
> в файл (наподобие Adobe Acrobat, который печатает в pdf)
>
> ... драйвера принтеров - это драйверы пользовательского режима.
> вопрос: может тогда вообще драйвер ядра писать не надо?
>
Есть смутное подозрение, что похожая задача уже обсуждалась в
этом листе. Попробуйте посмотреть тему "Принтеры".

> может быть работа со спулером печати происходит на
> более высоком уровне?
>
Точно.
Но описание архитектуры печати все равно в DDK.
Тема 'Printer Drivers and Spooler Components' в DDK 2000
и 'Printer Driver Overview' в DDK 98.

Номер выпуска : 4184
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339647
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-03-25 15:27:44 (#339647)

Re[3]: драйверы под Windows

> ...меня интересуют драйверы под win2k/XP/2003

WDM - она и в 9x WDM. Кстати, не верь, если будут говорить, что WDMы на
обоих платформах абсолютно идентичны. Различаются немного. Тестировать имеет

смысл на обеих платформах. Ошибки, не проявляющиеся в одной из них, вполне
могут выплыть в другой.

> конкретнее - драйвер под принтер (виртуальный принтер)

Поконкретнее задачу опиши. Складывается ощущение, что тебе придётся два
драйвера писать - уровня ядра для эмулящии виртуального оборудования, и
собственно драйвер для собственно печати. Последний - это как правило
простая DLL со строго определёнными экспортируемыми входами (не всегда
функциями). Её теоретически хоть на VB можно написать.

> если кто-нибудь занимался разработкой драйверов под принтер,
> пожалуйста, поделитесь опытом!

Не писал, но поделиться есть чем. Для начала конкретизируй предыдущий пункт.

--
С уважением, boroda

Номер выпуска : 4182
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339577
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-03-25 13:25:27 (#339577)

Re: драйверы под Windows

> кто-нибудь из вас разрабатывал драйверы под винду?
> интересовался этим вопросом?

Если интересует Win9x native-model (это которая VxD), прошу в мыло. Много
работал в своё время.

> есть документация? ссылки?

Согласен с ЕА. Начать с DDK и примеров оттуда. Книги есть, но в малом
количестве. Как-то попадалось штуки две в печатном варианте, но сейчас уже
не помню ни названий, ни авторов, ни издательств. Давно это было

--
С уважением, boroda
mailto:boroden***@s*****.ru

Номер выпуска : 4180
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339461
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   Шматко А.А. 2005-03-25 10:34:43 (#339461)

Re: драйверы под Windows

> кто-нибудь из вас разрабатывал драйверы под винду?
>
Хорошо бы знать, какие именно. Драйвера разные бывают...

> интересовался этим вопросом?
> есть документация?
>
Если нет проблем с английским, лучше читать Windows DDK.
Документация в последних версиях хорошо написана.
Актуальных переводных книг на бумаге
я не видел (хотя и не искал).

Есть замечательная книга "Inside Windows 2000". Оригинал
на английском качал с http://anatolix.naumen.ru/ (~19M).
Можно начать с нее.

> ссылки?
>
http://www.microsoft.com/whdc/devtools/ddk/
http://www.osronline.com/

Номер выпуска : 4179
Возраст листа : 551 (дней)
Количество подписчиков : 529
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/339436
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

   2005-03-25 09:34:01 (#339436)