Операционная система Microsoft Windows 3.1 для программиста. Дополнительные главы

       

Драйвер принтера


В 14 томе "Библиотеки системного программиста" мы рассказали вам о том, как приложения Windows работают с принтером. Мы сказали тогда, что для печати используются те же функции графического интерфейса GDI, что и для рисования на экране, плюс некоторые дополнительные. Можно было бы ожидать, что в процессе печати функции GDI выводят данные на принтер, обращаясь к аппаратуре соответствующего параллельного или последовательного порта, однако это не так.

Прежде всего, данные, которые выводятся на печать, попадают на вход драйвера принтера. После обработки драйвером данные направляются снова в интерфейс GDI, который далее может направить их либо в систему спулинга печати, либо сразу передать драйверу параллельного или последовательного порта, к которому подключен принтер. Система спулинга печати, которая управляется через приложение Print Manager, способна накапливать данные и передавать их драйверу параллельного или последовательного порта в фоновом режиме, почти не влияя на работу других приложений.

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

Так же, как и драйвер видеоконтроллера, драйвер принтера экспортирует функции BitBlt, ExtTextOut, SetPalette, StretchDIBits и другие.

Для облегчения задачи создания собственного драйвера принтера DLL-библиотека gdi.exe экспортирует "грубые" функции (Brute Functions), которые выполняют основные операции с монохромными битовыми изображениями. Имена этих функций начинаются с префикса dm, например, dmBitBlt.

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



Содержание раздела