Author: pschweitzer
Date: Wed Oct 29 18:42:05 2014
New Revision: 65106
URL:
http://svn.reactos.org/svn/reactos?rev=65106&view=rev
Log:
[NTFS]
Finally, move old stuff back from disk.sys to ntfs.sys now it can be properly reached on
volume opening:
- Halfplement NtfsUserFsRequest() and add support for IRP_MN_USER_FS_REQUEST in
NtfsFsdFileSystemControl()
- Also, use the proper FSCTL code: FSCTL_GET_NTFS_VOLUME_DATA which exists and is
documented instead of FSCTL_GET_NTFS_VOLUME_DATA. Spotted by Christoph.
CORE-8725
Modified:
trunk/reactos/drivers/filesystems/ntfs/fsctl.c
Modified: trunk/reactos/drivers/filesystems/ntfs/fsctl.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/filesystems/ntfs/f…
==============================================================================
--- trunk/reactos/drivers/filesystems/ntfs/fsctl.c [iso-8859-1] (original)
+++ trunk/reactos/drivers/filesystems/ntfs/fsctl.c [iso-8859-1] Wed Oct 29 18:42:05 2014
@@ -526,6 +526,34 @@
}
+static
+NTSTATUS
+NtfsUserFsRequest(PDEVICE_OBJECT DeviceObject,
+ PIRP Irp)
+{
+ NTSTATUS Status;
+ PIO_STACK_LOCATION Stack;
+
+ DPRINT1("NtfsUserFsRequest(%p, %p)\n", DeviceObject, Irp);
+
+ Stack = IoGetCurrentIrpStackLocation(Irp);
+ switch (Stack->Parameters.FileSystemControl.FsControlCode)
+ {
+ case FSCTL_GET_NTFS_VOLUME_DATA:
+ UNIMPLEMENTED;
+ Status = STATUS_NOT_IMPLEMENTED;
+ break;
+
+ default:
+ DPRINT1("Invalid user request: %x\n",
Stack->Parameters.FileSystemControl.FsControlCode);
+ Status = STATUS_INVALID_DEVICE_REQUEST;
+ break;
+ }
+
+ return Status;
+}
+
+
NTSTATUS
NTAPI
NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject,
@@ -541,9 +569,12 @@
switch (Stack->MinorFunction)
{
case IRP_MN_KERNEL_CALL:
+ DPRINT1("NTFS: IRP_MN_USER_FS_REQUEST\n");
+ Status = STATUS_INVALID_DEVICE_REQUEST;
+ break;
+
case IRP_MN_USER_FS_REQUEST:
- DPRINT("NTFS: IRP_MN_USER_FS_REQUEST/IRP_MN_KERNEL_CALL\n");
- Status = STATUS_INVALID_DEVICE_REQUEST;
+ Status = NtfsUserFsRequest(DeviceObject, Irp);
break;
case IRP_MN_MOUNT_VOLUME:
@@ -557,7 +588,7 @@
break;
default:
- DPRINT("NTFS FSC: MinorFunction %d\n", Stack->MinorFunction);
+ DPRINT1("NTFS FSC: MinorFunction %d\n", Stack->MinorFunction);
Status = STATUS_INVALID_DEVICE_REQUEST;
break;
}