helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
阅读:2226回复:4

严重!68013自带驱动ezusb.sys连续读几分钟后就死机!!!

楼主#
更多 发布于:2007-05-23 22:54
1:我是slavefifo模式,应用程序读端点EP6,达到38M/byte,连续几分钟后死掉,需要拔掉usb口才能关闭应用程序。
2:跟踪驱动,发现进入Ezusb_CallUSBD(fdo, urb)函数里的KeWaitForSingleObject()函数就死掉!这个函数一直没有返回!!
3: 某些大侠会说是usb的fifo数据没有准备好,可是我的slwr接地,一直在写的,如果是数据没准备好,那么下一次数据来时KeWaitForSingleObject()应该会返回的啊!受到阻塞的应用程序会继续运行的.不至于完全死掉(非的拔掉usb线才能退出)
4:当然,在不写fifo时,即slwr为高时驱动也会停在KeWaitForSingleObject()这里,因为确实是没有数可读嘛.
      各位高手难道没遇到这个问题么?
5:今天查了旧的帖子,发现很多人提出用处理超时的方法,我试着在ezusbsys.c里加入
LARGE_INTEGER  timeout;
编译时提示:ezusbsys.c(402) : error C2275: 'LARGE_INTEGER' : illegal use of this type as an expression
是不是我少加了什么头文件啊?可是少加头文件好像不是这样提错的。
我是驱动菜鸟,才声明一个变量一编译就出错,成功做过超时处理的大侠能否将这一段的详细代码帖出来啊??
   菜鸟们会很感激的!!
goldage
驱动牛犊
驱动牛犊
  • 注册日期2007-05-22
  • 最后登录2007-05-24
  • 粉丝0
  • 关注0
  • 积分50分
  • 威望6点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-05-24 15:28
楼主,我也在用slave fifo,不过还没有开始搞驱动,
我现在遇到一个问题:
我现在用68013的slave fifo模式
用EP2 autoout   用EP6 autoin
PC可以通过EP2写入512字节的数据包
可是EP6的autoinlen 只能设为0x40 如果设为0x200(512字节),用控制面板去读 就会没有响应 也就是每次EP6传的数据包 不能超过64字节
我的计算机是2.0的口啊

这是怎么回事啊   楼主遇到这样的问题没
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-05-24 19:35
两天了!怎们没人愿意说一下呢??我边看驱动开发教程边等......
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-05-28 19:18
都4天了,怎么高手们都不愿意吭声啊??
我发现在《windows 2000驱动程序设计指南》的例子中加入LARGE_INTEGER  timeout;
这一句是编译得过的,而在68013自带的ezusb源程序中加入LARGE_INTEGER  timeout;
确编译不过,原因可能是《windows 2000驱动程序设计指南》的例子是.cpp文件,而68013
的驱动例子却是.C文件,这问题怎么解决啊?怎样才能将68013的驱动源文件改为.cpp的项目
而又能编译得过啊?望大侠们指教啊!!!
helloxieyu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2011-05-25
  • 粉丝0
  • 关注0
  • 积分820分
  • 威望83点
  • 贡献值0点
  • 好评度83点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-05-29 09:52
今天解决了一个很弱的问题,但是还是要写出来给跟我一样的新手看看.
68013自带驱动ezussb是C语言的项目,不是CPP(C++)的项目,变量声明一定要放在函数的最前面,我在ezusbsys.c里加入LARGE_INTEGER  timeout;提示出错就是因为在赋值语句后声明造成的.
游客

返回顶部