LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:2099回复:6

USB设备引起系统死机

楼主#
更多 发布于:2001-08-30 22:55
各位大侠:小弟在做USB驱动程序时有两个问题无法解决,请大侠赐教。

1)卸载设备时系统死机。
但若加载设备后不做任何处理,则可正常卸载。如若做了处理(如读写操作,正常返回),则引起系统死机。我跟踪了一下,发现是在KPnPDevice类中的WaitStop的m_StopEvent.Wait(KernelMode, FALSE, ptime, Executive)一直没有返回。


2)超时错误时引起蓝屏

我用SubmitUrb(pUrb, NULL, NULL, 4000)传送URB包,在超时时,会引起系统的崩溃,出现蓝屏。我以为是因为使用了delete pUrb,发现屏蔽此句后依然如此。

PS:我用的是VC6+DS,在98环境下。


最新喜欢:

lmhhlmhhlmhhlm...
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-08-31 09:09
1. 是不是有哪个Irp没有取消啊?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-08-31 17:10
我也这么认为,但不知道是哪个IRP没取消。

我的驱动很简单,几乎就是DS生成的,没做什么改动,怎么也不行呢?

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-08-31 20:45
那你就要仔细的查代码了
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
starmoon
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-08-31 21:47
十有八九是 removelock 的问题。
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-08-31 23:20
我用SOFTICE跟了一下,每个URB包都正确返回。

To rayyang2000:
  在向下传递URB包时,不就是使用SubmitUrb发送吗?每回都返回STATUS_SUCCESS状态,应该是正确的。

To starmoon:
  你说的 removelock 是什么?请老兄详细说一下。

 
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-09-12 01:04
卸载设备时引起死机的问题我已经解决了,主要是漏了一条语句DecrementOutstandingRequestCount()。

但第2个问题至今还没有头绪,“超时错误时引起蓝屏 ”。
我的程序是:SubmitUrb(pUrb, NULL, NULL, 4000);

我用SOFTICE单步调试跟入SubmitUrb函数内部时,没有问题。

但用F10执行这条指令后,在下一句:if(status == STATUS_SUCCESS)时就引起蓝屏,我真怀疑是否DS的库有问题。

请各位大侠帮忙!!



穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
游客

返回顶部