Re: [Dokan] Digest for dokan@googlegroups.com - 1 update in 1 topic

10 views
Skip to first unread message

Kyle Hamilton

unread,
Jun 25, 2021, 3:02:28 AM6/25/21
to do...@googlegroups.com
Dokan doesn't specifically support reparse points. It doesn't support FSCTLs at all, actually.

-Kyle H

On Fri, Jun 25, 2021 at 6:42 AM <do...@googlegroups.com> wrote:
Hans Olav Norheim <hans...@hansolav.net>: Jun 24 02:22PM -0700

[For some reason my replies to the other thread are automatically deleted
so starting a new thread.]
 
When using DokanOptions.MountManager and a mount point (not a drive
letter), there's a bad interaction between PrjFlt (ProjFS's filter driver)
and Dokan. Specifically, when PrjFlt is attached to a volume,
SET_REPARSE_POINT calls from dokan1.sys fails and the reparse point is not
attached. The following is visible in Event Viewer:
 
*SendDirectoryFsctl - ZwFsControlFile Code 900AC on "\??\C:\DokanMirror"
failed*
 
I am not sure if the bug is in ProjFS or Dokan. Liryna, would you be able
to take a look and we can escalate to the ProjFS maintainers if necessary
(I have contacts and can help with that).
 
Here are full repro instructions:
 
1. Create a clean Windows 10 VM using Quick create in Hyper-V.
2. Enable ProjFS: Enable-WindowsOptionalFeature -Online -FeatureName
Client-ProjFS -NoRestart
3. Install latest Dokan.
4. Make target and mirror directories:
mkdir C:\DokanTarget
mkdir C:\DokanMirror
echo foo > C:\DokanTarget\foo.txt
5. Modify DokanNetMirror\Program.cs to specify DokanOptions.MountManager to
Mount() and build. Copy bits to VM.
6. Launch DokanNetMirror.exe -what=C:\DokanTarget -where=C:\DokanMirror
7. Observe that foo.txt is mirrored:
>dir C:\DokanMirror
Directory of C:\DokanMirror
06/24/2021 01:59 PM 6 foo.txt
 
8. Exit DokanNetMirror.
9. Attach the ProjFS PrjFlt filter driver to a volume. Note that this would
be done automatically by using ProjFS in a volume, this is just a simpler
way to avoid having to build and launch the ProjFS sample app:

fltmc attach PrjFlt C:

10. Re-launch DokanNetMirror with the same command line.
*11. Observe C:\DokanMirror is empty because SET_REPARSE_POINT request from
dokan1.sys failed, as is evidenced in the System event log:*
 
* SendDirectoryFsctl - ZwFsControlFile Code 900AC on "\??\C:\DokanMirror"
failed*
 
- Hans
You received this digest because you're subscribed to updates for this group. You can change your settings on the group membership page.
To unsubscribe from this group and stop receiving emails from it send an email to dokan+un...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages