阅读:1366回复:1
基于Filemon的文件过滤驱动~
我在做一个文件过滤驱动,是基于Filemon的,当被保护的文件被打开时,我想让这个操作在核心层阻塞,然后请求应用层,我第一步想要核心层由文件操作时能够实时的通知应用层,但是遇到了问题,我是这样做的:在应用层异步调用DeviceIoControl(),然后等待Event的返回,在驱动层将该该IRP置为PENDING状态,当保护文件被操作时,完成该IRP,以通知应用层,这就是它们之间的通信过程,其实,这种方法很多地方提到过,但是我在文件驱动中遇到了以下问题:
1、在FilemonFastIoDeviceControl中不能将IRP组塞,用Softice跟踪时,置为Pending的语句根本不执行?? 2、难道与应用层交互的控制代码一定要走fast io吗?我把阻塞代码写到非fast io中,根本不会执行?? 3、怎样让fast io 执行失败,然后执行非fast io例程?? 4、最后还问一句:文件操作能不能阻塞后挂起,我还没有看到哪一个文件保护软件能够与用户交互?? 请帮帮忙,谢谢!! |
|
沙发#
发布于:2002-07-30 22:06
我想你对filemon的改动太大了,建议你先保持filemon的结构性的代码不变,然后再试着添加你的功能性的代码,另外,pending标志并不是在什么地方都能构设置的。我曾经遇到的情况是当pending标志在一个不恰当的函数中被调用时,就会出这样的问题;
fastio是必须的; 我想你没有区分清楚哪些是你的驱动自身的irp,哪些是attached device的irp。 一般来说,系统会优先选择fastio,不成功才会选择直接io。 |
|
|