有没有开发过 Windows 驱动程序的?咨询想法可行性

348 天前
 fuweichin

做过一个指针设备回报率在线检测工具Pointer Report Rate Checker,我发现:一个 1000Hz 回报率的鼠标随便动动就能造成 20%的 CPU 使用率( CPU:Core i7-7920HQ )。

像 Chrome 、Firefox 浏览器默认会对鼠标移动事件作 vsync 处理,使得鼠标事件的触发频率不高于显示器刷新率,初步省去了事件处理不过来麻烦,尽管有些开发者可能还会对鼠标事件进一步作 throttle 处理来提高应用程序的流畅性。

想开发一个筛选驱动程序,试图对指针设备高回报率的报告进行降频处理,从而减少不必要的 CPU 消耗。

参考了 Windows 驱动开发指南,还不确定通过Filter Drivers能否实现上述构想。

1809 次点击
所在节点    程序员
8 条回复
GeekGao
348 天前
看了下文档 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 ” 你确定系统版本、厂商驱动什么的都很正常吗?或者其他什么原因?
GeekGao
348 天前
murmur
348 天前
你学驱动开发不如买个新电脑,至少也得是 12 代 i5 以上的吧
112211aabbcc
348 天前
没有开发过鼠标相关驱动,能否实现不评价

但是要提醒一下,不知道是自用还是商用。
如果是商用,开发出来的驱动想要安装在 Windows 上,还需要找微软帮你签名才能正常安装不报错,当然这个签名是要成为微软会员然后才会给你签的。
如果是自用的话,关闭驱动强制校验签名也是可行的,但是目前没有永久关闭的方法,也就是说每次电脑重启开机就会要重新关签名校验,重新安装驱动。。。。。。
112211aabbcc
348 天前
@112211aabbcc #4 更正一下 好像有永久关闭驱动强制校验签名的方法
laqow
348 天前
这 CPU 不是 canvas 绘图占的吗?在 C 甚至 AHK 下处理鼠标事件也这个 CPU 占用?
fuweichin
347 天前
最近买了个 Surface Precision Mouse 测试平滑滚动,实测 BLE 连接回报率 133Hz 左右,USB 连接回报率 1000Hz 。
fuweichin
311 天前

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/995385

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX