PoSetDeviceBusyEx 函数 (wdm.h)
PoSetDeviceBusyEx 例程通知电源管理器与指定的空闲计数器关联的设备正忙。
语法
void PoSetDeviceBusyEx(
[in, out] PULONG IdlePointer
);
参数
[in, out] IdlePointer
指向空闲计数器的指针。 这是之前由 PoRegisterDeviceForIdleDetection 例程返回的指针值。 由于 PoRegisterDeviceForIdleDetection 可能返回 NULL 指针,因此调用方必须先验证指针是否为非 NULL ,然后才能调用 PoSetDeviceBusyEx。
返回值
无
备注
此例程直接替代 PoSetDeviceBusy 宏。 如果你正在为 Windows Vista Service Pack 1 (SP1) 和更高版本的 Windows 编写新驱动程序代码,请调用 PoSetDeviceBusyEx,而不要调用 PoSetDeviceBusy。
驱动程序调用 PoSetDeviceBusyEx 和 PoRegisterDeviceForIdleDetection 例程,以为其设备启用系统空闲检测。 如果已注册进行空闲检测的设备在驱动程序指定的超时期限内保持空闲状态,则电源管理器会发送 IRP_MN_SET_POWER 请求,以将设备置于请求的睡眠状态。
PoSetDeviceBusyEx 报告设备正忙,以便电源管理器可以重启其空闲倒计时。 如果设备处于睡眠状态, 则 PoSetDeviceBusyEx 不会更改设备的状态。 也就是说,它不会导致系统发送 IRP_MN_SET_POWER 请求来唤醒设备。
PoSetDeviceBusyEx 设计用于与空闲计数器的超时时间相比相对较短的 I/O 操作。 对于可能超过此时间段的较长操作,请改用 PoStartDeviceBusy 和 PoEndDeviceBusy 例程。
对简短 I/O 操作发出多个请求的驱动程序应为其发出的每个 I/O 请求调用 PoSetDeviceBusyEx 。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows Vista SP1 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |