PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK回调函数 (wdm.h)

DevicePowerNotRequiredCallback 回调例程通知设备驱动程序,设备不需要保持 D0 电源状态。

语法

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK PoFxDevicePowerNotRequiredCallback;

void PoFxDevicePowerNotRequiredCallback(
  [in] PVOID Context
)
{...}

参数

[in] Context

指向设备上下文的指针。 设备驱动程序使用此上下文来存储有关设备当前电源状态的信息。 设备驱动程序在PO_FX_DEVICE结构的 DeviceContext 成员中指定了此指针,驱动程序用于将设备注册到电源管理框架 (PoFx) 。 此上下文对 PoFx 是不透明的。

返回值

备注

当 PoFx 调用驱动程序的 DevicePowerNotRequiredCallback 例程时,驱动程序必须首先决定是通过在设备堆栈) 发送 IRP_MN_SET_POWER 请求来启动到低功率 Dx 状态 (转换,还是保持 D0 状态。 接下来,驱动程序必须调用 PoFxCompleteDevicePowerNotRequired 例程,以通知 PoFx 驱动程序已完成对 DevicePowerNotRequiredCallback 回调的响应。 驱动程序可以在 DevicePowerNotRequiredCallback 例程返回之前或之后调用 PoFxCompleteDevicePowerNotRequired

当设备处于 D0 状态,并且设备中组件的 Fx 状态或活动/空闲条件发生更改时,PoFx 会评估设备是否可以进入低功率 Dx 状态或必须保持 D0 状态。 如果设备可以进入低功率 Dx 状态,PoFx 将调用驱动程序的 DevicePowerNotRequiredCallback 例程。

如果设备进入低功率 Dx 状态以响应 DevicePowerNotRequiredCallback 回调,但 PoFx 稍后确定设备必须进入 D0 状态,则 PoFx 将调用驱动程序的 DevicePowerRequiredCallback 例程。 为了响应此调用,设备必须进入 D0 状态。

示例

若要定义 DevicePowerNotRequiredCallback 回调例程,必须首先提供一个函数声明,用于标识要定义的回调例程的类型。 Windows 为驱动程序提供一组回调函数类型。 使用回调函数类型声明函数有助于 驱动程序代码分析静态驱动程序验证程序 (SDV) 和其他验证工具查找错误,并且这是编写适用于 Windows 操作系统的驱动程序的要求。

例如,若要定义名为 MyDevicePowerNotRequiredCallbackDevicePowerNotRequiredCallback 回调例程,请使用PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK类型,如以下代码示例所示:

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK MyDevicePowerNotRequiredCallback;

然后,按如下所示实现回调例程:

_Use_decl_annotations_
VOID
  MyDevicePowerNotRequiredCallback(
    PVOID Context
    )
  {
      // Function body
  }

PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK函数类型在 Wdm.h 头文件中定义。 若要在运行代码分析工具时更准确地识别错误,请务必将 _Use_decl_annotations_ 注释添加到函数定义。 注释 _Use_decl_annotations_ 可确保使用应用于头文件中PO_FX_DEVICE_POWER_NOT_REQUIRED_CALLBACK函数类型的注释。 有关函数声明要求的详细信息,请参阅 使用 WDM 驱动程序的函数角色类型声明函数。 有关 的信息 _Use_decl_annotations_,请参阅 批注函数行为

要求

要求
最低受支持的客户端 从 Windows 8 开始支持。
目标平台 桌面
标头 wdm.h (包括 Wudfwdm.h)
IRQL 在 IRQL <= DISPATCH_LEVEL 调用。

另请参阅

DevicePowerRequiredCallback

IRP_MN_SET_POWER

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice