Reparse point HELP !!!

Hi all.
I’m developing a mini filter to work like RSFilter for remotting storage. I’ve already registered file tag with Microsoft and already set the reparse tag data in files. I couldn’t figure out how to deal with reparse points in the mini filter. I’ve tried to get the file status in IRP_MJ_CREATE and only in PostCreate callback i got a status == REPARSE_STATUS.
Can somebody help me how to “start” my mini filter. What I must track to get my mini filter to work.
My application needs to restore backup data from tapes.
Thanks for the help …

PS: Found this thread but no answer, Im pasting it here because it resumes all my doubts.

//____
I’m planning on using reparse points to store data about archived files and then having my minifilter intercept the STATUS_REPARSE. At that time, the minifilter will message a user-mode service which will spawn a worker thread to retrieve the archived file.
The worker thread will then message the minifilter, providing the location of the retrieved file. I would like to keep the kernel-mode code as clean as possible, thereby preventing any BSODs for my users.
So I have a few questions about my design:

  1. Do you have any thoughts or suggestions on the current design? Are there any limitations that this design would incur based on your experience?

  2. Once my worker thread has retrieved the archived file, should the worker thread try to delete the reparse point and replace it with the file or should I do that in the minidriver? Also, would my worker thread be able to delete the reparse with FILE_OPEN_REPARSE_POINT and then replace it with the correct file before messaging the minifilter, or should that be done in the minifilter?

Truthfully, from your note I’m not sure what you are asking.

In your post create routine, you will get the reparse data buffer. Use the information in that buffer to implement whatever you need - if it is “replace the file contents” then do so. When the file in the data has been restored and the reparse point removed, reissue the create operation (remember, filter manager guarantees you are safe to block and wait in your post create routine. That’s not true for arbitrary filters, but it is for filter manager based mini-filters.)

Tony
OSR

I’d like to add that you can’t always wait indefinitely. If you keep
the server service waiting more than a minute or thereabouts, it starts
retrying the create, and if it’s still waiting after a couple of
retries, it locks up. This is on W2K3 server, by the way. There are
other reasons not to restore on the create, but you’ll discover them
soon enough. Definitely start by doing the restore on create, it’s
relatively straightforward and will give you some idea of what you’re
getting into.

~Eric

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of xxxxx@osr.com
Sent: Wednesday, June 11, 2008 11:47 AM
To: Windows File Systems Devs Interest List
Subject: RE:[ntfsd] Reparse point HELP !!!

Truthfully, from your note I’m not sure what you are asking.

In your post create routine, you will get the reparse data buffer. Use
the information in that buffer to implement whatever you need - if it is
“replace the file contents” then do so. When the file in the data has
been restored and the reparse point removed, reissue the create
operation (remember, filter manager guarantees you are safe to block and
wait in your post create routine. That’s not true for arbitrary
filters, but it is for filter manager based mini-filters.)

Tony
OSR


NTFSD is sponsored by OSR

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

You are currently subscribed to ntfsd as: xxxxx@edsiohio.com To
unsubscribe send a blank email to xxxxx@lists.osr.com

Thanks Tony and Eric.
I started to study mini filters and drives last week. It is a lot of information, and i just got lost.
Thanks for the posts. Now i guess im able to start from somewhere.
thanks a lot. Just one more question.
Do i have to delete the reparse point in the mini filter drive or in the user application ? If it is in the mini filter drive, should it be in the postcreation after “restoring” the file or before restoring the file. ?

Sorry for all the “stupid” questions…

thanks !