PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK回调函数 (wdm.h)

ComponentIdleConditionCallback 回调例程通知驱动程序指定的组件已完成从活动条件到空闲条件的转换。

语法

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK PoFxComponentIdleConditionCallback;

void PoFxComponentIdleConditionCallback(
  [in] PVOID Context,
  [in] ULONG Component
)
{...}

参数

[in] Context

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

[in] Component

标识组件的索引。 此参数是设备驱动程序用于将设备注册到 PoFx 的 PO_FX_DEVICE 结构中的 Components 数组的索引。 如果 Components 数组包含 N 个元素,则组件索引的范围为 0 到 N–1。

返回值

备注

当驱动程序不再需要访问处于活动状态的组件时,驱动程序应调用 PoFxIdleComponent 例程,以将组件切换到空闲条件。 为了响应 PoFxIdleComponent 调用,PoFx 启动到空闲条件的转换,然后调用 ComponentIdleConditionCallback 例程,以便在完成此转换时通知驱动程序。

驱动程序必须调用 PoFxCompleteIdleConditionCondition 以 响应每个 ComponentIdleConditionCallback 回调。 PoFxCompleteIdleCondition 调用可以在 ComponentIdleConditionCallback 回调期间或回调返回后发生。 在调用 PoFxCompleteIdleCondition 之前,驱动程序应完成需要访问硬件组件的任何工作。 此调用后,组件可能不会保持 F0 电源状态。

仅当组件处于活动状态时,才能安全地访问组件。 不要依赖组件的 Fx 电源状态来确定是否可以访问该组件。 如果组件处于 F0 状态并且处于空闲状态,则组件可能即将切换到另一种 Fx 状态。

示例

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

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

PO_FX_COMPONENT_IDLE_CONDITION_CALLBACK MyComponentIdleConditionCallback;

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

_Use_decl_annotations_
VOID
  MyComponentIdleConditionCallback(
    PVOID Context,
    ULONG Component
    )
  {
      // Function body
  }

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

要求

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

另请参阅

PO_FX_DEVICE

PoFxCompleteIdleCondition