Eu tenho um programa (o ambiente é o Windows 7 Enterprise de 32 bits) que verifica as portas seriais disponíveis para detectar um dispositivo específico.
Mas em muitas máquinas um driver de impressora é configurado em uma porta serial (isso não significa que haja realmente uma impressora conectada a essa porta). Nesse caso, meu programa de digitalização não consegue abrir essa porta para pesquisar o dispositivo.
No Windows XP, parar o spooler antes de iniciar a digitalização foi suficiente para desbloquear as portas seriais alocadas pelos drivers da impressora. No Windows 7, isso não funciona mais. Se eu tiver uma impressora configurada no COMx e parar o spooler, o COMx não poderá ser aberto.
Eu verifiquei os bloqueios do processo comProcExp: resultados das portas alocados pelo processo spoolsv.exe quando o spooler está em execução e resultados NÃO alocados por ninguém quando o spooler é interrompido.
Alguma idéia de como desbloquear momentaneamente as portas alocadas pelas impressoras?
Uma solução alternativa que encontrei é alterar a porta de cada impressora serial para FILE: antes da digitalização e voltar para COMx quando a digitalização for concluída, mas me pergunto se existe uma solução mais simples.
Responder1
Tive um problema semelhante que foi resolvido alterando o nome da porta de COM1 para COM4 nas propriedades avançadas da porta serial (por meio do gerenciador de dispositivos).
Tudo funcionou bem. Alguns programas ainda veem a porta renomeada como COM1, mas agora podem acessar a porta.