Зависание программы

  • 01 ноября 2022
  • Отзывы :0
  • Просмотров: 4602
  • 0

Добрый день !

Сегодня я расскажу о возникающих проблемах в подсистеме печати Windows и влиянии этих проблем на работу некоторых программ.

Подсистема печати Windows – это совокупность системных библиотек и установленных пользователем драйверов принтеров. Подсистема печати позволяет отправлять задание на печать, настраивать параметры принтера перед печатью, отслеживать статус печати задания.

В операционной системе может быть установлено неограниченное количество принтеров. Но, к сожалению, понятие «неограниченное» весьма условно, ибо каждый установленный принтер «тянет» за собой кучу библиотек (в терминах программистов – .dll). каждый принтер глубоко прописывается в системном реестре в нескольких его ветках, также в системе регистрируются т.н. сервисы (Services). У некоторых принтеров в системных папках автозагрузки появляются мониторы состояния (у EPSON – файлы с именами E_xxxxx.exe.  Они подгружаются  при каждой загрузке ОС и не только занимают пространство в оперативной памяти, но также могут выполнять некоторые действия при вроде бы видимом бездействии принтера – опрашивать его статус, хронологию использования чернил, версию прошивки. Рано или поздно, большое количество принтеров и мониторов состояния начинает вносить хаос в работу ОС – в папке «Принтеры» в очереди печати принтеров сами собой появляются «задания», которые никто не отправлял на печать, да и сама папка «Принтеры» начинает представлять собой такое зрелище


или такое


Кстати, по последнему скриншоту. Это, в большинстве своем, принтеры, когда-либо подключавшиеся к ПК и драйвера на которые не были установлены. Так вот эти принтеры также вносят хаос в ОС, потому как в системном реестре все равно остаются зарегистрированные виртуальные USB-порты за принтером с серийным номером, например ABCD123456. Количество виртуальных портов влияет на работу любых сторонних программ, не входящих в состав операционной системы (долгий поиск принтера, зависание программы). Все копии принтеров (Копия 1… Копия N) и неподключенные принтеры не удаляются автоматически, их нужно удалять вручную кликом правой кнопкой мыши и далее «Удалить устройство». Для корректной работы программ, работающих с USB-принтерами, идеальным условием считается наличие двух-трех установленных в системе принтеров и полное отсутствие принтеров, не установленных в системе.

Очередь печати принтера и ее влияние на печать из программ.

При отправке документа на печать на принтер, служба печати Windows (Print Spooler) формирует задание печати и создает два файла: один с расширением .SHD (содержит настройки задания печати), второй — .SPL (хранит собственно данные, которые нужно распечатать). Таким образом, задания печати будут доступны службе печати, даже после закрытия программы, инициировавшей печать. Данные файлы хранятся в каталоге спулера (по умолчанию, «%systemroot%\System32\spool\PRINTERS”). После успешной печати, эти файлы автоматически удаляются из этого каталога, и, соответственно, из очереди печати. Но если принтер в данный момент выключен или находится в состоянии ошибки, задания не удаляются автоматически даже после перезагрузки ОС, нужно удалять вручную из очереди печати. «Зависшее» задание печати принтера не позволяет ни подсистеме печати ни сторонним программам соединиться с принтером до тех пор, пока задание не будет удалено. Более подробно об этой проблеме рассказывается в статье по ссылке https://winitpro.ru/index.php/2016/04/12/prinuditelnaya-ochistka-ocheredi-pechati-v-windows/. В этой же статье приведен довольно радикальный способ очистки очереди печати – запуск bat-файла длдя очистки очереди печати всех установленных в ОС принтеров (примечание: запускать нужно от имени администратора). Техподдержка программы может по запросу выслать данный файл, если у вас нет возможности его скачать или данная ссылка станет нерабочей.

Просим следить за своей операционной системой, удалять неиспользуемые принтеры, не допускать ситуаций, приведенных на скриншотах. Если все же такого количества принтеров избежать не удается, рекомендуем также регулярно очищать очереди печати всех принтеров во избежание ошибок связи с принтером и ошибок печати тех заданий, которые вы хотите напечатать.

Особенно это касается ОС Windows10.

 
 
Оставить отзыв  ↓
 
Ещё никто не оставил отзывов.