diff --git a/reactos/drivers/filesystems/ntfs/dispatch.c b/reactos/drivers/filesystems/ntfs/dispatch.c index 88fff13a27a..613e5cf1f7e 100644 --- a/reactos/drivers/filesystems/ntfs/dispatch.c +++ b/reactos/drivers/filesystems/ntfs/dispatch.c @@ -104,6 +104,10 @@ NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext) case IRP_MJ_CREATE: Status = NtfsCreate(IrpContext); break; + + case IRP_MJ_FILE_SYSTEM_CONTROL: + Status = NtfsFileSystemControl(IrpContext); + break; } ASSERT((!(IrpContext->Flags & IRPCONTEXT_COMPLETE) && !(IrpContext->Flags & IRPCONTEXT_QUEUE)) || diff --git a/reactos/drivers/filesystems/ntfs/fsctl.c b/reactos/drivers/filesystems/ntfs/fsctl.c index c3bf5520bf7..71a02a9e813 100644 --- a/reactos/drivers/filesystems/ntfs/fsctl.c +++ b/reactos/drivers/filesystems/ntfs/fsctl.c @@ -866,20 +866,19 @@ NtfsUserFsRequest(PDEVICE_OBJECT DeviceObject, NTSTATUS -NTAPI -NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, - PIRP Irp) +NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext) { - PIO_STACK_LOCATION Stack; NTSTATUS Status; + PIRP Irp; + PDEVICE_OBJECT DeviceObject; DPRINT1("NtfsFileSystemControl() called\n"); - Stack = IoGetCurrentIrpStackLocation(Irp); - + DeviceObject = IrpContext->DeviceObject; + Irp = IrpContext->Irp; Irp->IoStatus.Information = 0; - switch (Stack->MinorFunction) + switch (IrpContext->MinorFunction) { case IRP_MN_KERNEL_CALL: DPRINT1("NTFS: IRP_MN_USER_FS_REQUEST\n"); @@ -901,15 +900,11 @@ NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, break; default: - DPRINT1("NTFS FSC: MinorFunction %d\n", Stack->MinorFunction); + DPRINT1("NTFS FSC: MinorFunction %d\n", IrpContext->MinorFunction); Status = STATUS_INVALID_DEVICE_REQUEST; break; } - Irp->IoStatus.Status = Status; - - IoCompleteRequest(Irp, IO_NO_INCREMENT); - return Status; } diff --git a/reactos/drivers/filesystems/ntfs/ntfs.c b/reactos/drivers/filesystems/ntfs/ntfs.c index 274ec82f23f..5599701cfa4 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.c +++ b/reactos/drivers/filesystems/ntfs/ntfs.c @@ -131,7 +131,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject) DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_SET_VOLUME_INFORMATION] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_DIRECTORY_CONTROL] = NtfsFsdDispatch; - DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdFileSystemControl; + DriverObject->MajorFunction[IRP_MJ_FILE_SYSTEM_CONTROL] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = NtfsFsdDispatch; return; diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 20e301649f1..ab0facde7bb 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -644,10 +644,8 @@ NtfsQueryInformation(PNTFS_IRP_CONTEXT IrpContext); /* fsctl.c */ -DRIVER_DISPATCH NtfsFsdFileSystemControl; -NTSTATUS NTAPI -NtfsFsdFileSystemControl(PDEVICE_OBJECT DeviceObject, - PIRP Irp); +NTSTATUS +NtfsFileSystemControl(PNTFS_IRP_CONTEXT IrpContext); /* mft.c */