发送等待/唤醒 IRP

IRP_MN_WAIT_WAKE的次要功率 IRP 代码可用于唤醒设备或唤醒系统。 可以自行唤醒或系统发送 IRP_MN_WAIT_WAKE 请求的设备驱动程序。 系统仅向始终唤醒系统的设备发送 IRP_MN_WAIT_WAKE 请求,例如开机开关。

驱动程序出于以下两个原因之一发送 IRP_MN_WAIT_WAKE 请求:

  1. 其设备必须能够从睡眠状态返回到工作状态,以响应外部唤醒信号。

    例如,调制解调器的驱动程序可能会在将调制解调器设置为电源状态 D1 之前向其发送等待/唤醒 IRP 以节省能源。 等待/唤醒 IRP 使调制解调器能够响应传入呼叫。

  2. 其设备必须能够唤醒系统以响应唤醒信号。

    当系统进入睡眠状态时,调制解调器可能保持状态 D1, IRP_MN_WAIT_WAKE 挂起。 在这种情况下,传入呼叫将唤醒系统和调制解调器。

无论设备是准备唤醒自身还是唤醒系统,其驱动程序必须执行的操作都是相同的。 主要区别在于设备和系统硬件如何响应初始唤醒信号。 在任一情况下,驱动程序行为都是相同的。