How to replace a reparse point file with real target file with minifilter and user mode app ?

Hi Folks,

I am writing a minifilter driver and user mode app to replace a reparse point file with real target file. Assume c:\temp\a.doc is a reparse point file. User double clicks it in file explorer. The minifilter gets a call with GENERIC_READ on PreCreate or PostCreate event. I will read out the reparse file info and send it to the user mode app. Wait for user mode app to replace the reparse point file with a real document (say from c:\worddocs\a.doc, a real word document). Then go on.

My questions are very simple:

  1. Which event is the best to achieve this job ?
  2. How can I wait for user mode app finishing replacing the file ? So minifilter should wait by notifying user mode app; user mode copies a file; the user mode notifies minifilter; then minifilter goes on.

Desperately need your expertise.