阅读:1407回复:7
诚心求教, DeviceIoControl假死现象
小可刚接触USB(ez usb 68013)开发,遇到一个问题百思不得其解,想向大家讨教一下:
我用的是公板的驱动和固件,在应用程序里开双线程读数据(inBulkControl.pipeNum=1,),如果在读取的过程中再发送数据(outBulkControl.pipeNum=0),有时程序会停在读取数据的 DeviceIoControl那个函数那, DeviceIoControl函数没有返回值,好像是假死了.这个时候即便是把应用程序关了,应用程序的进程仍然会停留在任务管理器里,好像应用程序没有完全退出.这时,如果我再读取一下数据,程序就会完成退出了. 我不知道为什么在读取的过程中发送数据会有问题,是我应用程序的问题还是EZ-USB公板驱动的问题 |
|
沙发#
发布于:2009-05-06 19:44
回 楼主(daodaowang) 的帖子
up 大家帮帮忙啥 谢谢啦 |
|
板凳#
发布于:2009-05-06 20:02
使用异步方式可能好些,但无论怎样,总不能让程序死掉,退出程序都不结束更不应该
|
|
|
地板#
发布于:2009-05-09 20:34
回 2楼(AllenZh) 的帖子
谢谢 |
|
地下室#
发布于:2009-05-10 14:02
顶上去
|
|
5楼#
发布于:2009-05-13 11:56
我也遇到这个问题。我怀疑MSDN对DeviceIoControl各参数的解释不对,有两个长度参数貌似反了。
没仔细研究。 如果解决假死,可以在驱动里的URB提交函数中设置超时期限,但仅供调试,并不能根本解决问题。 |
|
6楼#
发布于:2009-05-14 20:45
|
|
7楼#
发布于:2009-05-14 22:00
应该是驱动的同步问题,请求没完成!
|
|