Диспетчер очереди печати в Windows 7 также блокирует последовательные порты при остановке
У меня есть программа (среда Windows 7 Enterprise 32bit), которая сканирует доступные последовательные порты для обнаружения определенного устройства.
Но на многих машинах драйвер принтера настраивается на одном из последовательных портов (это не означает, что на самом деле принтер подключен к этому порту). В этом случае моя программа сканирования не может открыть этот порт для поиска устройства.
В Windows XP остановки диспетчера очереди перед началом сканирования было достаточно, чтобы разблокировать последовательные порты, выделенные драйверами принтера. В Windows 7 это больше не работает. Если на COMx настроен принтер и я остановил спулер, COMx не открывается.
Я проверил блокировки процесса с помощью ProcExp: результаты портов, выделяемые процессом spoolsv.exe при работе диспетчера очереди, и результаты, которые никто не выделяет при остановке диспетчера очереди.
Есть идеи о том, как на мгновение разблокировать порты, выделенные для принтеров?
Обходной путь, который я нашел, состоит в том, чтобы изменить порт каждого последовательного принтера на FILE: перед сканированием и вернуться к COMx, когда сканирование завершится, но мне интересно, есть ли более простое решение.
1 ответ
У меня была похожая проблема, которая была решена путем изменения имени порта с COM1 на COM4 в дополнительных свойствах последовательного порта (через диспетчер устройств).
Тогда все работало нормально. Некоторые программы все еще видят переименованный порт как COM1, но теперь они могут получить доступ к порту.