> тестирование драйвера на каждой поддерживаемой плотформе - обязательно!
Я не имел в виду, что достаточно поверхностного тестрования. Я хотел
сказать, что даже жёсткое тестирование только на одной платформе может не
выявить в обозримое 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