https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9cef425464df506c5475a47e3723f9de507f1341

commit 9cef425464df506c5475a47e3723f9de507f1341
Author: Trevor Thompson <[email protected]>
AuthorDate: Thu Jul 27 11:35:50 2017 +0000

    [NTFS] - After creating a new file, update creation disposition before 
calling NtfsCreateFile() recursively. This fixes creating a file via 
right-clicking in a folder.
    
    svn path=/branches/GSoC_2016/NTFS/; revision=75423
---
 drivers/filesystems/ntfs/create.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/drivers/filesystems/ntfs/create.c 
b/drivers/filesystems/ntfs/create.c
index f5ca1027fc..a98afc67b7 100644
--- a/drivers/filesystems/ntfs/create.c
+++ b/drivers/filesystems/ntfs/create.c
@@ -580,8 +580,18 @@ NtfsCreateFile(PDEVICE_OBJECT DeviceObject,
                 return Status;
             }
 
-            // Now we should be able to open the file
-            return NtfsCreateFile(DeviceObject, IrpContext);
+            // Before we open the file we just created, we need to change the 
disposition (upper 8 bits of ULONG)
+            // from create to open, since we already created the file
+            Stack->Parameters.Create.Options = (ULONG)FILE_OPEN << 24 | 
RequestedOptions;
+
+            // Now we should be able to open the file using NtfsCreateFile()
+            Status = NtfsCreateFile(DeviceObject, IrpContext);
+            if (NT_SUCCESS(Status))
+            {
+                // We need to change Irp->IoStatus.Information to reflect 
creation
+                Irp->IoStatus.Information = FILE_CREATED;
+            }
+            return Status;
         }
     }
 

Reply via email to