阅读:2099回复:6
USB设备引起系统死机
各位大侠:小弟在做USB驱动程序时有两个问题无法解决,请大侠赐教。
1)卸载设备时系统死机。 但若加载设备后不做任何处理,则可正常卸载。如若做了处理(如读写操作,正常返回),则引起系统死机。我跟踪了一下,发现是在KPnPDevice类中的WaitStop的m_StopEvent.Wait(KernelMode, FALSE, ptime, Executive)一直没有返回。 2)超时错误时引起蓝屏 我用SubmitUrb(pUrb, NULL, NULL, 4000)传送URB包,在超时时,会引起系统的崩溃,出现蓝屏。我以为是因为使用了delete pUrb,发现屏蔽此句后依然如此。 PS:我用的是VC6+DS,在98环境下。 |
|
最新喜欢:lmhhlm...
|
沙发#
发布于:2001-08-31 09:09
1. 是不是有哪个Irp没有取消啊?
|
|
|
板凳#
发布于:2001-08-31 17:10
我也这么认为,但不知道是哪个IRP没取消。
我的驱动很简单,几乎就是DS生成的,没做什么改动,怎么也不行呢? |
|
|
地板#
发布于:2001-08-31 20:45
那你就要仔细的查代码了
|
|
|
地下室#
发布于:2001-08-31 21:47
十有八九是 removelock 的问题。
|
|
5楼#
发布于:2001-08-31 23:20
我用SOFTICE跟了一下,每个URB包都正确返回。
To rayyang2000: 在向下传递URB包时,不就是使用SubmitUrb发送吗?每回都返回STATUS_SUCCESS状态,应该是正确的。 To starmoon: 你说的 removelock 是什么?请老兄详细说一下。 |
|
|
6楼#
发布于:2001-09-12 01:04
卸载设备时引起死机的问题我已经解决了,主要是漏了一条语句DecrementOutstandingRequestCount()。
但第2个问题至今还没有头绪,“超时错误时引起蓝屏 ”。 我的程序是:SubmitUrb(pUrb, NULL, NULL, 4000); 我用SOFTICE单步调试跟入SubmitUrb函数内部时,没有问题。 但用F10执行这条指令后,在下一句:if(status == STATUS_SUCCESS)时就引起蓝屏,我真怀疑是否DS的库有问题。 请各位大侠帮忙!! |
|
|