处理电源 IRP

驱动程序在 DispatchPower 例程中处理电源 IRP。 所有电源管理请求都具有主 IRP 代码IRP_MJ_POWER 和以下次要代码之一:

IRP_MN_QUERY_POWER - 用于确定更改电源状态是否可行的查询

IRP_MN_SET_POWER - 请求从一种电源状态更改为另一种电源状态

IRP_MN_WAIT_WAKE — 请求启用设备以唤醒自身或系统

IRP_MN_POWER_SEQUENCE — 请求信息以优化特定设备的电源还原

需要支持 IRP_MN_SET_POWERIRP_MN_QUERY_POWER 。 所有驱动程序都必须准备好处理这些 IRP。

对于任何可以唤醒以响应外部信号的设备,设备堆栈中的所有驱动程序都需要支持 IRP_MN_WAIT_WAKE 。 驱动程序发送此 IRP 以启用设备唤醒。

IRP_MN_POWER_SEQUENCE 的支持是可选的。 此 IRP 为需要很长时间才能恢复电源的设备提供优化。

电源 IRP 可以指定系统电源操作或设备电源操作。 系统的电源 IRP单个设备的电源 IRP 通过设备堆栈采用略有不同的路径,如以下部分所述。