Hello All,
Basically my requirement is to perform some action after every fixed
time interval. I therefore create a "synchronization" type timer and
using KeSetTimerEx () i schedule the timer. But it looks like the
timer is not called at the time interval i need it to invoke the timer
callback routine. I check this using KeQuerySystemTime (). Following
are the steps:
1) KeInitializeTimerEx (&(pDevExt->myTimer), SynchronizationTimer);
KeInitializeDpc (&(pDevExt->myTimerDpc), myTimerRoutine, pKsDev);
2) timerDelay.QuadPart = -180000; // 18 ms
KeSetTimerEx (&(pDevExt->myTimer), timerDelay, 18,
&(pDevExt->myTimerDpc));
But what i observed to my dismay is that my myTimerRoutine () was
called at approximate intervals like:
15.625 ms
15.625 ms
15.625 ms
15.625 ms
31.250 ms
and so on as the pattern keeps repeating....
Any reason why this is happenning? Is it possible to make the timer
routine be called at the exact timer interval?
Also, i used KeSetTimerEx (&(pDevExt->myTimer), timerDelay,
&(pDevExt->myTimerDpc)); but the timer routine got invoked only once!
Is there something iam missing here? Can someone throw some light on
this?
Regards,
Hari.