我将报告大小设置为 64 字节,并希望将单个报告(现在说 2 个)流式传输到主机。我的理解是ReadFile
这些报告可以放置一个缓冲区。在主机上,我有一个 64 字节的缓冲区,用于读取单个报告。如果我从设备发送一份报告,主机会很好地读取它。如果我ReadFile
在循环中使用两个 s,则第二个 ReadFile 超时。设备正在发送两个报告。我不知道他们是否同时进入ReadFile
缓冲区,所以当主机读取第一个报告的终点时,缓冲区被清除并且我丢失了第二个报告?如果缓冲区确实有 2 个报告ReadFile
,我需要同时阅读它们吗?我怎么知道缓冲区中有多少报告?
问问题
1217 次
2 回答
1
ReadFile 读取的报告数量与 HID 驱动程序的环形缓冲区中的数量一样多,最多可达 numberOfBytesToRead 参数。
于 2011-11-21T23:52:38.080 回答
0
相应的 HID 驱动程序将根据需要实现所有内容。您不必担心这些数据包是否“同时”到达。他们不会。
第一个数据包应该告诉您报告的长度(即数据包的集合),这反过来应该可以让您确定您是否拥有完整的报告。
当然,您必须保留报告中数据的内部表示,因为根据规范,数据包缓冲区的大小最多只能为 64 字节。因此,要收集完整的报告,您必须自己处理或使用Hid_*
WDK 中描述的例程。
于 2011-11-17T12:47:45.747 回答