PoFxIssueComponentPerfStateChange 函数 (wdm.h)
PoFxIssueComponentPerfStateChange 例程提交将设备组件置于特定性能状态的请求。
语法
void PoFxIssueComponentPerfStateChange(
[in] POHANDLE Handle,
[in] ULONG Flags,
[in] ULONG Component,
[in] PPO_FX_PERF_STATE_CHANGE PerfChange,
[in] PVOID Context
);
参数
[in] Handle
表示向 PoFx 注册设备的句柄。 设备驱动程序以前从 PoFxRegisterDevice 例程收到此句柄。
[in] Flags
修改性能状态更改操作行为的标志。 将此成员设置为零或设置为以下标志之一 PO_FX_FLAG_XXX 位:
这两个标志位互斥。 有关详细信息,请参阅“备注”。
[in] Component
标识组件的索引。 此参数是设备驱动程序用于将设备注册到 PoFx 的 PO_FX_DEVICE 结构中的 Components 数组的索引。 如果 Components 数组包含 N 个元素,则组件索引的范围为 0 到 N–1。
[in] PerfChange
指向 PO_FX_PERF_STATE_CHANGE 结构的指针,该结构表示组件的新性能状态。
[in] Context
指向 ComponentPerfStateCallback 回调例程的上下文的指针。 此参数是可选的。 提供它,以便可以将驱动程序或设备上下文传递给回调例程。 如果未使用此参数,则必须将其设置为 NULL。
返回值
无
备注
当驱动程序调用 PoFxIssueComponentPerfStateChange 时,电源管理框架 (PoFx) 请求平台扩展插件 (PEP) ,以将组件的性能状态集置于指定的性能状态。 此例程可以与离散和基于范围的性能状态集类型一起使用。 有关离散和基于范围的性能状态集的详细信息,请参阅 PO_FX_PERF_STATE_TYPE。
如果 Flags = PO_FX_FLAG_BLOCKING,则 PoFxIssueComponentPerfStateChange 调用是同步的。 在这种情况下, PoFxIssueComponentPerfStateChange 将等待返回,直到组件完成性能状态转换。 调用驱动程序的 ComponentPerfStateCallback 例程以通知驱动程序组件的性能状态更改已完成。 此回调发生在调用 PoFxIssueComponentPerfStateChange 的同一线程中, 而 PoFxIssueComponentPerfStateChange 仅在 ComponentPerfStateCallback 回调返回后返回。
如果 Flags = PO_FX_FLAG_ASYNC_ONLY,则 PoFxIssueComponentPerfStateChange 调用是异步的。 在这种情况下, PoFxIssueComponentPerfStateChange 计划 ComponentPerfStateCallback 例程在另一个线程中发生,然后返回 ,而不等待回调发生。 回调可以在 PoFxIssueComponentPerfStateChange 返回之前或之后发生。 驱动程序应依赖于 ComponentPerfStateCallback 例程来确定组件何时完成到新性能状态的转换。
驱动程序可以设置 Flags = 0,以指示它不关心 PoFxIssueComponentPerfStateChange 调用是同步调用还是异步调用。 在这种情况下,PoFx 根据 PEP 是使用同步还是异步请求向组件发出性能状态更改来确定调用的同步性。
如果 标志 = PO_FX_FLAG_ASYNC_ONLY 或未传递任何标志,则此例程需要 IRQL <= DISPATCH_LEVEL。 如果 标志 = PO_FX_FLAG_BLOCKING,则此例程需要 = APC_LEVEL的 <IRQL。
无论调用的同步性如何,此函数始终会导致调用 ComponentPerfStateCallback 例程。 由于 PEP 可能选择拒绝更改性能状态的请求,因此驱动程序必须等到收到回调后再将性能状态提交到硬件。
每个组件一次只允许对 PoFxIssueComponentPerfStateChange 例程进行一次调用,无论该调用是同步调用还是异步调用。 发出性能状态更改请求后,驱动程序必须等待直到收到 ComponentPerfStateCallback ,然后才能再次调用此例程,即使请求涉及不同的性能状态集。 如果在等待 收到 ComponentPerfStateCallback 之前再次调用此例程,将发生 bug 检查。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 10 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h |
Library | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= APC_LEVEL 或 <= DISPATCH_LEVEL (请参阅备注部分) |