PoQueryWatchdogTime 例程指示电源管理器是否为当前分配给设备堆栈的任何电源 IRP 启用了监视程序超时计数器。
语法
BOOLEAN PoQueryWatchdogTime(
[in] PDEVICE_OBJECT Pdo,
[out] PULONG SecondsRemaining
);
参数
[in] Pdo
指向物理设备对象的指针(PDO)。 此参数指向表示物理设备的 DEVICE_OBJECT 结构。
[out] SecondsRemaining
指向例程写入时间(以秒为单位)的位置的指针,该时间将保留在下一个电源监视器超时之前进行。
返回值
PoQueryWatchdogTime 如果当前向设备堆栈分配启用了监视器的电源 IRP,则返回 TRUE。 否则,它将返回 FALSE。
言论
此例程使内核模式驱动程序能够监视电源管理器已启用的监视器超时计数器,以跟踪已颁发的电源 IRP。 如果当前启用了一个或多个监视器超时计数器,则例程将返回 TRUE,并提供在下次超时之前保留的时间量。
例如,关闭设备时遇到延迟的驱动程序可以调用此例程来确定驱动程序必须响应电源 IRP 之前所保留的时间,以防止作系统的受控关闭(bug 检查)。
当电源管理器向设备堆栈发出电源 IRP 时,电源管理器会设置监视器超时计数器。 此计数器的超时期限通常为几分钟。 如果堆栈中的设备无响应,导致 IRP 在超时期间停止,则电源管理器会将此条件视为不可恢复的错误,并启动作系统的受控关闭。
如果当前启用了多个电源监视器超时,则例程将 *SecondsRemaining 到下一次超时的时间。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 7 |
目标平台 | 普遍 |
标头 | ntifs.h (包括 Wdm.h、Ntddk.h、Ntifs.h) |
库 | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= DISPATCH_LEVEL |