gpt4 book ai didi

c++ - 访问 HID 顶级集合慢

转载 作者:可可西里 更新时间:2023-11-01 11:50:42 25 4
gpt4 key购买 nike

简要说明:

  • 我的 HID 设备拥有许多顶级收藏。
  • 应用程序不断查询收集详细信息。
  • 瓶颈是 - SetupDiGetClassDevs() 似乎非常慢。

详细说明:

我的代码基本遵循MS recommendations关于如何查找和获取 HID 集合的句柄。然后,我使用这个句柄获取相应的预解析数据,从中获取我需要的数据。

目前,每当用户需要获取数据(例如按钮数量、轴最小值/最大值)时,我的代码都会执行此操作。这是一项缓慢的业务。探查器清楚地表明罪魁祸首是 SetupDiGetClassDevs(),它似乎非常慢。

不可能保存句柄(或者我认为),因为它可能会阻止系统进行更改,例如删除设备或重新排列设备。我仍然需要看看如果我在整个 session 中保持顶级句柄打开会发生什么。

我正在考虑的另一个选择是保存预解析数据。 MS 通过调用 HidD_FreePreparsedData() 请求我们释放它。如果我们不这样做会怎样?

我最后想到的是加速 SetupDiGetClassDevs()。我目前的用法是:

HDEVINFO hardwareDeviceInfo = 
SetupDiGetClassDevs (
&HidGuid,
NULL, // Define no enumerator (global)
NULL, // Define no
(DIGCF_PRESENT | // Only Devices present
DIGCF_DEVICEINTERFACE)); // Function class devices.

如果我改变参数会加速吗?

最佳答案

使用完设备后,只需释放准备好的数据即可。如果设备被移除,对其的读取或写入将失败,您可以通过调用 GetLastError()

查看错误代码来检测到这一点

关于c++ - 访问 HID 顶级集合慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30569599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com