我将报告大小设置为64字节,并希望将单个报告(例如现在为2)流式传输到主机。我的理解是这些报告可以存在ReadFile
缓冲区。在主机上,我有一个64字节的缓冲区,用于读取单个报告。如果我从设备发送一个报告,主机会正常读取。如果我在循环中使用两个ReadFile
,则第二个ReadFile超时。该设备正在发送两份报告。我不知道他们是否同时进入ReadFile
缓冲区,所以当主机读取第一个报告的结束点时,缓冲区被清除,我丢失了第二个报告?如果ReadFile
缓冲区确实有2个报告,我是否需要同时读取它们?我怎么知道缓冲区上有多少报告?
答案 0 :(得分:1)
ReadFile读取与HID驱动程序的环形缓冲区中的报告一样多的报告,直到numberOfBytesToRead参数。
答案 1 :(得分:0)
相应的HID驱动程序将根据需要实现所有功能。您无需担心这些数据包是否“同时”到达。他们不会。
第一个数据包应该告诉你报告的长度(即数据包的集合),这反过来应该可以让你弄清楚你是否有完整的报告。
当然,您必须保留报告中数据的内部表示,因为根据规范,数据包缓冲区的大小最多只能为64字节。因此,要收集完整的报告,您必须自己处理或使用WDK中描述的Hid_*
例程。