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
指向设备上下文的指针。 设备驱动程序使用此上下文来存储有关设备的当前电源状态的信息。 设备驱动程序在 DeviceContext 中指定了此指针, 该指针 PO_FX_DEVICE 结构的成员,驱动程序用于向电源管理框架(PoFx)注册设备。 此上下文对 PoFx 不透明。
[in] Component
标识组件的索引。 此参数是设备驱动程序用于向 PoFx 注册设备的 组件 数组 PO_FX_DEVICE 结构中的索引。 如果 组件 数组包含 N 个元素,则组件索引的范围从 0 到 N–1。
返回值
没有
言论
当驱动程序不再需要访问处于活动状态的组件时,驱动程序应调用 PoFxIdleComponent 例程将组件切换到空闲条件。 为了响应 PoFxIdleComponent 调用,PoFx 启动到空闲条件的转换,然后调用 ComponentIdleConditionCallback 例程,以在完成此转换时通知驱动程序。
驱动程序必须调用 PoFxCompleteIdleCondition,以响应每个 ComponentIdleConditionCallback 回调。 PoFxCompleteIdleCondition 调用可以在 ComponentIdleConditionCallback 回调或回调返回后发生。 驱动程序应在调用 PoFxCompleteIdleCondition之前完成需要访问硬件组件的任何工作。 此调用后,组件可能不会保持 F0 电源状态。
仅当组件处于活动状态时,才能安全地访问组件。 不要依赖组件的 Fx 电源状态来确定是否可以访问该组件。 如果组件处于 F0 状态并且处于空闲状态,则组件可能即将切换到另一个 Fx 状态。
例子
若要定义 ComponentIdleConditionCallback 回调例程,必须先提供一个函数声明来标识要定义的回调例程的类型。 Windows 为驱动程序提供一组回调函数类型。 使用回调函数类型声明函数有助于 驱动程序代码分析、静态驱动程序验证程序(SDV)和其他验证工具查找错误,这是为 Windows作系统编写驱动程序的要求。
例如,若要定义名为 MyComponentIdleConditionCallback
的 ComponentIdleConditionCallback 回调例程,请使用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。 |