BeOS - статьи


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



Заголовок задания печати


struct print_file_header { int32 version; int32 page_count; off_t first_page; int32 _reserved_3_; int32 _reserved_4_; int32 _reserved_5_; };

Эта структура декларирована в PrintJob.h. В файле задания печати после заголовка следует
плоский BMessage, содержащий в себе настройки переданные take_job().Задание печати содержит
в себе page_count страниц. Первая станица находится по смещению first_page.


Заголовок Страницы


struct page_header { int32 picture_count; off_t next_page; int32 _reserved[10]; };

Этот заголовок находится перед picture_count изображений. Следующая станица начинается со
смещения next_page.


Заголовок Изображения


struct _picture_header_ { BPoint point; BRect rect; };

Содержит плоский BPicture объект.



Удаление принтера

Принтер может быть удален через аплет Printers. Удаление каталога спулера происходит только когда в спулере не находится ни одного задания печати.

Деинсталяция драйвера

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

Обновление драйвера

Обычно при установки новой версии драйвера не требуется удалять и добавлять заново уже установленные принтеры. В большинстве случаев достаточно заменить соответствующий модуль.

Возможные проблемы при написании драйвера

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

Также существует ситуация, когда могут быть загружены несколько копий драйвера (Например, когда печатается задание и в этот же момент пользователь конфигурирует принтер в диалоге настройки).

Многопоточность в драйвере тоже может стать проблемой.


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



Книжный магазин