ExSetTimerResolution 函数 (wdm.h)

ExSetTimerResolution 例程修改系统时钟中断的频率。 请谨慎使用此例程(请参阅以下“备注”部分)。

语法

ULONG ExSetTimerResolution(
  [in] ULONG   DesiredTime,
  [in] BOOLEAN SetResolution
);

参数

[in] DesiredTime

指定每个计时器中断(以 100 纳秒为单位)之间应经过的时间量。 最小值约为 10,000(1 毫秒),但平台可能会略有不同。 (如果 SetResolutionFALSE,则忽略此参数。

[in] SetResolution

如果 TRUE,则调用请求将时钟中断频率设置为 DesiredTime指定的值。 如果 FALSE,则调用是将时钟中断频率还原到系统的默认值(特定于平台)的请求。

返回值

ExSetTimerResolution 以 100 纳秒为单位返回新的计时器分辨率。

言论

若要设置计时器解析,驱动程序调用此例程,将 TRUE 作为 SetResolution的参数。 以下规则适用:

  • 仅当指定的 DesiredTime 值小于当前设置时,例程才会更改时钟中断频率。

  • 如果驱动程序请求 DesiredTime 大于当前设置的值,则例程只返回当前设置。

  • 如果驱动程序请求 DesiredTime 小于系统时钟可以支持的值,则例程使用系统可以支持的最小分辨率,并返回该值。

如果使用此例程更改时钟中断频率,驱动程序必须还原默认中断频率,通常是在卸载之前进行以下调用:

ExSetTimerResolution (0, FALSE);

如果多个驱动程序尝试修改时钟中断频率,则系统不会还原默认频率,直到所有这些驱动程序都调用了 SetResolution 值为 FALSE的例程。

更改时钟中断频率的结果是系统范围的,可能对系统性能产生严重负面影响。 另请注意,更高的时钟中断频率可以缩短系统的电池使用时间。

在处理 IRP_MJ_POWER 请求期间,电源管理器对 ExSetTimerResolution 必须获取才能完成的资源持有锁。 因此,如果驱动程序在处理电源请求时直接或间接调用 ExSetTimerResolution,则会发生死锁,然后等待调用 ExSetTimerResolution 在驱动程序完成电源请求之前返回。 有关在处理电源 IRP 时安全地调用 ExSetTimerResolution 的详细信息,请参阅 处理 Power IRP时调用 ExSetTimerResolution。

要求

要求 价值
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h、Ntifs.h)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDIs(storport)IrqlExApcLte2(wdm)

另请参阅

KeSetTimerEx