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
指定标识组件的索引。 此参数是设备驱动程序用于将设备注册到 PoFx 的 PO_FX_DEVICE 结构中的 Components 数组的索引。 如果 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开始。 |
目标平台 | 桌面 |
标头 | wdm.h (包括 Wudfwdm.h) |
IRQL | 在 IRQL <= DISPATCH_LEVEL 调用。 |