关闭设备的电源
除非设备启用了唤醒,否则其驱动程序在系统关闭时将其关闭。 设备在移除或意外移除时必须始终关闭。
删除设备时,即插即用管理器会向设备堆栈发送IRP_MN_REMOVE_DEVICE请求。 为了响应此 IRP,设备的驱动程序应确保设备关机。 关闭设备是删除处理的隐式部分;设备电源策略所有者不需要发送 PowerDeviceD3的IRP_MN_SET_POWER。
当驱动程序处理 IRP_MN_REMOVE_DEVICE 请求时,它们会等待挂起的 I/O 完成,执行任何必要的删除处理,调用 PoSetPowerState 以通知电源管理器设备处于状态 D3,并删除它们为此设备创建的设备对象。 通常,总线驱动程序关闭设备的电源。
如果设备意外从 Windows 2000 或更高版本的操作系统中删除,即插即用管理器会将IRP_MN_SURPRISE_REMOVAL请求发送到相应设备堆栈的顶部。 为了响应此 IRP,设备的驱动程序应执行意外删除处理,如 处理IRP_MN_SURPRISE_REMOVAL请求中所述。
系统关闭时,电源管理器 (S4 或 S5) 发送系统电源状态IRP_MN_SET_POWER。 当设备电源策略所有者收到此 IRP 时,它应发送 PowerDeviceD3的IRP_MN_SET_POWER,以便较低的驱动程序可以完成其工作并关闭设备电源。
驱动程序可以选择对其设备执行空闲检测,也可以请求电源管理器执行空闲检测,以便在不使用时关闭设备。 有关详细信息,请参阅 检测空闲设备。