https://bugs.winehq.org/show_bug.cgi?id=50804
--- Comment #40 from Erich E. Hoover erich.e.hoover@gmail.com --- (In reply to Zebediah Figura from comment #39)
(In reply to Erich E. Hoover from comment #38)
Yup, that's what I'll do - the thing that will get tricky is that when shell32 gets converted to PE that we'll need a way to properly convey the paths. IO_REPARSE_TAG_LX_SYMLINK works with straight-up unix paths (what we use right now), I assume that when this is converted to PE that we'll want to work with NT paths (though maybe we work with the "\??\unix" prefix when that happens?).
shell32 should probably use ??\unix paths in general (or even straight up "/foo/bar" paths where possible, which ntdll converts to ??\unix/foo/bar). As for reparse points, I'm not sure whether Unix paths or NT paths makes more sense for IO_REPARSE_TAG_LX_SYMLINK, probably the answer is 'whatever is easier'.
On Windows IO_REPARSE_TAG_LX_SYMLINK is a normal unix path (prefixed by '/mnt' because of the way WSL is set up), so if shell32 is reworked to use ??\unix/foo/bar then it's pretty easy for us to strip "??\unix" before passing the path to FSCTL_SET_REPARSE_POINT.