hero3
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2010-05-23
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望114点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:3799回复:4

请教,minifilter挂载卷的原理

楼主#
更多 发布于:2009-09-03 15:35

类似于filemon对监控哪个硬盘分区的选择,用minifilter是怎么实现的呢?

请高手解答一下,不胜感激。
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
沙发#
发布于:2009-09-03 16:12
假设你要监控C盘:

1. ZwCreateFile或其它方式打开 C:\,得到对应的FILE_OBJECT;
2. FltGetVolumeFromFileObject 得到PFLT_VOLUME对象;
3. FltAttachVolume 挂接即可!
人总在矛盾中徘徊。。。
hero3
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2010-05-23
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望114点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2009-09-03 16:35
引用第1楼devia于2009-09-03 16:12发表的  :
假设你要监控C盘:

1. ZwCreateFile或其它方式打开 C:\,得到对应的FILE_OBJECT;
2. FltGetVolumeFromFileObject 得到PFLT_VOLUME对象;
3. FltAttachVolume 挂接即可!


谢谢您的解答。不是很懂,抱歉我是菜鸟。。。

以上操作是在Instancesetupcallback()中么?这个回调函数的说明就是“让开发者决定哪个卷需要绑定,哪个卷不需要”。
devia
论坛版主
论坛版主
  • 注册日期2005-05-14
  • 最后登录2016-04-05
  • 粉丝3
  • 关注0
  • 积分1029分
  • 威望712点
  • 贡献值1点
  • 好评度555点
  • 原创分8分
  • 专家分4分
地板#
发布于:2009-09-04 08:46
那更简单了,只需要在InstanceSetupCallback中返回合适的状态码即可,
如果要挂接就返回成功码,否则,返回STATUS_FLT_DO_NOT_ATTACH表示不挂接!
人总在矛盾中徘徊。。。
hero3
驱动牛犊
驱动牛犊
  • 注册日期2006-07-05
  • 最后登录2010-05-23
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望114点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2009-09-04 10:07
引用第3楼devia于2009-09-04 08:46发表的  :
那更简单了,只需要在InstanceSetupCallback中返回合适的状态码即可,
如果要挂接就返回成功码,否则,返回STATUS_FLT_DO_NOT_ATTACH表示不挂接!


非常感谢!

Instancesetupcallback()的两个参数,一个VolumeDeviceType,一个VolumeFilesystemType,但这两个参数无法确定具体的卷比如D盘或者新插入的U盘吧。

还请指点一下。
游客

返回顶部