opera
驱动牛犊
驱动牛犊
  • 注册日期2001-05-10
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4621回复:6

关于writefile异步调用

楼主#
更多 发布于:2001-07-19 21:10
为了使驱动程序的irp排队,我在app中用了writefile的overlapped参数以达到异步调用的目的。我在creatfile时设了FILE_FLAG_OVERLAPPED参数。我循环写了4个writefile,用softice跟踪发现还是同步的。我理解异步是认为writefile把参数传给驱动后(即产生了一个irp),就立刻向下运行了,什么都不等。但看来不是这样的。是不是需要等一个STATUS_SUCSSES呢?同步时是在等completeIrp的完成。异步时也需要等什么吗?应该在哪里给出?

最新喜欢:

wujiajunwujiaj... jinghuirenjinghu...
我是宝剑,我是火花。 我愿生如闪电般的耀亮, 我愿死如彗星般的迅忽。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-07-20 10:55
异步时,下层要先返回STATUS_PENDING, 上层的WRITEFILE返回,然后等待OVERLAPPED里的事件,下层触发事件以后,上层再继续执行.
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
opera
驱动牛犊
驱动牛犊
  • 注册日期2001-05-10
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-07-20 21:08
先把分给了你,呵呵。
也就是说在dispatchwrite处理时先给出一句IoMarkPending就可以让
app里的writefile向下运行了吧?
我是宝剑,我是火花。 我愿生如闪电般的耀亮, 我愿死如彗星般的迅忽。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-07-23 09:40
多谢!
是不是这句,我忘了,长期用DS,DDK的函数有点忘了。:)反正意思是这样的,你试一下就知道了。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
opera
驱动牛犊
驱动牛犊
  • 注册日期2001-05-10
  • 最后登录
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2001-07-24 09:08
那么是不是可以这样理解呢?
异步调用writefile时,要等到dispatchwrite返回STATUS_PENDING时才能向下运行,实现异步。当驱动对于这个irp执行IoCompleteRequest时,app中overlapped的参数中的事件才能变为有效,也就是说WaitForSingleObject才能醒来.
以上说法对么?
我是宝剑,我是火花。 我愿生如闪电般的耀亮, 我愿死如彗星般的迅忽。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-07-24 16:12
DS的help里面的how to 一节有介绍
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
libin2309
驱动大牛
驱动大牛
  • 注册日期2002-11-20
  • 最后登录2005-12-29
  • 粉丝0
  • 关注0
  • 积分13分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-15 11:34
异步时,下层要先返回STATUS_PENDING, 上层的WRITEFILE返回,然后等待OVERLAPPED里的事件,下层触发事件以后,上层再继续执行.


那你说的这个异步和同步有什么区别呢?
“上层WRITEFILE返回”,是不是意味着应用还是不能向下执行?
谁能详细解释一下异步处理中,应用层到底是怎么个运行过程!
我是一只小小鸟,永远也飞也飞不高,但我永远在飞!
游客

返回顶部