IRP_MJ_CREATE and FastIoQueryOpen

Hello,

I’ve developed a legacy file system filter driver for my diploma thesis.

My fsfd looks for FastIoQueryOpen-Requests made by a predetermined process.

If FastIoQueryOpen returns TRUE and

status = Irp->IoStatus.Status is STATUS_OBJECT_NAME_NOT_FOUND

the fsfd trys to connect to a user mode application and tell them the file
name. The user mode application checks out this file from database on to the
disk. Than I’m calling FastIoQueryOpen of the underlying driver object
another time and if the file was successfully checked out it will be opened
by the process.

This solution works well but I’m not sure: is it right to call
FastIoQueryOpen another time? Or is there some more elegant way to solve
this problem?

The other problem is how I can make the same in the Create-function
(IRP_MJ_CREATE) of my fsfd. When I’m calling IoCallDriver another time it
crashes. How can I determine if the file is on the disk?

Thanks

Alex

P.S.: Sorry for my bad english.