为什么我的热插拔 HID 设备应用在每次连接时都变得越来越慢?
Why is my hotplugging HID device app getting increasingly slower with each connection?
我正在使用本机Windows代码枚举HID设备列表,并根据硬件ID设置连接。我在Qt应用程序中使用的DLL中执行此操作。我在连接、写入和读取数据方面没有问题。当我关闭设备时,我希望我的应用自动重新连接到设备或共享相同硬件 ID 的其他设备;但是,在每次后续连接时,它都会减慢Qt GUI的速度。例如,在选项卡之间切换明显延迟。
这让我相信,也许我没有正确断开与 HID 设备的连接,或者存在某种内存泄漏。如果我重新启动应用程序,再次连接到设备,则GUI正常运行。
目前,在阅读报告时,如果出现故障,我正在通过关闭句柄来触发"断开连接"过程,但也许这还不够?有没有办法在某种意义上"清理石板",以便我重新连接到设备而不会降低数据速度?
这是我关闭 I/O 句柄和事件句柄的代码:
char* HID::ReadReport()
{
DWORD BytesRead;
InputReportBuffer[0] = REPORT_ID;
BOOL Result = ReadFile(IOHandle, InputReportBuffer, Capabilities.InputReportByteLength, &BytesRead, (LPOVERLAPPED)&HIDOverlapped);
if (Result)
{
}
else
{
}
return InputReportBuffer;
}
这个问题与Qt有关。与 ReadReport 函数相关的 QTimer 连接设置被多次调用,导致后续连接尝试速度变慢。
相关文章:
- 当套接字连接断开时检测C/C++Unix
- 无法在windows上使用mingw将sqlite3与c连接
- 到连接组件算法的问题(递归)
- QTcpSocket在不阻塞GUI的情况下重新连接到服务器
- 无法在C++中建立与MySQL数据库的连接
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 在Qt Creator中,如何在连接到正在运行的进程后查看控制台输出
- 连接 dockerized 模型和 dockerized 数据库时出现"无法 SQLConnect"错误
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在C++的两个字符串中连接以逗号分隔的唯一值
- 如何修复valgrind启动时的致命错误(与libc6-dbg和libc6-dbg:i386连接)
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- OSX蓝牙打开RFCOMMChannelAsync声称已连接,但未建立连接,并且从未调用过委托
- 在 libcurl 连接池中预创建连接
- 套接字连接"Operation not permitted"错误,甚至使用升压/平发器根.cpp
- libcurl 和 DNS ttl 中的内部连接管理
- 如何应用 libcurl 的持久连接选项
- 提升 ASIO - io_service 不要等待连接到线程
- 为什么我的热插拔 HID 设备应用在每次连接时都变得越来越慢?
- 当客户端连接越来越少的时候(在linux上使用套接字编程),服务器监听的明智方法是什么?