jonnyyu2
驱动牛犊
驱动牛犊
  • 注册日期2012-12-19
  • 最后登录2013-01-06
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1450回复:1

Mini Filter InstanceSetup如何只attach 目录中列出的instance

楼主#
更多 发布于:2013-01-05 22:32
已知一组目录的全路径,例如“E:\MyData\MyDir", 现在要在InstanceSetup回调中只attach全路径中出现的这些instance。
目前的思路是得到FltObjects->Instance 得到Volume,然后得到它所有的MountPoints,然后逐一做Prefix匹配。

但是我在考虑一种情况,如果E:是一个volume的盘符, E:\MyData是另一个Volume的挂载点,因为InstanceSetup调用的顺序
是不能确定的,所以E:的instance可能会先于E:\Data的instance出现,这样E:\MyDataMyDir会先被E:的instance匹配,这就不对了。

如果要完全做对就得先得到当前系统所有的挂载点,然后按挂载点路径长度从长到短进行排序在进行Prefix匹配。这样似乎很麻烦,而且我也不确定就一定正确,因为貌似我在实现I/O Mgr的逻辑。不知道大家有什么好的建议么?谢谢!
unionfs for Windows?
jonnyyu2
驱动牛犊
驱动牛犊
  • 注册日期2012-12-19
  • 最后登录2013-01-06
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望31点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2013-01-06 00:17
又想了个办法,把每个目录都ZwCreatFile用目录方式打开得到fileHandle
ObReferenceObjectByHandle得到FileObject,
FltGetVolumeFromFileObject() 可以得到PFLT_VOLUME,这个指针可以直接和InstanceSetup里面的Volume直接比较。
简单试验是成功的,还得进一步测试看看有没有其它问题。
unionfs for Windows?
游客

返回顶部