PoQueryWatchdogTime 函数 (ntifs.h)

PoQueryWatchdogTime 例程指示电源管理器是否为当前分配给设备堆栈的任何电源 IRP 启用了监视器超时计数器。

语法

BOOLEAN PoQueryWatchdogTime(
  [in]  PDEVICE_OBJECT Pdo,
  [out] PULONG         SecondsRemaining
);

参数

[in] Pdo

指向物理设备对象的指针 (PDO) 。 此参数指向表示物理设备的 DEVICE_OBJECT 结构。

[out] SecondsRemaining

指向一个位置的指针,其中例程将下一个电源监视器超时设置为发生之前保留的时间(以秒为单位)。

返回值

如果当前已将已启用监视器的电源 IRP 分配给设备堆栈,则 PoQueryWatchdogTime 返回 TRUE。 否则,返回 FALSE。

注解

此例程使内核模式驱动程序能够监视监视电源管理器启用的监视器超时计数器,以跟踪其发出的电源 IRP。 如果当前启用了一个或多个监视器超时计数器,则例程将返回 TRUE 并提供下一次超时之前剩余的时间量。

例如,在关闭设备时遇到延迟的驱动程序可以调用此例程来确定驱动程序必须响应电源 IRP 以防止受控关闭 (操作系统检查) bug 之前剩余的时间。

电源管理器在向设备堆栈发出电源 IRP 时设置监视器超时计数器。 此计数器的超时期限通常为几分钟。 如果堆栈中的设备无响应,导致 IRP 在超时期间停止,则电源管理器会将此情况视为不可恢复的错误,并启动操作系统的受控关闭。

如果当前启用了多个电源监视器超时,则例程会将 *SecondsRemaining 设置为保留到下一次超时的时间。

要求

要求
最低受支持的客户端 Windows 7
目标平台 通用
标头 ntifs.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

另请参阅

DEVICE_OBJECT