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

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

语法

void PowerChangeState(
  [in] POWER_STATE NewState
);

参数

[in] NewState

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

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

返回值

没有

言论

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

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

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

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

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

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

要求

要求 价值
目标平台 普遍
标头 portcls.h (包括 Portcls.h)

另请参阅

IAdapterPowerManagement

IPowerNotify

IRP_MN_SET_POWER