Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对HID顶级收藏的访问速度较慢 简要说明: 我的HID设备拥有许多顶级收藏 应用程序不断查询集合详细信息 瓶颈是-SetupDiGetClassDevs()似乎非常慢 详细说明:_C++_Windows_Collections_Driver_Hid - Fatal编程技术网

C++ 对HID顶级收藏的访问速度较慢 简要说明: 我的HID设备拥有许多顶级收藏 应用程序不断查询集合详细信息 瓶颈是-SetupDiGetClassDevs()似乎非常慢 详细说明:

C++ 对HID顶级收藏的访问速度较慢 简要说明: 我的HID设备拥有许多顶级收藏 应用程序不断查询集合详细信息 瓶颈是-SetupDiGetClassDevs()似乎非常慢 详细说明:,c++,windows,collections,driver,hid,C++,Windows,Collections,Driver,Hid,我的代码基本上遵循如何查找和获取HID集合的句柄。然后,我使用这个句柄来获得相应的准备好的数据,从中我可以得到我需要的数据 目前,每当用户需要获取数据时(例如按钮数量、轴最小值/最大值),我的代码都会这样做。这是一件缓慢的事情。探查器明确指出,罪魁祸首是SetupDiGetClassDevs(),这似乎非常缓慢 不可能保存句柄(或者我认为是这样),因为它可能会阻止系统进行更改,例如移除设备或重新排列设备。我仍然需要看看如果在整个会话中打开顶级句柄会发生什么 我考虑的另一个选择是保存准备好的数据。

我的代码基本上遵循如何查找和获取HID集合的句柄。然后,我使用这个句柄来获得相应的准备好的数据,从中我可以得到我需要的数据

目前,每当用户需要获取数据时(例如按钮数量、轴最小值/最大值),我的代码都会这样做。这是一件缓慢的事情。探查器明确指出,罪魁祸首是SetupDiGetClassDevs(),这似乎非常缓慢

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

我考虑的另一个选择是保存准备好的数据。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()