PoStartDeviceBusy 函数 (wdm.h)
PoStartDeviceBusy 例程标记设备繁忙时段的开始时间。
语法
void PoStartDeviceBusy(
[in, out] PULONG IdlePointer
);
参数
[in, out] IdlePointer
指向空闲计数器的指针。 这是之前由 PoRegisterDeviceForIdleDetection 例程返回的指针值。 由于 PoRegisterDeviceForIdleDetection 可能会返回 NULL 指针,因此调用方必须先验证指针是否为非 NULL ,然后才能调用 PoStartDeviceBusy。
返回值
无
备注
PoStartDeviceBusy 和 PoEndDeviceBusy 例程标记设备繁忙时间段的开始和结束时间。 每次调用 PoStartDeviceBusy 后,都必须有对 PoEndDeviceBusy 的相应调用。
对于每个设备, 电源管理器 维护尚未收到相应的 PoEndDeviceBusy 呼叫的未完成 PoStartDeviceBusy 呼叫数的计数。 PoStartDeviceBusy 调用会将忙碌计数递增 1。 PoEndDeviceBusy 调用将忙碌计数减一。 非零忙计数会禁用设备的空闲计数器。 忙碌计数达到零后,电源管理器将空闲计数器重置为超时期限,并启用计数器。
可以调用 PoSetDeviceBusy 例程 (或 PoSetDeviceBusy 宏) ,而不是使用 PoStartDeviceBusy 和 PoEndDeviceBusy 例程重置空闲计数器。 若要在较长的繁忙时段禁用空闲计数器,驱动程序可以调用 PoRegisterDeviceForIdleDetection 例程,以在繁忙时段开始和结束时禁用和启用空闲通知。 但是, PoStartDeviceBusy 和 PoEndDeviceBusy 通常更方便用于此目的,你应该考虑在为 Windows 7 和更高版本的 Windows 编写的新代码中使用这些例程。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从 Windows 7 开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 |