dingwws
驱动牛犊
驱动牛犊
  • 注册日期2001-05-09
  • 最后登录2018-05-30
  • 粉丝0
  • 关注0
  • 积分-6分
  • 威望101点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1574回复:1

异步IOCTL??????????????????????

楼主#
更多 发布于:2001-09-29 14:33
在Walter Oney书的第九章中讲到了关于I/O控制操作
我对他讲的“异步IOCTL”理解不清楚。
请教高手。
还有他的相关的例子中的代码
关于
1异步句柄。(CreateFile)
2异步IOCTL
3异步IRP
的概念???????????????????????????????

最新喜欢:

linwnlinwn
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-09-29 22:41
调用CreateFile时, 加上FILE_FLAG_OVERLAPPED参数. 这时, 得到的HANDLE可以进行异步操作.
当调用DEVICEIOCONTROL时,在最后一个参数传入OVERLAPPED结果. 该DEVICEIOCONTROL就可以是个异步IOCONTROL. 是否真的异步, 取决于DRIVER是否立刻将此IOCONTROL处理调.
异步IRP和同步IRP的区别在于, 当一个异步IRP返回STATUS_PENDING时, IO MANAGER会返回到CALLER. 而一个同步IRP返回STATUS_PENDING时, IO MANAGER会执行等待操作. 等待DRIVER调用IoCompleteRequest. 但是通常情况下在同步IRP下返回STATUS_PENDING并不是个好主意. 尤其在FSD开发中可能会导致不能预料的后果. 所以, 尽量直接完成IRP, 或者自己WAIT到操作完成后返回IO MANAGER为妙.
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
游客

返回顶部