On my machine, one call to QueryPerformanceCounter() seems to take about 80 ns.
How does that compare to e.g. QueryInterruptTime()?
Currently in Wine Query(Unbiased)InterruptTime has the same resolution as GetTickCount(), which is "16 ms or whenever someone does a server call". That's not good enough here.
Well, I was mostly interested in the relative call overhead. It's perhaps worth pointing out though that even without a callback, just calling SetWaitableTimer() with a 1 ms period would probably get the resolution close enough for our purposes. Whether that's a good idea is perhaps a separate discussion, but it would do for testing purposes at least.