阅读:1546回复:1
Mini Filter InstanceSetup如何只attach 目录中列出的instance
已知一组目录的全路径,例如“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的逻辑。不知道大家有什么好的建议么?谢谢! |
|
|
沙发#
发布于:2013-01-06 00:17
又想了个办法,把每个目录都ZwCreatFile用目录方式打开得到fileHandle
ObReferenceObjectByHandle得到FileObject, FltGetVolumeFromFileObject() 可以得到PFLT_VOLUME,这个指针可以直接和InstanceSetup里面的Volume直接比较。 简单试验是成功的,还得进一步测试看看有没有其它问题。 |
|
|