如果将先前移除的设备重新插入同一端口,同时该设备的设备节点仍处于打开状态,则会发生以下事件:
集线器驱动程序 hubd(7D) 检测到端口连接。
hubd 驱动程序恢复总线地址和设备配置。
hubd 驱动程序取消脱机重试请求。
hubd 驱动程序将连接事件发送到客户机驱动程序。
客户机驱动程序收到连接事件。
客户机驱动程序确定新设备是否与先前连接的设备相同。客户机驱动程序首先通过比较设备描述符来进行此项确定。客户机驱动程序也可以比较序列号和配置描述符群。
如果客户机驱动程序确定当前设备与先前连接的设备不同,则可能会发生以下事件:
客户机驱动程序可能向控制台发出警告消息。
用户可能再次移除该设备。如果用户再次移除该设备,则将重新开始热移除事件序列。hubd 驱动程序检测到端口断开连接。如果用户没有再次移除该设备,则会发生以下事件:
客户机驱动程序仍然保持 DISCONNECTED 状态,所有请求和打开操作将失败。
端口仍然不可用。用户必须关闭设备并断开其连接以释放端口。
释放端口时,将重新开始热插拔事件序列。hubd 驱动程序等待端口连接状态发生变化。
如果客户机驱动程序确定当前设备与先前连接的设备相同,则可能会发生以下事件:
客户机驱动程序可能恢复其状态,并继续正常操作。此策略由客户机驱动程序负责。音频扬声器就是客户机驱动程序可继续操作的典型示例。
如果使用重新连接的设备继续操作是安全的,则将重新开始热插拔事件序列。hubd 驱动程序等待端口连接状态发生变化。设备再次可用。