FltMgr mount point name query resolution?

Hello.
When I query normalized file name for a mount point (where the user is not specifying FILE_OPEN_REPARSE_POINT flag), wasn’t FltMgr supposed to resolve mount points between volumes as well? (in pre-create)

This situation was extremely rare, so I cannot say I remember it being different. But it appears to be the case on Windows 7 as well. I can’t help thinking that is another broken FltGetFileNameInformation path :frowning:

Dejan.

I have a vague memory that this is a known problem (as in known by the filter manager team) but no more than a vague memory. Maybe one of them lurks on this list?

Well, this is definitely a wider question than even I expected (and I am never surprised by FltMgr name resolution issues, as we now have an almost 100KB FltMgrName.c file which is only for helping cases where FltMgr does not work).

It works differently, with some different errors in rare cases, and considering how rare cross-volume mount points are… this is hard to figure.

Anyway, anyone have a clue how I can get a normalized file name for a cross-volume mount point on pre-win8 OSes, in pre-Create?
http://fsfilters.blogspot.com/2012/02/reparsing-to-different-volume-in-win7.html
According to this, on Win7 it will not even return reparse point information.

The only thing that comes to mind is opening a file by issuing a create to the top of the stack, and avoiding our own creates, then issuing FSCTL_GET_REPARSE_POINT? I should note that in (almost all) cases where FltGetFileNameInformation fails (for normalized file names in pre-create), even ZwQueryInformationFile with FileNormalizedNameInformation will fail as well, as will FltGetFileNameInformation on a file object that we get from FltCreateFile(Ex/2)/IoCreateFIle calls.

Unfortunately, I have a filter which requires normalized file name in pre-create and opened name just cannot work.