When I call FltParseFileNameInformation() on a name returned by
FltGetFileNameInformation() it parses pretty well.
(Although sometimes it claims to have extracted
FLTFL_FILE_NAME_PARSED_PARENT_DIR but &name->ParentDir turns out to be
bogus).
However when I call it to parse a path I have constructed myself, using
my own FLT_FILE_NAME_INFORMATION, it fails to parse anything except the
FinalComponent.
Is this to be expected?
And why am I faking my own FLT_FILE_NAME_INFORMATION struct? I need to
parse the rename destination filename before I call
FltGetDestinationFileNameInformation so that I can extract the drive letter.
Normally the driver letter would be returned by
FltGetDestinationFileNameInformation in the form
\Driver\Mup;LanmanRedirector;p:=000000234\server\share
EXCEPT if I am also issuing STATUS_REPARSE during IRP_MJ_CREATE which
will then eats the drive letter and FltGetDestinationFileNameInformation
returns the re-parsed path without the drive letter.
I’ve also tried other contrived filenames which begin with \Device\Mup,
but FltParseFileNameInformation() remains steadfastly unilluminating.
Sam