I am writing a filter driver to process reparse points. The steps that I
take are these
- Set up a completion routine for all IRP_MJ_OPENs.
- If ntfs returns STATUS_REPARSE, I look in the aux buffer to see if it my
reparse tag - If so I don’t want to actually reparse the file. I return a success.
Think HSM, this is the file I want to work on but extra processing needs to
take place.
This all works fine, except that the NTFS driver didn’t actually open the
file (Create an FCB for it). So I want to open the file again but with the
FILE_OPEN_REPARSE set. This
will allow NTFS to open the file successfully.
So the question is what is a good way to resubmit the open request. I can
use ZwCreateFile, but I don’t want to create another FILE_OBJECT (or handle)
structure, because I already have one. If I do
I have to worry about closing it later on. I am trying to create a new IRP,
using the same FILE_OBJECT but that doesn’t seem to be working (I am
probably do something wrong).
Any suggestions would be greatly appreciated.
Thanks
Jeremy