我实现了一个HID应用程序,它似乎可以很好地连接、读取和写入外部USB设备。问题是当试图读取大数据文件时,一些数据包会丢失。
下面是使用以下代码im:
DWORD result;
uint8_t u8_dataBuffer[size] = { 0 };
DWORD bytesRead;
ReadFile(Handle, u8_dataBuffer,
size + 1,
&bytesRead,
(LPOVERLAPPED)&m_HidOverlapped))
result = WaitForSingleObject(Handle, 6000);
switch (result) {
case WAIT_OBJECT_0: {
break;
}
case WAIT_TIMEOUT: {
result = CancelIo(Handle);
CloseHandle(Handle);
deviceFound = false;
break;
}
default: {
break;
}
}发布于 2022-02-08 10:22:55
HID报告保存在环形缓冲区中。因此,如果您没有足够快地读取所有挂起的输入报告--它们可能会丢失。此缓冲区的大小可通过HID设备句柄上的SetNumInputBuffers调用或缓冲器 IOCTL进行更改。
默认情况下,HID类驱动程序维护一个包含32个报表的输入报表环缓冲区。
有关其他信息,请参见HID Reports#Dropped HID报告的故障排除。
https://stackoverflow.com/questions/71015912
复制相似问题