exSetTimerResolution 函数 (wdm.h)
ExSetTimerResolution 例程修改系统时钟中断的频率。 请谨慎使用此例程 (请参阅以下“备注”部分) 。
语法
ULONG ExSetTimerResolution(
[in] ULONG DesiredTime,
[in] BOOLEAN SetResolution
);
参数
[in] DesiredTime
指定每次计时器中断之间应经过的时间量(以 100 纳秒为单位)。 最小值大约为 10,000 (1 毫秒) 但可能因平台而略有不同。 (如果 SetResolution 为 FALSE.) ,则忽略此参数
[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) |