xzjfile
禁止发言
禁止发言
  • 注册日期2001-12-14
  • 最后登录2018-07-12
  • 粉丝0
  • 关注0
  • 积分6970分
  • 威望50721点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1589回复:7

vxd中挂IFS钩子的一个严重问题,讨论一下

楼主#
更多 发布于:2002-11-29 10:38
用户被禁言,该主题自动屏蔽!
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-11-29 10:58
不用担心IFSMgr_RemoveFileSystemApiHook的问题,系统会等待正在处理的ir都结束,就是说在调用成功的同时,不会有ir再发到你的filter

filemon里的LogMutex, HashMutex, FilterMutex都不是用来同步这个的

另外,RELEASE的VXD并不建议使用IFSMgr_RemoveFileSystemApiHook,2K下也一样,如果想让Filter失效,只需设置个Disable变量就可以了
xzjfile
禁止发言
禁止发言
  • 注册日期2001-12-14
  • 最后登录2018-07-12
  • 粉丝0
  • 关注0
  • 积分6970分
  • 威望50721点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2002-11-29 12:41
用户被禁言,该主题自动屏蔽!
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-29 13:22
一般来说调试的时候做成动态vxd,在SYS_DYNAMIC_DEVICE_EXIT中调用这个函数,而商品化的vxd最好做成静态vxd。

执行数据修改的钩子调用该函数不安全是很明显的,例如如果vxd实现的是文件压缩功能,当一个文件被打开,数据被读出并通过Filter解压,但是在文件内容被修改写入之前,调用了IFSMgr_RemoveFileSystemApiHook,这时候写入的数据就会是没有压缩的数据,文件就会损坏。象这种情况必须等待所有打开的压缩文件句柄被完全关闭,才能调用该函数。

其它的情况类似(象修改了文件大小、虚拟了文件handle等等),在2000下这种情况更为复杂,所以2000下更不推荐动态的Filter
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-29 13:25
能不能给点分啊:)
在这回答了这么多问题,居然一分都没有,好伤心啊~555~~
xzjfile
禁止发言
禁止发言
  • 注册日期2001-12-14
  • 最后登录2018-07-12
  • 粉丝0
  • 关注0
  • 积分6970分
  • 威望50721点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
  • 社区居民
5楼#
发布于:2002-11-29 15:08
用户被禁言,该主题自动屏蔽!
Coolice
驱动小牛
驱动小牛
  • 注册日期2002-11-13
  • 最后登录2003-08-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-11-29 15:56
谢谢!:)
这个问题不是很明白,你指的初始化是什么?系统完全初始化又是指什么?
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-11-30 21:45
^_^,给分了.呵呵.

我现在也在为这个退出的时机烦恼不已.
我一直觉得动态vxd比较好呢.因为它对系统的影响小,呵呵.
实在不好做的话,我也做成静态的好了,用户态就简单退出好了.让vxd留在系统里.
另外,问个问题:象这样的静态vxd,我的初始化顺序应该是怎样的?
如果我只想用户在系统完全初始化完毕后才使用我的vxd,我可以用UNDEFINED么?

ID设置为比IFSMGR大一点即可。
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
游客

返回顶部