sunli425
驱动牛犊
驱动牛犊
  • 注册日期2004-06-19
  • 最后登录2004-12-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1145回复:0

USB PIPE Halt问题

楼主#
更多 发布于:2004-07-24 18:07
背景:

我用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中会导致系统重启)

游客

返回顶部