Программа Print Manager

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

Работа с принтером начинается с вызова функции Escape, используя управляющий код STARTDOC. Если прикладная программа устанавливает процедуру завершения вывода на принтер, используется управляющий код ABORTDOC. Эти два управляющих кода содержат параметры, необходимые для того, чтобы функция Open Job начала взаимодействовать с программой Print Manager.

Вывод на принтер состоит из одной или более страниц, каждая из которых представляется отдельным файлом, создаваемым во время спулинга. Драйвер устройства начинает вывод страницы после вызова функции StartSpoolPage; страница завершается вызовом функции EndSpoolPage. Спулерные страницы не обязательно соответствуют физическим страницам принтера. Принтерная страница может содержать одну и более спулерных страниц, или спулерная страница может содержать более одной принтерной страницы - драйвер сам решает, как разбить информацию на логические страницы. Это означает, что принтер может начать распечатку одной логической страницы, как только он получит ее от драйвера. Если выходная информация не разделена подобным образом, вывод на принтер не начнется до тех пор, пока прикладная программа не передаст всю информацию.

После вызова функции StartSpoolPage драйвер устройства может передавать данные программе Print Manager через вызов функции WriteSpool. Эта функция передает данные устройству.

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

Там, где требуется присутствие оператора - когда необходима замена пера плоттера или листа бумаги, - функция WriteDialog позволяет принтерному драйверу отобразить сообщение на экране. Функция WriteDialog похожа на функцию MessageBox и отображает сообщение в панели сообщения, в которой также располагается кнопка Ok. В отличие от MessageBox WriteDialog не выполняется немедленно, а только во время непосредственного вывода информации. Также в отличие от функции MessageBox WriteDialog позволяет отображать только кнопку Ok, с помощью которой продолжается вывод информации; возможности указать другие действия оператора нет.

Интерфейс с функцией WriteDialog не позволяет комплексной обработки ошибок, и драйвер устройства не может получить ответа от самого устройства. Тем не менее, этот механизм предоставляет необходимую базовую поддержку.

После того как драйвер распечатал последнюю страницу и вызвал функцию EndSpool Job, он завершает работу одним из двух способов: с помощью функции Close Job или с помощью функции Delete Job. Функция Close Job завершает вывод обычным образом. Для аварийного завершения вывода драйвер вызывает функцию Delete Job. Обычно драйвер вызывает функцию Close Job в ответ на управляющий код ENDDOC и Delete Job в ответ на управляющий код ABORTDOC. Только большие выигрыши и щедрые бонусы ждут тебя на https://vulkan7777.ru .