brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:3338回复:31

WIN2000不能正常关机的问题(关于DS下的DMA)

楼主#
更多 发布于:2002-10-21 13:20
我在2000下用DS作PCI卡驱动,作基于通用缓冲区的连续大数据量DMA,驱动和应用层利用事件同步。
结束程序后不能正常关机,死在关机界面的“正在保存设置……”谁能告诉我为什么,怎么办?

[编辑 -  11/4/02 by  brucezh]
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-06 11:14
知道原因了,是因为没有正确处理被Cancel的IRP,正在研究。
哪位大虾知道DS环境下这方面的具体操作,请指教
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-04 10:26
有大虾说可能是有IRP未能取消,先看一看关于取消例程的文章吧
打一枪……换个地方……再打一枪……
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-04 10:05
ddk啊,也不知怎么搞得
对了,mike_wang好像也碰到过
看看这个
http://www.driverdevelop.com/forum/viewthread.php?tid=20510#pid130124

[编辑 -  11/4/02 by  gung]
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-04 09:13
顶。有没有用DS作DMA碰到这问题的?
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-01 12:56
faint!!
我也遇到类似的问题,我的程序一旦传输过数据后,在关机时,关机画面倒是过了,但是屏幕一黑就不再启动了,按计算机的reset件都不管用,不知是硬件还是软件问题。
不过按reset都没用是不是应该是硬件问题,有没有谁遇到过阿。

大哥用的是DS还是DDK?
打一枪……换个地方……再打一枪……
gung
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2008-04-21
  • 粉丝0
  • 关注0
  • 积分25分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-01 12:43
faint!!
我也遇到类似的问题,我的程序一旦传输过数据后,在关机时,关机画面倒是过了,但是屏幕一黑就不再启动了,按计算机的reset件都不管用,不知是硬件还是软件问题。
不过按reset都没用是不是应该是硬件问题,有没有谁遇到过阿。
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-01 12:04
dma完成后有没有delete KDmaTransfer

每次都要delete吗?
我用的KDmaTransfer对象是我在KDevice对象中加入的一个成员函数,在这种情况下我怎么Delete?
仁兄有成功经验吗?


另外,我在SoftIce中对OnStopDevice()和OnPoverOff()设中断。发现到死机时SoftIce也没有跳出来,是这时SoftIce已经卸载了还是程序死在其他地方了?
打一枪……换个地方……再打一枪……
hglzw
驱动小牛
驱动小牛
  • 注册日期2001-06-12
  • 最后登录2006-03-03
  • 粉丝0
  • 关注0
  • 积分19分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-11-01 10:37
dma完成后有没有delete KDmaTransfer
[img]http://www.kinboh.com/images/5130.jpg[/img]
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-11-01 09:26
那我就不知道该怎么办了。
资源有:
IO端口范围;
中断(向导生成的代码已释放)
DMA通用缓冲区
DMA(代码注释中明确说明在NT下不须释放)
事件(不知算不算资源)
我要把所有的资源都释放(全部用Invalidate()),结果就是更早的失去响应 :(

还能怎么处理? :mad:
打一枪……换个地方……再打一枪……
gxpa1
驱动中牛
驱动中牛
  • 注册日期2002-10-30
  • 最后登录2010-09-02
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-10-31 10:57
 :)
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-10-30 08:37
在DS中,释放资源就是调用**.Invalidate()吧?
打一枪……换个地方……再打一枪……
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-10-29 19:44
ds既然封装了dma
肯定帮你释放了

所以还是应该检查你自己申请的资源


NOD
穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
zydcat
驱动老牛
驱动老牛
  • 注册日期2001-12-06
  • 最后登录2006-04-12
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-10-29 10:25
ds既然封装了dma
肯定帮你释放了

所以还是应该检查你自己申请的资源
[color=red]肥虫虫[/color] [img]http://www.driverdevelop.com/forum/upload/bradley/2002-11-15_ig01.gif[/img]
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-10-29 09:51
[quote][quote][quote][quote]事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先 [/quote]

如果驱动中没有用事件那肯定和事件无关。

 [/quote]
用了,但好像没使用KDmaAdapter和KDmaTransfer进行DMA传输以前没有这现象。 [/quote]

那就应该检查DMA。

 [/quote]
这我知道,但我觉得我的代码跟帮助文件中的描述没有什么冲突阿。
而且向导生成的代码说明中明确说不需要释放KDmaAdapter对象的资源。难道DMA过程中也有什么影响吗?
打一枪……换个地方……再打一枪……
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-10-28 20:09
[quote][quote][quote]事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先 [/quote]

如果驱动中没有用事件那肯定和事件无关。

 [/quote]
用了,但好像没使用KDmaAdapter和KDmaTransfer进行DMA传输以前没有这现象。 [/quote]

那就应该检查DMA。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2002-10-28 09:11
[quote][quote]事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先 [/quote]

如果驱动中没有用事件那肯定和事件无关。

 [/quote]
用了,但好像没使用KDmaAdapter和KDmaTransfer进行DMA传输以前没有这现象。
打一枪……换个地方……再打一枪……
LitteSW
驱动中牛
驱动中牛
  • 注册日期2001-06-10
  • 最后登录2010-08-16
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2002-10-26 19:12
[quote]事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先 [/quote]

如果驱动中没有用事件那肯定和事件无关。

穿梭于都市高楼之间,总是孜孜不倦地追寻着自由,蓦然回首,去发现已陷入深深的枷锁之中
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2002-10-25 11:34
[quote]事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先 [/quote]
更混乱了。
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2002-10-25 10:33
事件close了没有 :D

在应用程序中倒是ResetEvent()了
但在驱动中没有。我试试看先
打一枪……换个地方……再打一枪……
上一页
游客

返回顶部