lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
阅读:3368回复:5

StreamHandleContext的奇怪问题(怪异的Powerpint?)

楼主#
更多 发布于:2008-09-25 18:23
最近在用Minifilter做一个文件追踪的程序,主要流程是:

1) 在PostCreate中得到文件路径,如果是需要追踪的路径,那么创建FltAllocateContext,同时设置FltSetStreamHandleContext,绑定到FileObject上。

2)在PreWrite中通过FltGetStreamHandleContext来判断是否是被追踪的文件。

3)在PreClean中释放Context。

现在发现这个流程都大多数程序都管用,唯独对于Powerpoint程序,即使在PreCreate绑定了ConText,也无法在PreWrite中获得Context,因此无法追踪它的写操作。

用ProcMon可以看到Powerpoint有Writefile的行为,但是在我的Filter中却无法得到。

请问各位朋友,有什么好的想法和建议?拜谢。
AlexSho
驱动牛犊
驱动牛犊
  • 注册日期2008-01-10
  • 最后登录2017-12-01
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望164点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2008-09-25 22:55
在preclose中释放Context即可。
AlexSho
驱动牛犊
驱动牛犊
  • 注册日期2008-01-10
  • 最后登录2017-12-01
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望164点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2008-09-25 22:57
还有,用stream context
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-09-25 23:44
引用第1楼AlexSho于2008-09-25 22:55发表的  :
在preclose中释放Context即可。


我是参照DDK中的Scanner模型写的,只是FltReleaseContext( context )了,这个应该会在计数器清零后自动释放的哦。
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-09-25 23:46
引用第2楼AlexSho于2008-09-25 22:57发表的  :
还有,用stream context


这个我试试,回头把结果告诉大家,多谢
lovehhy
驱动小牛
驱动小牛
  • 注册日期2007-09-17
  • 最后登录2010-09-17
  • 粉丝0
  • 关注0
  • 积分1028分
  • 威望244点
  • 贡献值0点
  • 好评度146点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-09-26 16:23
成功了,谢谢AlexSho兄弟。
游客

返回顶部