阅读:1145回复:0
USB PIPE Halt问题
背景:
我用D12做了一个USB的采集设备,驱动是用DS3.1做的,PIPE配置如下: m_Endpoint1IN.Initialize(m_Lower, 0x81, 16); m_Endpoint1OUT.Initialize(m_Lower, 0x1, 16); m_Endpoint2IN.Initialize(m_Lower, 0x82, 2048);//64); m_Endpoint2OUT.Initialize(m_Lower, 0x2, 2048);//64); 用DS的Wizards生成的READ和WRITE代码对m_Endpoint2进行读写(实际Endpoint2OUT没使用),每次从m_Endpoint2IN传上来2048字节的数据。 故障: 用ReadFile从m_Endpoint2IN读n次数据后,m_Endpoint2IN就会变成Halt状态(其他管道还可以通讯),然后就只能用一个自定义的DeviceControl使用IOCTL_INTERNAL_USB_RESET_PORT复位设备后才能继续传输。这样严重影响采集速度。 请问: 1、在什么情况下管道m_Endpoint2IN会变为Halt状态? 2、DS下有没有不用自定义的DeviceControl而进行设备复位的办法,复位代码加在什么地方?(我加在ReadComplete中会导致系统重启) |
|