PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK回调函数 (wdm.h)

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

语法

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK PoFxComponentActiveConditionCallback;

void PoFxComponentActiveConditionCallback(
  [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。

返回值

备注

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

若要访问处于空闲状态的组件,驱动程序可以调用 PoFxActivateComponent 例程将组件切换到活动条件。 如果在调用 PoFxActivateComponent 时组件尚未处于活动状态,则 PoFx 会启动到活动条件的转换,然后调用 ComponentActiveConditionCallback 例程,以在转换完成后通知驱动程序。

无论驱动程序是否调用 PoFxActivateComponent 来启动转换,驱动程序都会收到 ComponentActiveConditionCallback 回调,无论组件完成到活动条件的转换。 例如,在将 即插即用 IRP系统集电源 IRP 发送给驱动程序之前,Windows 内核可能会代表驱动程序激活组件。

示例

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

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

PO_FX_COMPONENT_ACTIVE_CONDITION_CALLBACK MyComponentActiveConditionCallback;

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

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

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

要求

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

另请参阅

PO_FX_DEVICE

PoFxActivateComponent