PoFxSetDeviceIdleTimeout 函数 (wdm.h)
PoFxSetDeviceIdleTimeout 例程指定从设备的最后一个组件进入空闲状态到电源管理框架 (PoFx) 调用驱动程序的 DevicePowerNotRequiredCallback 例程的最短时间间隔。
语法
void PoFxSetDeviceIdleTimeout(
[in] POHANDLE Handle,
[in] ULONGLONG IdleTimeout
);
参数
[in] Handle
表示设备在 PoFx 中注册的句柄。 设备驱动程序以前从 PoFxRegisterDevice 例程收到此句柄。
[in] IdleTimeout
空闲超时间隔(以 100 纳秒为单位)。 有关详细信息,请参阅“备注”。
返回值
无
备注
此例程指定 PoFx 的超时间隔,以应用于对驱动程序的 DevicePowerNotRequiredCallback 回调例程的未来调用。 默认情况下,此超时间隔为零,在这种情况下,PoFx 可能会在设备准备好切换到低功耗 Dx 状态时立即调用 DevicePowerNotRequiredCallback 例程。 但是,驱动程序可能更愿意延迟此转换,并让设备保持 D0 电源状态,等待一些额外的超时间隔。 在这种情况下,如果设备在超时间隔结束前变为活动状态,因此需要保持 D0 状态,则不再需要挂起的 DevicePowerNotRequiredCallback 调用,PoFx 会取消。
例如,为了提高性能并减少磨损,存储设备驱动程序可能希望阻止旋转的驱动器进入 D3 并减速,直到驱动器空闲足够长的时间。 为了简化此驱动程序实现 DevicePowerNotRequiredCallback 回调例程, PoFxSetDeviceIdleTimeout 例程使驱动程序能够自动延迟 D3 转换,而无需驱动程序设置计时器。
当设备的所有组件完成到空闲条件的转换时,超时间隔开始。 通常,PoFx 将等待到超时间隔结束,以调用 DevicePowerNotRequiredCallback 例程。 但是,如果 PoFx 准备进入低功耗系统状态,则 PoFx 可能会提前结束超时间隔。 在任何情况下,当 PoFx 调用驱动程序的 DevicePowerNotRequiredCallback 例程时,驱动程序应切换到低功率 Dx 状态,而不会进一步延迟。
每次条件更改需要更改空闲超时间隔时,设备驱动程序都可以调用 PoFxSetDeviceIdleTimeout 。 每次调用后,新的空闲超时间隔将一直有效,直到驱动程序再次调用 PoFxSetDeviceIdleTimeout 来更新它。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 8开始可用。 |
目标平台 | 通用 |
标头 | wdm.h |
Library | Ntoskrnl.lib |
DLL | Ntoskrnl.exe |
IRQL | <= DISPATCH_LEVEL |