阅读:1622回复:3
新手关于文件过滤驱动的几个问题请教高人
1.关于驱动分层与过滤驱动的关系。我一直搞不清驱动分层与过滤驱动的分别,我现在自己的理解是:对于过滤驱动来说,它处理完截获的IRP后直接调用IoCallDriver发送给下一层设备,而对于分层驱动来说某一层的驱动完成IRP后使用IoCompleteRequest向IO管理器提交,再由IO管理器将这个“半成品”IRP发给其下一层驱动。我的理解对吗?另外对于文件系统驱动跟磁盘驱动来说他们属于分层驱动?还是文件系统驱动作为磁盘驱动的过滤驱动?因为按我的理解文件系统驱动既可以设计成磁盘驱动的过滤驱动,也可以设计成磁盘驱动的上层驱动,好象没什么区别(唯一有点区别好象就是不能在扇区级别过滤,因为文件系统把文件名解析成扇区号后直接交给磁盘驱动了,而过滤驱动又不能插到两个驱动之间)
2. IoCallDriver一定返回的一定是STATUS_PENDING吗,可不可能直接返回STATUS_SUCCESS ? 谢谢 |
|
沙发#
发布于: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 |
|
板凳#
发布于:2008-09-04 09:04
分层驱动? 这个是什么东东?
|
|
地板#
发布于:2008-09-04 09:26
其实我理解是一个堆栈的行为,当继续向下发送IRP时堆栈就压栈,完成后就是从顶向底的出栈过程!当然在这个过程中处理出栈、压栈操作的就是I/O管理器了!个人看法....还望高手指教!
|
|