redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:5586回复:12

minifilter过滤word时如何识别当前创建读写的是临时文件?

楼主#
更多 发布于:2011-03-18 13:47
minifilter中过滤word文件的读写时,光过滤本身DOC文件的读写肯定不行,还要过滤中途生成的tmp文件,
可是我现在在Create,SetInfo和Write回调函数中不知道如何识别当前进行的是临时文件。
ReName还好处理因为可以比较改名前的,像对于Create临时文件这个动作我就不知道怎么来截获了,
各路高手路过帮帮忙,谢谢了
eleqi
驱动小牛
驱动小牛
  • 注册日期2005-12-20
  • 最后登录2014-01-03
  • 粉丝4
  • 关注2
  • 积分172分
  • 威望1475点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2011-03-19 18:05
取文件扩展名,即可以在PreCreate中也可以PostCreate中,Pre中可以直接使用fobj的文件名,post中自己获取文件名即可。取到后匹配,然后使用streamcontext和streamhandlecontext记录你感兴趣的信息……
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2011-03-21 09:41
楼上的,匹配什么呢,关机根本不知道临时文件的名字啊,要知道就很好搞了...
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2011-03-21 09:41
匹配什么呢,因为根本不知道临时文件的名字啊,要知道就很好搞了...
gao0717
禁止发言
禁止发言
  • 注册日期2007-12-13
  • 最后登录2018-09-25
  • 粉丝1
  • 关注0
  • 积分82434分
  • 威望412811点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2011-03-21 11:05
用户被禁言,该主题自动屏蔽!
catface
驱动小牛
驱动小牛
  • 注册日期2009-01-11
  • 最后登录2014-03-09
  • 粉丝1
  • 关注1
  • 积分155分
  • 威望1341点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分2分
5楼#
发布于:2011-03-21 15:05
一个路径 一个进程名 这两个判断
另外取文件扩展名不能在PRECREATE中 那时候有没名字还很难说
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2011-03-21 15:06
我现在发现,在我每次写文件时,竟然过滤了俩个TMP文件,奇怪的是俩个文件名不一样,
也就是说
①:Doc->~WRL0001.tmp
②:~WRL0000.tmp->Doc
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2011-03-21 15:06
不知道是怎么回事,这样的话第二步就很难整了。
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2011-03-21 15:13
现在问题就是我6楼说的俩次tmp文件名不一样,第二次无法真正的临时文件名,Create失败,也就无法重命名回去原来的doc文件。不知道啥原因。
gao0717
禁止发言
禁止发言
  • 注册日期2007-12-13
  • 最后登录2018-09-25
  • 粉丝1
  • 关注0
  • 积分82434分
  • 威望412811点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2011-03-21 16:43
用户被禁言,该主题自动屏蔽!
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2011-03-21 18:32
因为我要过滤这个word文件的所有读写,然后在别的分区再创建个一摸一样的,就是映射过去。所以临时文件也要映射过去。
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2011-03-23 10:32
问题已经解决。谢谢各位啦!
总结下Word的读写过程,excel,ppt应该差不多,我简单看了下。
例如,在test.docx中写一段文字然后保存,将进行一下操作

Create: \Device\HarddiskVolume2\test.docx
.....
Create: \Device\HarddiskVolume2\~$test.docx(这一步应该没太大用处)
.....
Write: \Device\HarddiskVolume2\~$test.docx(这一步应该没太大用处)
......
Create: \Device\HarddiskVolume2\~WRD0000.tmp
......
Write: \Device\HarddiskVolume2\~WRD0000.tmp(更新数据后的文件)
......
FileRename: \Device\HarddiskVolume2\test.docx ---> \??\D:\~WRL0001.tmp(保存更新前文件)
......
FileRename: \Device\HarddiskVolume2\~WRD0000.tmp ---> \??\D:\test.docx,(用户最终看到的文件)
......
Delete  \??\D:\~WRL0001.tmp(删除备份文件)
hzactiv
驱动牛犊
驱动牛犊
  • 注册日期2001-11-18
  • 最后登录2012-08-14
  • 粉丝0
  • 关注1
  • 积分41分
  • 威望202点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2011-03-23 11:48
楼主写了
游客

返回顶部