2011-05-13 123 views
1

我将报告大小设置为64个字节,并希望将单个报告(现在称为2)传送给主机。我的理解是有一个ReadFile缓冲区,可以放置这些报告。在主机上,我有一个64字节的缓冲区,用于读取单个报告。如果我从设备发送一份报告,主机读取它很好。如果我在循环中使用两个ReadFile,则第二个ReadFile会超时。该设备正在发送两个报告。我不知道他们是否正在同时访问ReadFile缓冲区,所以当主机读取第一个报告的终点时,缓冲区会被清除,并且会丢失第二个报告?如果ReadFile缓冲区确实有2个报告,我是否需要一次读取它们?我怎么知道缓冲区上有多少个报告?阅读多个HID报告

回答

1

ReadFile读取的报告数量与HID驱动程序环形缓冲区中的报告数量相同,最多为numberOfBytesToRead参数。

0

相应的HID驱动程序将根据需要实施一切。您不必担心这些数据包是否“同时”到达。他们不会。

第一个数据包应该告诉你报告的长度(即数据包的集合),这反过来应该让你确定你是否有完整的报告。

当然,您将不得不从报告中保留数据的内部表示,因为根据规范,数据包缓冲区的大小最多只能为64个字节。因此,要收集完整报告,您必须亲自处理或使用WDK中描述的Hid_*例程。