poSetPowerState 函数 (wdm.h)

PoSetPowerState 例程通知系统设备电源状态发生更改。

语法

POWER_STATE PoSetPowerState(
  [in] PDEVICE_OBJECT   DeviceObject,
  [in] POWER_STATE_TYPE Type,
  [in] POWER_STATE      State
);

参数

[in] DeviceObject

指向目标 DEVICE_OBJECT的指针。

[in] Type

指示 POWER_STATE_TYPE 值。 驱动程序必须指定 DevicePowerState

[in] State

指定要设置的电源状态。 驱动程序必须指定 DEVICE_POWER_STATE 值。

返回值

在 Windows 2000 及更高版本的操作系统上, PoSetPowerState 返回以前的电源状态。 在 Windows 98/Me 上, PoSetPowerState 返回在 State 中传递 的状态

注解

PoSetPowerState 通知 电源管理器 设备的新电源状态。 设备堆栈中的每个驱动程序 (筛选器、函数和总线驱动程序) 必须调用 PoSetPowerState ,以通知电源管理器其相应设备对象的电源状态发生更改。 例如:

  • 驱动程序在收到设备设置电源请求后和调用 PoStartNextPowerIrp 之前调用此例程。 处理 PnP IRP_MN_START_DEVICE 请求时,驱动程序应调用 PoSetPowerState 以通知电源管理器设备处于 D0 状态。
  • 如果设备关机,驱动程序必须在离开 D0 状态之前调用 PoSetPowerState 。 此外,驱动程序必须能够在 PoSetPowerState 返回之前处理客户端请求。
  • 如果设备正在通电,驱动程序必须在设备成功进入 D0 状态后调用 PoSetPowerState
有关启动和关闭设备电源的详细信息,请参阅 处理设备电源状态的IRP_MN_SET_POWER

PoSetPowerState 的调用方必须在 IRQL <= APC_LEVEL运行,除非将状态设置为 D0。 将状态设置为 D0 时,调用方可以在 IRQL <= DISPATCH_LEVEL运行。

要求

要求
最低受支持的客户端 从 Windows 2000 开始可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 请参见“备注”部分。

另请参阅

IRP_MN_START_DEVICE

PoStartNextPowerIrp