[FASTFAT]
authorPierre Schweitzer <pierre@reactos.org>
Wed, 29 Oct 2014 23:10:31 +0000 (23:10 +0000)
committerPierre Schweitzer <pierre@reactos.org>
Wed, 29 Oct 2014 23:10:31 +0000 (23:10 +0000)
Now that we start to honor the storage stack (ie, without the IopParseDevice hack ;-)), we have to let FSDs forward device IOCTLs.
This allows back copying files on 1st stage

svn path=/trunk/; revision=65116

reactos/drivers/filesystems/fastfat/iface.c
reactos/drivers/filesystems/fastfat/misc.c

index 03ddfe8..b6d6143 100644 (file)
@@ -99,6 +99,7 @@ DriverEntry(
     DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = VfatBuildRequest;
     DriverObject->MajorFunction[IRP_MJ_SHUTDOWN] = VfatShutdown;
     DriverObject->MajorFunction[IRP_MJ_LOCK_CONTROL] = VfatBuildRequest;
+    DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = VfatBuildRequest;
     DriverObject->MajorFunction[IRP_MJ_CLEANUP] = VfatBuildRequest;
     DriverObject->MajorFunction[IRP_MJ_FLUSH_BUFFERS] = VfatBuildRequest;
     DriverObject->MajorFunction[IRP_MJ_PNP] = VfatBuildRequest;
index b48ac90..ddd547f 100644 (file)
@@ -93,6 +93,16 @@ Fail:
     return Status;
 }
 
+static
+NTSTATUS
+VfatDeviceControl(
+    IN PVFAT_IRP_CONTEXT IrpContext)
+{
+    IoSkipCurrentIrpStackLocation(IrpContext->Irp);
+
+    return IoCallDriver(IrpContext->DeviceExt->StorageDevice, IrpContext->Irp);
+}
+
 static
 NTSTATUS
 VfatDispatchRequest(
@@ -127,6 +137,8 @@ VfatDispatchRequest(
             return VfatSetVolumeInformation(IrpContext);
         case IRP_MJ_LOCK_CONTROL:
             return VfatLockControl(IrpContext);
+        case IRP_MJ_DEVICE_CONTROL:
+            return VfatDeviceControl(IrpContext);
         case IRP_MJ_CLEANUP:
             return VfatCleanup(IrpContext);
         case IRP_MJ_FLUSH_BUFFERS: