name provider callbacks (minifilter)

Hello,

sometimes I get this verifier assert (Win7 RC x64):

FILTER VERIFIER ERROR: A filter has completed an operation but does not
implement name provider callbacks. For example

if a filter completes an IRP_MJ_CREATE and is not a name provider it is
possible that during name

queries the FO will make it’s way to the file system and bugcheck. (Filter =
FFFFFA800242B1F0, Cbd = FFFFFA800306B280)

My minifilter reparses IRP_MJ_CREATE requests, virtualize renames, directory
queries, deletes, etc. I don’t register name provider callbacks in
FLT_REGISTRATION (GenerateFileNameCallback/NormalizeNameComponent/…) and
I’d like to ask if it is even a must, if I virtualize other IRP_MJ_* calls
and return to IO Manager which files exist, which don’t…
IRP_MJ_QUERY_INFORMATION returns new filename path by FO, etc.

I usually ignore this warning and all works ok.

BUT, maybe fltmgr needs name providers for its own, or for other
minifilters… please let me know.

Thanks,

Petr

Hi Petr,

Filter manager expects that any minifilter that changes the namespace in any way registers as a name provider. Not doing so can have pretty bad side effects in interop. Depending on the kind of virtualization you do you will break things from the name cache (i.e. the name cache in fltmgr might get out of sync with the name in the namespace) or name queries altogether (look for a recent thread about renames and SimRep) or even bugcheck the system. Some of the errors are pretty subtle and very hard to debug (corruption in the name cache can go on for a while before it actually manifests itself and when it does it will be pretty hard to repro).

You really need to implement name provider callbacks.

Regards,
Alex.
This posting is provided “AS IS” with no warranties, and confers no rights.

From: xxxxx@lists.osr.com [mailto:xxxxx@lists.osr.com] On Behalf Of Petr Kurtin
Sent: Monday, August 10, 2009 03:01
To: Windows File Systems Devs Interest List
Subject: [ntfsd] name provider callbacks (minifilter)

Hello,
sometimes I get this verifier assert (Win7 RC x64):

FILTER VERIFIER ERROR: A filter has completed an operation but does not implement name provider callbacks. For example
if a filter completes an IRP_MJ_CREATE and is not a name provider it is possible that during name
queries the FO will make it’s way to the file system and bugcheck. (Filter = FFFFFA800242B1F0, Cbd = FFFFFA800306B280)

My minifilter reparses IRP_MJ_CREATE requests, virtualize renames, directory queries, deletes, etc. I don’t register name provider callbacks in FLT_REGISTRATION (GenerateFileNameCallback/NormalizeNameComponent/…) and I’d like to ask if it is even a must, if I virtualize other IRP_MJ_* calls and return to IO Manager which files exist, which don’t… IRP_MJ_QUERY_INFORMATION returns new filename path by FO, etc.

I usually ignore this warning and all works ok.
BUT, maybe fltmgr needs name providers for its own, or for other minifilters… please let me know.

Thanks,
Petr


NTFSD is sponsored by OSR

For our schedule of debugging and file system seminars
(including our new fs mini-filter seminar) visit:
http://www.osr.com/seminars

To unsubscribe, visit the List Server section of OSR Online at http://www.osronline.com/page.cfm?name=ListServer