fbg1983
驱动牛犊
驱动牛犊
  • 注册日期2008-08-31
  • 最后登录2009-01-21
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1623回复:3

新手关于文件过滤驱动的几个问题请教高人

楼主#
更多 发布于:2008-08-31 13:22
1.关于驱动分层与过滤驱动的关系。我一直搞不清驱动分层与过滤驱动的分别,我现在自己的理解是:对于过滤驱动来说,它处理完截获的IRP后直接调用IoCallDriver发送给下一层设备,而对于分层驱动来说某一层的驱动完成IRP后使用IoCompleteRequest向IO管理器提交,再由IO管理器将这个“半成品”IRP发给其下一层驱动。我的理解对吗?另外对于文件系统驱动跟磁盘驱动来说他们属于分层驱动?还是文件系统驱动作为磁盘驱动的过滤驱动?因为按我的理解文件系统驱动既可以设计成磁盘驱动的过滤驱动,也可以设计成磁盘驱动的上层驱动,好象没什么区别(唯一有点区别好象就是不能在扇区级别过滤,因为文件系统把文件名解析成扇区号后直接交给磁盘驱动了,而过滤驱动又不能插到两个驱动之间)

 

2. IoCallDriver一定返回的一定是STATUS_PENDING吗,可不可能直接返回STATUS_SUCCESS ?
 

谢谢
ckpop
驱动牛犊
驱动牛犊
  • 注册日期2008-05-18
  • 最后登录2009-02-04
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望32点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-09-04 09:26
其实我理解是一个堆栈的行为,当继续向下发送IRP时堆栈就压栈,完成后就是从顶向底的出栈过程!当然在这个过程中处理出栈、压栈操作的就是I/O管理器了!个人看法....还望高手指教!
destinyqq
驱动牛犊
驱动牛犊
  • 注册日期2006-09-18
  • 最后登录2013-01-29
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望35点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-09-04 09:04
分层驱动? 这个是什么东东?
better0332
驱动牛犊
驱动牛犊
  • 注册日期2007-10-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望46点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-09-02 11:59
竟然没人来回答,其实我也很有疑问!但从我不是这样理解的,IoCompleteRequest后表示完成IRP不会发给下层了,过滤驱动只是分层驱动的一部分而已,或许实现功能不一样!

IoCallDriver returns the NTSTATUS value that a lower driver set in the I/O status block for the given request or STATUS_PENDING if the request was queued for additional processing.
所以取决于I/O status block
游客

返回顶部