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

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

楼主#
更多 发布于:2011-03-18 13:47
minifilter中过滤word文件的读写时,光过滤本身DOC文件的读写肯定不行,还要过滤中途生成的tmp文件,
可是我现在在Create,SetInfo和Write回调函数中不知道如何识别当前进行的是临时文件。
ReName还好处理因为可以比较改名前的,像对于Create临时文件这个动作我就不知道怎么来截获了,
各路高手路过帮帮忙,谢谢了
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
匹配什么呢,因为根本不知道临时文件的名字啊,要知道就很好搞了...
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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分
地下室#
发布于:2011-03-21 15:06
不知道是怎么回事,这样的话第二步就很难整了。
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2011-03-21 15:13
现在问题就是我6楼说的俩次tmp文件名不一样,第二次无法真正的临时文件名,Create失败,也就无法重命名回去原来的doc文件。不知道啥原因。
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2011-03-21 18:32
因为我要过滤这个word文件的所有读写,然后在别的分区再创建个一摸一样的,就是映射过去。所以临时文件也要映射过去。
redchairman
驱动牛犊
驱动牛犊
  • 注册日期2009-05-08
  • 最后登录2015-05-07
  • 粉丝2
  • 关注2
  • 积分41分
  • 威望361点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于: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(删除备份文件)
游客

返回顶部