Developing New HSM Minifilter Questions

I am about to begin development of a minifilter for HSM purposes and wanted to get some advice on my design. =20

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?

  3. Advice on best minifilter samples for such a scenario (my new W2K3
    SP1 IFS Kit is in the mail, I only the W2K3 non-SP1 IFS Kit now)?

Thanks for your help. I’m hoping that asking questions now will prevent me from wasting your time in the future.

-Bill Leimkuehler

Also, what is the best way to requeue the IRP after I have retrieved the file data and deleted the reparse point.

Thanks for your help!

-Bill