编写设备驱动程序

热重新插入

如果将先前移除的设备重新插入同一端口,同时该设备的设备节点仍处于打开状态,则会发生以下事件:

  1. 集线器驱动程序 hubd(7D) 检测到端口连接。

  2. hubd 驱动程序恢复总线地址和设备配置。

  3. hubd 驱动程序取消脱机重试请求。

  4. hubd 驱动程序将连接事件发送到客户机驱动程序。

  5. 客户机驱动程序收到连接事件。

  6. 客户机驱动程序确定新设备是否与先前连接的设备相同。客户机驱动程序首先通过比较设备描述符来进行此项确定。客户机驱动程序也可以比较序列号和配置描述符群。

如果客户机驱动程序确定当前设备与先前连接的设备不同,则可能会发生以下事件:

  1. 客户机驱动程序可能向控制台发出警告消息。

  2. 用户可能再次移除该设备。如果用户再次移除该设备,则将重新开始热移除事件序列。hubd 驱动程序检测到端口断开连接。如果用户没有再次移除该设备,则会发生以下事件:

    1. 客户机驱动程序仍然保持 DISCONNECTED 状态,所有请求和打开操作将失败。

    2. 端口仍然不可用。用户必须关闭设备并断开其连接以释放端口。

    3. 释放端口时,将重新开始热插拔事件序列。hubd 驱动程序等待端口连接状态发生变化。

如果客户机驱动程序确定当前设备与先前连接的设备相同,则可能会发生以下事件:

  1. 客户机驱动程序可能恢复其状态,并继续正常操作。此策略由客户机驱动程序负责。音频扬声器就是客户机驱动程序可继续操作的典型示例。

  2. 如果使用重新连接的设备继续操作是安全的,则将重新开始热插拔事件序列。hubd 驱动程序等待端口连接状态发生变化。设备再次可用。