I have the need for a timer that will fire at a rate of 400 Hz, on an XP
system. On my system, the KeQueryTimeIncrement call tells me my system
timer only has a granularity of about 64 Hz.
To complicate things a bit further, this driver will need to run on a wide
range of laptops, all of which I assume could have different system timer
granularities.
My driver is also performing high speed isochronous data transfer over USB.
I’ve explored the possibility of checking the system time as part of the
processing of the isochronous packets, but have found that the granularity
of the KeQuerySystemTime is only 10 msec, which isn’t small enough. I could
possibly use KeQueryPerformanceCounter, but the documentation indicates
calling this too frequently would degrade system performance.
The only solution I seem to see, is to have another isochronous pipe, which
will return data to my driver at a rate of exactly 400 Hz (a hardware timer
in the device can do this). This pipe would be acting purely as a timer
for my driver. I don’t think this is a very clean solution, so was
wondering if anybody else has another idea?
thanks,
Jeff Helmers