编写设备驱动程序

系统电源管理

系统电源管理包括:在保存整个系统的状态后关闭系统,以及在重新打开系统后恢复状态。此过程称为 CPR(checkpoint and resume,检查点和恢复)。在 CPR 相关方面,USB 客户机驱动程序的运行方式与其他客户机驱动程序相同。要暂停设备,请在 cmd 参数为 DDI_SUSPEND 的情况下调用驱动程序的 detach(9E) 入口点。要恢复设备,请在 cmd 参数为 DDI_RESUME 的情况下调用驱动程序的 attach(9E) 入口点。处理 detach(9E) 例程中的 DDI_SUSPEND 命令时,请尽可能地清理设备状态和驱动程序状态,以满足后面清理恢复操作的需要。(请注意,这对应于图 20–4 中的 SUSPENDED 状态。)处理 attach(9E) 例程中的 DDI_RESUME 命令时,务必使设备达到全功率状态,以使设备与系统同步。

对于 USB 设备,暂停和恢复的处理与热插拔断开连接和重新连接类似(请参见热插拔 USB 设备)。CPR 与热插拔之间的重要差别是,在 CPR 的情况下,如果设备处于不可暂停的状态,驱动程序的检查点过程可能会失败。例如,如果设备正在进行错误恢复,则无法暂停设备。如果设备正忙,无法安全将其停止,也无法暂停该设备。