郁闷...用DS3.2开发USB驱动,提交一个输入请求的URB就蓝屏了...

[复制链接]
 楼主| computer00 发表于 2008-3-11 00:29 | 显示全部楼层 |阅读模式
不知道怎么回事...郁闷之中...
 楼主| computer00 发表于 2008-3-11 14:01 | 显示全部楼层

哈哈~~~蓝屏问题终于解决了~~~原来是DS向导生成的代码SB了...

在使用DS3.2开发USB&nbsp;PDIUSBD12的驱动程序时,使用DS的<br />向导自动生成驱动后,添加发送数据相关代码后,测试发<br />送数据成功。继续增加读数据相关代码,使用最简单的同步<br />调用,结果出现蓝屏……反复查看代码,不管是使用buffere<br />d模式还是direct模式,设置成异步调用并设置完成例程,<br />结果还是蓝屏依旧...在经过无数次的修改代码、蓝屏之后,<br />人都快崩溃了...看别人的驱动以及DS自带的例子中都是这样<br />做的呀,看来问题不在这里。找到代码中的设备构造函数<br />Computer00USBDevice::Computer00USBDevice,发现原来是<br />DS向导生成的代码SB了...&nbsp;<br /><br />本来应该是<br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Initialize&nbsp;each&nbsp;Pipe&nbsp;object<br />&nbsp;&nbsp;&nbsp;&nbsp;m_Endpoint1In.Initialize(m_Lower,&nbsp;0x81,&nbsp;16);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_Endpoint1Out.Initialize(m_Lower,&nbsp;1,&nbsp;16);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_Endpoint2In.Initialize(m_Lower,&nbsp;0x82,&nbsp;64);&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;m_Endpoint2Out.Initialize(m_Lower,&nbsp;2,&nbsp;64);&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />而向导自动生成的代码在0x81和0x82前面都漏掉了0x,<br />变成十进制的了,我倒塌...<br /><br />结果就是两个输出端点可以正常工作,而一旦对输入端点<br />操作时,就导致系统蓝屏了...<br /><br />将代码改正过来,再测试,系统不再蓝屏,而且也可以<br />正常从设备读取到数据了。<br /><br />另外,如果应用程序提供的缓冲区比实际返回的数据<br />长度少时,就会读不到数据,并且以后再使用足够长度<br />的缓冲区去读时也还是读不到。需要将设备停用后重新启用<br />才能重新读到数据。所以应用程序应该提供足够大的缓冲区<br />(例如端点的最大数据包长度)去读数据。
hotpower 发表于 2008-3-11 00:32 | 显示全部楼层

哈哈~~~恭喜~~~

  
 楼主| computer00 发表于 2008-3-11 00:43 | 显示全部楼层

晕...幸灾乐祸不是好大叔...

  
hotpower 发表于 2008-3-11 00:47 | 显示全部楼层

哈哈~~~郁闷几天是最好的巩固~~~一辈子也忘不了~~~

  
high 发表于 2008-3-11 12:53 | 显示全部楼层

呵呵.

傻笑一声.快速路过<br />
yxwsz 发表于 2008-3-15 23:54 | 显示全部楼层

re

我做USB都使用windriver,简单实用;<br />做PCI&nbsp;master驱动用driver&nbsp;works
wacke 发表于 2008-4-3 16:51 | 显示全部楼层

圈圈和我都遇到这个问题了.

看来这个问题遇到的人还不少嘛.我也是找了很久才找到的.
icecut 发表于 2008-4-17 23:23 | 显示全部楼层

我没找到

我蓝屏了不下50次。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

247

主题

14712

帖子

212

粉丝
快速回复 在线客服 返回列表 返回顶部