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

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

返回值

备注

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

驱动程序必须调用 PoFxCompleteIdleCondition, 才能响应每个 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 开始。
目标平台 桌面
Header wdm.h (包括 Wudfwdm.h)
IRQL 在 IRQL <中调用 = DISPATCH_LEVEL。

另请参阅

PO_FX_DEVICE

PoFxCompleteIdleCondition