PO_FX_DEVICE_POWER_REQUIRED_CALLBACK回调函数 (wdm.h)

DevicePowerRequiredCallback 回调例程通知设备驱动程序设备必须进入并保持 D0 电源状态。

语法

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK PoFxDevicePowerRequiredCallback;

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

参数

[in] Context

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

返回值

备注

在 PoFx 调用驱动程序的 DevicePowerRequiredCallback 例程后,如果设备尚未处于 D0 状态,则驱动程序必须发送 D0 IRP (设备堆栈) IRP_MN_SET_POWER 请求,从而启动到 D0 状态的转换。 驱动程序完成 (并且所有低级驱动程序完成此请求) 处理后,驱动程序必须调用 PoFxReportDevicePoweredOn 例程。 PoFxReportDevicePoweredOn 调用通知 PoFx 设备已完成对 DevicePowerRequiredCallback 调用的响应。 驱动程序可以在 DevicePowerRequiredCallback 调用期间或之后调用 PoFxReportDevicePoweredOn

每次调用 DevicePowerRequiredCallback 例程时,驱动程序都必须通过调用 PoFxReportDevicePoweredOn 做出响应。 PoFxReportDevicePoweredOn 调用可以在 DevicePowerRequiredCallback 调用期间或之后发生。 无论不需要 D0 IRP、D0 IRP 请求失败还是已调度的 D0 IRP 成功或失败,驱动程序都必须调用 PoFxReportDevicePoweredOn

仅当 PoFx 之前调用驱动程序的 DevicePowerNotRequiredCallback 例程来通知驱动程序设备不需要保持 D0 状态时,PoFx 才会调用 DevicePowerRequiredCallback 例程。

驱动程序调用 PoFxCompleteDevicePowerNotRequired 以完成 DevicePowerNotRequiredCallback 回调后,随时可能会调用 DevicePowerRequiredCallback 例程。 DevicePowerRequiredCallback 调用不一定因驱动程序执行的操作(例如请求组件更改为活动条件)而发生。

示例

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

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

PO_FX_DEVICE_POWER_REQUIRED_CALLBACK MyDevicePowerRequiredCallback;

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

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

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

要求

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

另请参阅

DevicePowerNotRequiredCallback

PO_FX_DEVICE

PoFxCompleteDevicePowerNotRequired

PoFxRegisterDevice

PoFxReportDevicePoweredOn