keyghost2
驱动牛犊
驱动牛犊
  • 注册日期2002-07-02
  • 最后登录2002-10-31
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1365回复:1

基于Filemon的文件过滤驱动~

楼主#
更多 发布于:2002-07-28 11:17
我在做一个文件过滤驱动,是基于Filemon的,当被保护的文件被打开时,我想让这个操作在核心层阻塞,然后请求应用层,我第一步想要核心层由文件操作时能够实时的通知应用层,但是遇到了问题,我是这样做的:在应用层异步调用DeviceIoControl(),然后等待Event的返回,在驱动层将该该IRP置为PENDING状态,当保护文件被操作时,完成该IRP,以通知应用层,这就是它们之间的通信过程,其实,这种方法很多地方提到过,但是我在文件驱动中遇到了以下问题:
    1、在FilemonFastIoDeviceControl中不能将IRP组塞,用Softice跟踪时,置为Pending的语句根本不执行??
    2、难道与应用层交互的控制代码一定要走fast io吗?我把阻塞代码写到非fast io中,根本不会执行??
    3、怎样让fast io 执行失败,然后执行非fast io例程??
    4、最后还问一句:文件操作能不能阻塞后挂起,我还没有看到哪一个文件保护软件能够与用户交互??
    请帮帮忙,谢谢!!
  
kwxkzk
驱动牛犊
驱动牛犊
  • 注册日期2002-06-17
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望10点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-30 22:06
我想你对filemon的改动太大了,建议你先保持filemon的结构性的代码不变,然后再试着添加你的功能性的代码,另外,pending标志并不是在什么地方都能构设置的。我曾经遇到的情况是当pending标志在一个不恰当的函数中被调用时,就会出这样的问题;

fastio是必须的;

我想你没有区分清楚哪些是你的驱动自身的irp,哪些是attached device的irp。

一般来说,系统会优先选择fastio,不成功才会选择直接io。
你做过什么? 你在做什么? 你为什么这样做? 你要做什么?
游客

返回顶部