Windows 是否会将禁用连接设备的 USB 端口视为与从端口物理移除设备相同?

Windows 是否会将禁用连接设备的 USB 端口视为与从端口物理移除设备相同?

我想模拟 USB 设备从端口物理移除的情况,但是,我不完全确定 Windows 是否会以与突然意外移除物理设备完全相同的方式处理禁用端口的情况。

如果行为不相同,它们有何不同?

答案1

只有在发生灾难性的通信故障时,即设备在尝试三次事务(通常在硬件中设置)后仍无法使用正确的协议做出响应时,Windows 才会禁用 USB 端口。如果发生端口错误,控制器将转换为“禁用状态”,请参阅 USB 2.0 规范第 11.5.1 节。然后,如果端口仍处于连接状态(保持 D+ = 高电平),主机软件将尝试重置端口,如果重置三四次都无法恢复通信,则端口/设备将被视为已死,并且不会再进行尝试。

如果设备“意外移除”,情况会有所不同:端口将感知到“断开连接”事件。如果处于 HS 模式,终端将丢失,并且双振幅反射将在 SOF 数据包的延长 EOP 阶段期间设置断开连接标志。在 LS/FS 模式下,端口有一个计时器,用于检测“单端零”状态,又称“SE0”。如果电缆/设备消失,SE0 线路状态将保持超过 2.5 微秒,并且断开连接状态将再次报告给主机。请参阅第 11.5.2 节。

如果检测到断开连接,端口将自动转换为“断开连接状态”。然后,如果由于物理断开连接而导致上拉电阻确实丢失,端口将超时进入“禁用”状态。由于应该有“断开连接”中断而不是“端口错误/事务错误”中断,因此主机不会尝试与此端口进行任何通信。请参阅图 11-10 了解下游端口状态图,以及以下状态描述。

相关内容