V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fuweichin
V2EX  ›  程序员

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

  •  
  •   fuweichin ·
    FuweiChin · 355 天前 · 1813 次点击
    这是一个创建于 355 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    8 条回复    2024-01-02 21:18:27 +08:00
    GeekGao
        1
    GeekGao  
       355 天前
    看了下文档 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
        2
    GeekGao  
       355 天前
    murmur
        3
    murmur  
       355 天前
    你学驱动开发不如买个新电脑,至少也得是 12 代 i5 以上的吧
    112211aabbcc
        4
    112211aabbcc  
       354 天前
    没有开发过鼠标相关驱动,能否实现不评价

    但是要提醒一下,不知道是自用还是商用。
    如果是商用,开发出来的驱动想要安装在 Windows 上,还需要找微软帮你签名才能正常安装不报错,当然这个签名是要成为微软会员然后才会给你签的。
    如果是自用的话,关闭驱动强制校验签名也是可行的,但是目前没有永久关闭的方法,也就是说每次电脑重启开机就会要重新关签名校验,重新安装驱动。。。。。。
    112211aabbcc
        5
    112211aabbcc  
       354 天前
    @112211aabbcc #4 更正一下 好像有永久关闭驱动强制校验签名的方法
    laqow
        6
    laqow  
       354 天前
    这 CPU 不是 canvas 绘图占的吗?在 C 甚至 AHK 下处理鼠标事件也这个 CPU 占用?
    fuweichin
        7
    fuweichin  
    OP
       354 天前
    最近买了个 Surface Precision Mouse 测试平滑滚动,实测 BLE 连接回报率 133Hz 左右,USB 连接回报率 1000Hz 。
    fuweichin
        8
    fuweichin  
    OP
       318 天前
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2179 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 00:31 · PVG 08:31 · LAX 16:31 · JFK 19:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.