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)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <= APC_LEVEL
DDI 符合性规则 HwStorPortProhibitedDDI (storport) IrqlExApcLte2 (wdm)

另请参阅

KeSetTimerEx