现有一个普通usb 设备(一个控制端口,两个bulk(批量)端口,分别为in,out),想将其模拟成标准的HID设备,并用标准的HID 接口来读、写数据。
HID读数据机制:ReadFile的调用不会引起设备的任何反应,即内核层收不到IOCTL_HID_READ_REPORT命令。应用层发的ReadFile命令不和HID设备与主机之间的中断IN端点直接联系。而主机会在设定的轮询时间内轮询设备,由HIDCLASS模块发出IOCTL_HID_READ_REPORT命令来读取中断IN端点的数据,将读到的数据放到buffer中。ReadFile即意味着从这个buffer中取回数据。轮询时间可以再接口描述符中设定,buffer大小可以通过HidD_SetNumInputBuffers来改变,XP默认大小为32个报告。
因此就会出现如下问题:
如果轮询时间太短,在ReadFile两次读取buffer之间&