我正在开发一个自定义USB HID设备,其IN和OUT中断 endpoints 各有64字节长度 . 有2个报告(一个报告ID为1,另一个报告ID为2),报告计数各为63字节 . 当在VC中开发的PC应用程序使用WriteFile()发送64字节缓冲区时,我会在OUT中断 endpoints 上的设备上正确接收整个缓冲区 . 但是当我从设备向IN endpoints 上的PC发送64字节缓冲区时,ReadFile()返回值为4(超时) . 当设备插入时,这只发生了2次 . 之后一切正常,PC正确读取设备发送的64字节 .

我正在使用USBlyzer工具来嗅探USB总线流量 . 该软件显示,前两次设备在中断IN endpoints 上发送64字节缓冲区,但它也无法显示其中的数据 . 第三次开始,一切都神奇地工作,PC应用程序和USBlyzer都在屏幕上接收并显示64字节的缓冲区内容 .

我不确定问题出在哪里,是PC端代码还是设备固件?请分享你的想法 .