我们正在 Windows 10 x64 v2004 下开发一个桌面应用程序来控制虚拟 USB COM 端口,其中设备在运行过程中将连接/断开多次:
- 连接到虚拟 COM 端口时,由于多个虚拟 COM 端口分配了相同的端口号,我们会偶尔收到拒绝访问错误
- 设备管理器显示两个具有相同 COM 端口号的 USB 串行设备:
- 同时分配同一
COM4
端口的两个USB串行设备的属性:
这让我相信这是操作系统的一个错误:
- 一台设备被列为USB 串行端口,而另一个则被列为USB 串行设备?
- 这两家驱动程序制造商中是否有一家不遵守微软的设备驱动程序规则?
- 这种差异能否解释该问题的根本原因?还是虚拟端口寻址中仍然存在普遍问题?
为了自动纠正这个问题,是否可以让操作系统重新分配受影响的虚拟 COM 端口的端口号?
- 在这种情况下,我目前唯一能做的就是要求用户拔下/重新插入第二个连接的设备
答案1
为什么一个设备被列为 USB 串行端口,而另一个设备被列为 USB 串行设备?
因为涉及的两个设备驱动程序对其设备宣布了不同的名称。
这两家驱动程序制造商中是否有一家不遵守微软的设备驱动程序规则?
不一定,Windows 本身也会犯这个错误。
这种差异能否解释该问题的根本原因?还是虚拟端口寻址中仍然存在普遍问题?
无论将具有序列号的设备插入哪个 USB 端口,Windows 都能识别它们。我猜想其中一个设备之前插入在 COM4 上,而另一个设备现在插入,因此 Windows 只是记住了之前的设置。
这可能是竞争情况,正如您所说,通过断开一个设备并重新连接即可解决。除了确保您使用正确的驱动程序外,我不知道还有什么解决办法。
答案2
我遇到了一个非常类似的问题,其中 2 个设备显示为 COM4。我能够通过在设备管理器 - 高级端口设置中更改两个设备的 COM 端口号来解决这个问题。
答案3
人们期望操作系统能够解决/防止这种情况发生。
解决方案是手动更改其中一个设备的 COM 端口号
答案4
这看起来像是 Microsoft OS 中的一个错误。尝试手动安装 FTDI 驱动程序,当 Windows 对该驱动程序提出投诉时,单击“确定”。
注 1:微软甚至无法让 Windows 搜索正常工作。您如何指望他们让 COM 端口工作。
注 2:如果你不相信我,请看一下 FTDI 的这份文档
然后记下这一行“所有这些(Windows)差异加起来就导致了不可预测的行为。”
这行“FTDI 认为问题在于 USB 主机供应商,而不应将问题转嫁给所有 USB 设备制造商。”