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) |