BeOS - статьи


Как написать драйвер принтера в BeOS - часть 2


Это позволяет упростить код. Драйвер не должен знать, каким способом будут доставляться данные на принтер, он—просто выводит поток данных.



Местонахождение драйвера

Системные драйвера, которые установлены с ОС, находятся в B_BEOS_ADDONS_DIRECTORY в подкаталоге Print (т.е. /boot/beos/system/add-ons/Print). Драйвера, установленные пользователем, находятся в B_USER_ADDONS_DIRECTORY в подкаталоге Print (т.е. /boot/home/config/add-ons/Print).

Транспортные модули находятся в пользовательском или системном каталоге драйверов в подкаталоге transport.

Жизнь драйвера принтера

Установка драйвера

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

Добавление нового принтера

Если пользователь добавит новый принтер через диалог Printers, он выберет имя принтера, модель принтера и транспортный модуль. Приложение Printers создаст каталог спулера (spooler), названный именем принтера в B_USER_PRINTERS_DIRECTORY

(например: /boot/home/config/settings/printers). Имя транспортного модуля сохранится в атрибуте transport каталога спулера. Тип этого атрибута - B_STRING_TYPE.

Когда сервер печати получит сообщение, что был добавлен новый принтер, то он вызовет драйвер, чтобы его настроить. Прототип функции в драйвере принтера выглядит так:

char* add_printer(char* printer_name);

Это даст шанс драйверу открыть диалог конфигурирования. Все настройки могут сохранены в атрибутах каталога спулера. При удачном завершении операции драйвер должен вернуть указатель на строку printer_name, а в случае неудачи, как было оговорено выше — NULL.

Настройка страницы

Когда приложение пользователя вызовет BPrintJob::ConfigPage(), сервер печати вызовет следующую функцию в драйвере:

BMessage* config_page (BNode* spool_folder, BMessage* settings);

В этом вызове драйверу будет передан указатель на спулер печати, и в результате этого драйвер сможет прочитать настройки из атрибутов спулера.


- Начало -  - Назад -  - Вперед -