版块
论坛
喜欢
话题
应用
搜索
登录
注册
hapi的个人空间
访问量
0
新鲜事
帖子
资料
http://bbs3.driverdevelop.com/index.php?m=space&uid=18185
程序死在DeviceIoControl!!--50分
各位站友:现有个难题我不知道该怎么解决。我用DriverWorks写了一个PCI卡的驱动,运行了很久一段时间都没有问题。现在有个现象难以解释。驱动程序中有3个端口写函数,都是通过DeviceIoControl来完成的,其中一个端口用的非常频繁,基本上每20毫秒写一次。应用程序单线...
全文
回复
(
17
)
2004-01-05 23:00
来自版块 -
内核编程
◆
◆
表情
告诉我的粉丝
提 交
hapi
:
不是,指的应用程序发起的DeviceIoControl函数
(2004-01-13 21:52)
回复
wxl_50685330
:
你指的是在驱动的IOCTRL的处理例程里面的动作?
(2004-01-13 21:36)
回复
hapi
:
同步的IOCTRL:DeviceIoControl函数执行后要等待驱动相应的IoCtrl函数执行完毕后才可以返回。异步IOCTRL:DeviceIoControl函数执行后,不管驱动的IoCtrl有没有返回,都直接返回Pending。
(2004-01-13 08:30)
回复
wxl_50685330
:
我提一个问题,你说的DEVICEIOCONTROL同步异步分别指的是什么?
(2004-01-09 20:56)
回复
hapi
:
当DeviceIoControl用同步的时候,我用DriverMonitor看我的驱动trace的信息,没有进入IOCTRL执行函数,上层DeviceIoControl也没有返回。IOCTRL函数中对IRP都是Complete的。我猜测是根本没有发IRP到驱动。因为结束应用程序后...
(2004-01-09 12:14)
回复
wxl_50685330
:
你说IRP没有发到驱动,你怎么判断出来的?如果下层不IOCOMPLETEREQUEST的话DEVICEIOCONTROL确实是阻塞的,即使你的OVERLAPPED给的是NULL,你看看下层执行情况,为什么没有返回到上层。
(2004-01-09 11:34)
回复
hapi
:
我现在将DeviceIoControl改成异步之后,程序就不死了,请问这是什么问题?不得其解。
(2004-01-09 11:29)
回复
AthlonXP
:
你试试将请求发下去后直接完成irp返回,也就是不读写端口。如果还死那就是应用程序的原因了,反之就是驱动。不过应用程序的可能性大些,比如同步,多线程的同步马虎不得
(2004-01-09 09:01)
回复
hapi
:
我的IOCTRL是去写端口的,这个端口操作非常频繁。有可能总线会太忙,但是DeviceIoControl函数都没有返回,驱动也没有接收到相应的IRP。应用程序死在执行DeviceIoControl这个函数上。这样应该怎么解决?
(2004-01-08 14:58)
回复
wxl_50685330
:
你发下去的IOCTL是什么命令?通知设备读端口数据?看看是不是总线太忙导致请求不能及时同步返回
(2004-01-07 19:23)
回复
1
2
下一页 »
hapi
加关注
写私信
0
关注
0
粉丝
102
帖子
返回顶部