we have a low latency, high channel count kernel audio streaming driver which operates on user-kernel space shared ringbuffers. It clocks its user space ASIO client .dll from an IRQ signalling DPC via a shared user space event. So the actual continuous streaming is IOCTL-less.
While streaming on some of our test machines we see a significant DPC latency increase (0.7ms!) when the CPU enters its C-idle state.
Now, I am investigating how to inform Windows that the driver is not idling. From the amount of IRQ signalling DPCs I would assume its pretty clear that there is something heavy going on, but anyways. The closest I found seems to be the "Component-Level Performance State Management". However the msdn is unclear (at least to me) if this is just a feature which informs the drivers so it can organize performance states of its devices or if it by itself controls the system performances states (and as a consequence can prevent the CPU from falling into C-idle).
Would you please share some inside!
Thanks and Cheers,