firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
阅读:7368回复:42

第二次更新(下载不要积分啦!!)filemon学习笔记,绝对原创.

楼主#
更多 发布于:2010-01-06 21:06
(为了纪念今天比较彻底的看懂了Filemon,下载就不有积分啦。贡献给大家。)
学习文件过滤驱动一个多月来的一点笔记.给大家分享一下.觉得filemon还是比较好理解,只是有很多地方没有怎么看过文件系统的知识,所以有的地方写不出来为什么.
要点积分,希望大家不要见怪........
更新:对于文件的删除,应该是IRP_MJ_SETINFORMATION中的"FileDispositionInformation",
   而对于文件的重命名:则是:“FileRenameInformation”今天仔细看了一下关于文件路径的获取的那一段。
   // Ask the file system for the name of the file, which its required to be
       // able to provide for the Win32 filename query function. We could use the
       // undocumented , but then we'd have to worry about
       // re-entrancy issues, since that call generates the IRP that we create
       // manually here. Since we send the IRP to the FSD below us, we don't need
       // to worry about seeing the IRP in our dispatch entry point. This can fail
       // in some cases, so we fall back on constructing the name ourselves if
       // we have to.

这个说明filmon本来考虑过用未公开化的函数 ObQueryNameString( )来得到文件的路径,但是由于可能会导致死锁。
还有就是会可能有重入的危险,因此是使用的我们常看到的自建IRP来查寻文件信息(IRP_MJ_QUERY_INFORMATION)
来查寻文件信息,这个处理方法是比较好的。不过我发现它的处理中是把IRP_MJ_CREATE**排除在外的。这一点没有想
明白是怎么要这么做。在IRP_MJ_CREATE的IRP时候,会直接从fileobject中得到文件路径,这一点我认为不是很准确。希望
大家说一下自己的看法
另附上我的注释版的Filemon的源文件。认为有帮助下了就回一下贴吧。这次就免费献给大家了。
附件名称/大小 下载次数 最后更新
filemon文档报告(23.26).rar (70KB)  137 2010-01-06 21:06
filem.rar (1621KB)  80 2010-05-11 16:46
firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
沙发#
发布于:2010-01-08 09:31
回 9楼(xjyoung) 的帖子
要先回复哈.才来驱网.不是很会弄.
firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
板凳#
发布于:2010-05-11 16:51
回 24楼(tonghai523) 的帖子
这只是通读代码后的一点想法。很多都没有写,再者当时自己也不是很明白。也只能这样了。
firfor
驱动牛犊
驱动牛犊
  • 注册日期2009-11-10
  • 最后登录2016-01-09
  • 粉丝1
  • 关注0
  • 积分121分
  • 威望451点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分1分
地板#
发布于:2010-05-11 16:53
回 27楼(foreverys) 的帖子
我想是的一一对应的。在create成功后会记录下这一个fileobject而在cleanup close
中会在相应的链表中给释放掉。
游客

返回顶部