管道通讯问题

rock_17   2007-9-24 10:17 楼主
各位我正在做一个驱动,使用readfile读数据时,偶尔会等待超时后就会一直不能读数据了,很少情况下出现.我现在是用URB_FUNCTION_ABORT_PIPE或URB_FUNCTION_RESET_PIPE来控制管道,一个是放弃管道的I/O,一个是进行管道复位,具体采用那一个,此种情况,大概是什么原因引起的

读其中的一段代码如下:WIN32的读操作.
      if(WaitForSingleObject(osReadOperation.hEvent,WaitTimeOut) != WAIT_OBJECT_0)
      {
                  //DeviceIoControlPipe(phDeviceHandle,5);//放弃管道I/O
                  DeviceIoControlPipe(phDeviceHandle,3);//管道复位
                  if(!CloseHandle(osReadOperation.hEvent))
                          CloseHandle(osReadOperation.hEvent);
                  return FALSE;
          }

回复评论 (3)

没有高手来回答一下吗?
点赞  2007-9-25 11:27
也碰到了同样的问题,期待您的答案...
点赞  2008-1-3 10:35
个人觉得是reset pipe,要清除pipe的halt/stall状态,pipe才能正常工作,允许更多的通信流量吧。发一个CLEAR_FEATURE,去复位bulk管道,其实就是把一个寄存器的状态从1改成0。
点赞  2008-8-25 18:40
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复