ExSetTimerResolution 不起作用

ExSetTimerResolution does not work

我的电脑上安装了 Windows XP。 我希望我的 DPC 例程每 10 毫秒调用一次。

这就是我写这段代码的原因:

    ASSERT( KeGetCurrentIrql() <= APC_LEVEL );
    KeRaiseIrql( APC_LEVEL, &level );

    resolution = ExSetTimerResolution( 100000, TRUE );
    KdPrint((DRIVERNAME " - RESOLUTION = %d\n", resolution));

    KeLowerIrql( level );

    KeSetTimerEx( &pExt->timer, duetime, 10, &pExt->dpc );

DebugView 显示 return 值(分辨率)等于 156250。

因此,我的 DPC 例程每 15.5 毫秒调用一次

我做错了什么?

出于好奇,我尝试了不同值的 ExSetTimerResolution。

这是我得到的:

10000 -> 9766
50000 -> 39063
75000 -> 39063
90000 -> 156250

左列包含我用作 DesiredTime 参数的值。 右列包含 return 个值。

如您所见,Windows 似乎无法将全局计时器分辨率更改为任何所需的数字。