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 似乎无法将全局计时器分辨率更改为任何所需的数字。
我的电脑上安装了 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 似乎无法将全局计时器分辨率更改为任何所需的数字。