IAdapterPowerManagement::P owerChangeState 方法 (portcls.h)

方法 PowerChangeState 请求设备更改为新的电源状态。

语法

void PowerChangeState(
  [in] POWER_STATE NewState
);

参数

[in] NewState

指定要为设备请求的新电源状态。 此参数是 POWER_STATE 类型的联合。 新的电源状态 (NewStateDeviceState) 可以是下表中显示的 DEVICE_POWER_STATE 枚举值之一。

电源状态 含义
PowerDeviceD0 全电源状态 (D0) 。 此代码可能是当前电源状态的函数。 保存新状态。 此本地值用于确定何时缓存属性访问以及何时允许驱动程序访问硬件。
PowerDeviceD1 相对于返回到 D0 所需的延迟时间,具有最低延迟的睡眠状态
PowerDeviceD2 中等延迟睡眠状态。 在此状态下,设备驱动程序无法假定它可以触摸硬件,因此需要缓存任何访问,并在输入 D0 时还原硬件。
PowerDeviceD3 完全休眠状态,是最长的延迟睡眠状态。 驱动程序无法访问处于此状态的硬件,并且必须缓存任何硬件访问,并在返回到 D0 或 D1 时还原硬件

返回值

备注

PortCls 调用 PowerChangeState 方法以响应 IRP_MN_SET_POWER 电源 IRP。 此调用不得失败。 PortCl 和系统使用 PowerChangeState 调用将设备置于所需的电源状态。 当系统尝试挂起或恢复活动音频流时,驱动程序必须能够正确保存或还原其设备上下文。

为了帮助驱动程序,PortCls 将在调用此方法之前暂停任何活动音频流,以将设备置于睡眠状态。 调用此方法后,PortCls 将取消暂停活动音频流,以唤醒设备。 微型端口可以通过使用 IPowerNotify 接口来选择其他通知。

微型端口驱动程序必须在从调用返回之前对设备的电源状态执行请求的 PowerChangeState 更改。 如果微型端口驱动程序需要在电源状态更改之前保存或还原任何设备状态,微型端口驱动程序应支持 IPowerNotify 接口,这允许它接收任何此类更改的预先警告。 在从成功 PowerChangeState 调用返回之前,微型端口驱动程序应缓存新的电源状态。

当微型端口驱动程序处于睡眠状态之一 (PowerDeviceD0) 以外的任何状态时,它必须避免写入硬件。 微型端口驱动程序必须缓存需要延迟的任何硬件访问,直到设备再次通电。 如果电源状态从睡眠状态之一更改为 PowerDeviceD0,微型端口驱动程序应在设备通电后执行任何延迟的硬件访问。 如果电源状态从 PowerDeviceD0 更改为睡眠状态,微型端口驱动程序可以在呼叫期间 PowerChangeState 执行任何必要的硬件访问,然后再关闭设备。

关闭电源时,永远不会要求微型端口驱动程序创建微型端口驱动程序对象或流对象。 在调用微型端口驱动程序的 NewStream 方法之前,PortCls 始终将设备置于 PowerDeviceD0 状态。

此方法的代码必须驻留在分页内存中。

要求

要求
目标平台 通用
标头 portcls.h (包括 Portcls.h)

另请参阅

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER