做过一个指针设备回报率在线检测工具Pointer Report Rate Checker,我发现:一个 1000Hz 回报率的鼠标随便动动就能造成 20%的 CPU 使用率( CPU:Core i7-7920HQ )。 像 Chrome 、Firefox 浏览器默认会对鼠标移动事件作 vsync 处理,使得鼠标事件的触发频率不高于显示器刷新率,初步省去了事件处理不过来麻烦,尽管有些开发者可能还会对鼠标事件进一步作 throttle 处理来提高应用程序的流畅性。 想开发一个筛选驱动程序,试图对指针设备高回报率的报告进行降频处理,从而减少不必要的 CPU 消耗。 参考了 Windows 驱动开发指南,还不确定通过Filter Drivers能否实现上述构想。 鼠标, 驱动, 事件, 回报率
看了下文档 https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/keyboard-and-mouse-hid-client-drivers https://learn.microsoft.com/en-us/windows-hardware/drivers/hid/3rd-party-filter-drivers https://learn.microsoft.com/en-us/previous-versions/ff542379(v=vs.85) 需要实现一个 MouFilter_IsrHook 回调函数,这个函数会在鼠标中断服务例程( ISR )被调用时被调用。 可以在这个函数中修改,例如,你可以让函数每隔一段时间只处理一次中断,而忽略其他的中断。这可以通过在函数中添加一个计时器,并在每次处理中断时重置计时器来实现。 理论上能实现,但是细节会很复杂。 但是我怀疑你这是 X-Y Problem 啊,话说你提到的 “一个 1000Hz 回报率的鼠标随便动动就能造成 20%的 CPU 使用率( CPU:Core i7-7920HQ ” 你确定系统版本、厂商驱动什么的都很正常吗?或者其他什么原因?
才发现有中文版,包含了 Moufiltr 示例,https://learn.microsoft.com/zh-cn/windows-hardware/drivers/hid/keyboard-and-mouse-hid-client-drivers