ExSetTimerResolution不起作用

时间:2015-07-14 19:25:55

标签: windows drivers

我的计算机上安装了Windows XP。 我希望每隔10毫秒调用一次DPC例程。

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

    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向我显示返回值(RESOLUTION)等于156250。

结果我的DPC例程每15.5毫秒被调用

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

这是我得到的:

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

左列包含我用作DesiredTime参数的值。 右列包含返回值。

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