Author: pschweitzer
Date: Tue Dec  9 21:33:38 2014
New Revision: 65596

URL: http://svn.reactos.org/svn/reactos?rev=65596&view=rev
Log:
[NTOSKRNL]
THE oneliner....
Properly read the information from the IRP to get the reparse tag. This fixes 
the handling of reparse mount points in ReactOS.

To make it short and crystal clear: reparse points from NTFS now work in 
ReactOS.
Demonstration with a Windows 7 volume read inside ReactOS with our NTFS driver 
and the "Documents and Settings" directory pointing to Users.

IopDoNameTransmogrify() properly gets the reparse data and extracts the mount 
point:
(../../ntoskrnl/io/iomgr/file.c:178) IopDoNameTransmogrify(B074DB98, B022BC28, 
B0226068)
(../../ntoskrnl/io/iomgr/file.c:232) Old name: '\Documents and Settings\'
(../../ntoskrnl/io/iomgr/file.c:266) Reparsed name: '\??\C:\Users'

Then.... http://www.heisspiter.net/~Pierre/rostests/NTFS_Reparse.png
First, I attempt to open "Documents and Settings" on my NTFS volume, it fails 
as "C:\" drive is hardcoded in the reparse point.
So, I create the Users directory on C:\ and a dummy file in it.
Then, I cd again which works now.
And dir properly shows the dummy created file :-).

Modified:
    trunk/reactos/ntoskrnl/io/iomgr/file.c

Modified: trunk/reactos/ntoskrnl/io/iomgr/file.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/io/iomgr/file.c?rev=65596&r1=65595&r2=65596&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/io/iomgr/file.c      [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/io/iomgr/file.c      [iso-8859-1] Tue Dec  9 
21:33:38 2014
@@ -870,7 +870,7 @@
         if (Status == STATUS_REPARSE)
         {
             /* Check this is a mount point */
-            if (OpenPacket->Information == IO_REPARSE_TAG_MOUNT_POINT)
+            if (Irp->IoStatus.Information == IO_REPARSE_TAG_MOUNT_POINT)
             {
                 PREPARSE_DATA_BUFFER ReparseData;
 


Reply via email to