发送等待/唤醒 IRP
IRP_MN_WAIT_WAKE的次要功率 IRP 代码可用于唤醒设备或唤醒系统。 可以自行唤醒或系统发送 IRP_MN_WAIT_WAKE 请求的设备驱动程序。 系统仅向始终唤醒系统的设备发送 IRP_MN_WAIT_WAKE 请求,例如开机开关。
驱动程序出于以下两个原因之一发送 IRP_MN_WAIT_WAKE 请求:
其设备必须能够从睡眠状态返回到工作状态,以响应外部唤醒信号。
例如,调制解调器的驱动程序可能会在将调制解调器设置为电源状态 D1 之前向其发送等待/唤醒 IRP 以节省能源。 等待/唤醒 IRP 使调制解调器能够响应传入呼叫。
其设备必须能够唤醒系统以响应唤醒信号。
当系统进入睡眠状态时,调制解调器可能保持状态 D1, IRP_MN_WAIT_WAKE 挂起。 在这种情况下,传入呼叫将唤醒系统和调制解调器。
无论设备是准备唤醒自身还是唤醒系统,其驱动程序必须执行的操作都是相同的。 主要区别在于设备和系统硬件如何响应初始唤醒信号。 在任一情况下,驱动程序行为都是相同的。