PoFxNotifySurprisePowerOn 函数 (wdm.h)

PoFxNotifySurprisePowerOn 例程通知电源管理框架 (PoFx) 设备已打开,这是向其他设备供电的副作用。

语法

void PoFxNotifySurprisePowerOn(
  [in] PDEVICE_OBJECT Pdo
);

参数

[in] Pdo

指向 物理设备对象的 指针 (PDO) 。 此参数指向表示作为副作用打开的物理设备的 DEVICE_OBJECT 结构。 调用方始终是枚举 PDO 的总线驱动程序。

返回值

备注

设备驱动程序不应调用此例程。 此例程只能由总线驱动程序调用。

总线驱动程序调用此例程以通知 PoFx 当前未使用的设备与第二台设备同时打开。 例如,第一个设备可能与第二个设备共享电源轨。 因此,如果不向第一个设备供电,则无法向第二个设备提供电源,这是一个副作用。 由于未使用第一个设备,因此应将此设备配置为尽可能少地消耗电量。

若要请求转换到 D0 电源状态,设备驱动程序会在其设备堆栈下发送 IRP_MN_SET_POWER 请求。 通过此堆栈中的 PDO,作为此设备的父级的总线驱动程序接收请求并通过为设备供电做出响应。 但是,如果总线驱动程序在未打开第二台未使用设备的情况下无法打开此设备,则总线驱动程序可以调用 PoFxNotifySurprisePowerOn 来减少未使用设备的功耗。

进入 PoFxNotifySurprisePowerOn 时, Pdo 参数表示的设备处于未初始化的 D0 电源状态。 在此状态下,设备中的所有组件通常都处于打开状态。 为了响应 PoFxNotifySurprisePowerOn 调用,PoFx 将设备配置为已初始化的 D0 状态。 在此配置期间,PoFx 将尽可能多的组件切换为低功率 Fx 电源状态。 如果可能,PoFx 会将设备配置为“热 D3”状态,这实际上是一种 D0 状态,其中设备中的所有单个组件都处于关闭状态。

PoFxNotifySurprisePowerOn 只能配置之前关闭设备时向 PoFx 注册的设备。 但是,除非总线驱动程序知道设备未注册,否则当设备打开时,总线驱动程序应调用 PoFxNotifySurprisePowerOn 作为副作用。

如果总线驱动程序在设备打开时无法调用此例程,则设备硬件可能会无限期地保持完全打开状态,在此期间,PoFx 假定设备保持 D3 (完全关闭) 电源状态。

仅当偶然打开设备时才调用 PoFxNotifySurprisePowerOn ,作为打开其他设备的副作用。 如果总线驱动程序将电源还原到设备以响应 DevicePowerRequiredCallback 回调或 D0 转换 IRP_MN_SET_POWER 请求,请改为调用 PoFxReportDevicePoweredOn 例程,以便在将电源还原到设备时通知 PoFx。

要求

要求
最低受支持的客户端 从Windows 8开始可用。
目标平台 通用
标头 wdm.h
Library Ntoskrnl.lib
DLL Ntoskrnl.exe
IRQL <= DISPATCH_LEVEL

另请参阅

DEVICE_OBJECT

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PoFxReportDevicePoweredOn