我的计算机上安装了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毫秒被调用
我做错了什么?
答案 0 :(得分:1)
出于好奇,我尝试了不同值的ExSetTimerResolution。
这是我得到的:
10000 -> 9766
50000 -> 39063
75000 -> 39063
90000 -> 156250
左列包含我用作DesiredTime参数的值。 右列包含返回值。
正如您所看到的,Windows似乎无法将全局计时器分辨率更改为任何所需的数字。