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