https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9cef425464df506c5475a…
commit 9cef425464df506c5475a47e3723f9de507f1341
Author: Trevor Thompson <tmt256(a)email.vccs.edu>
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;
}
}