我有一个程序(环境是Windows 7企业32位),扫描可用的串行端口来检测特定的设备。
但是在许多机器上,打印机驱动程序是在一个串行端口上configuration的(这并不意味着实际上有一个连接到该端口的打印机)。 在这种情况下,我的扫描程序无法打开该端口来search设备。
在Windows XP上,在开始扫描前停止假脱机程序足以解锁由打印机驱动程序分配的串行端口。 在Windows 7上,这不再起作用。 如果我在COMx上configuration了打印机,并且我停止了假脱机程序,则无法打开COMx。
我使用ProcExp检查了进程locking:假脱机程序运行时由spoolsv.exe进程分配的端口结果,并且假脱机程序停止时结果不由任何人分配。
任何关于如何暂时解锁由打印机分配的端口的想法?
我find的解决方法是将每个串行打印机的端口更改为FILE:在扫描之前,并在扫描完成时返回到COMx,但是我想知道是否有更简单的解决scheme。
我有一个类似的问题,通过在串口高级属性(通过设备pipe理器)更改端口名称从COM1到COM4解决。
一切都很好。 一些程序仍然将重命名的端口看作COM1,但是现在他们可以访问该端口。