diff --git a/reactos/drivers/filesystems/ntfs/dispatch.c b/reactos/drivers/filesystems/ntfs/dispatch.c index 7a08fc15c60..6f42b4163e3 100644 --- a/reactos/drivers/filesystems/ntfs/dispatch.c +++ b/reactos/drivers/filesystems/ntfs/dispatch.c @@ -76,6 +76,10 @@ NtfsFsdDispatch(PDEVICE_OBJECT DeviceObject, case IRP_MJ_DIRECTORY_CONTROL: Status = NtfsDirectoryControl(IrpContext); break; + + case IRP_MJ_READ: + Status = NtfsRead(IrpContext); + break; } } else diff --git a/reactos/drivers/filesystems/ntfs/ntfs.c b/reactos/drivers/filesystems/ntfs/ntfs.c index 304b2904b8f..918bcb389b5 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.c +++ b/reactos/drivers/filesystems/ntfs/ntfs.c @@ -121,7 +121,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject) { DriverObject->MajorFunction[IRP_MJ_CREATE] = NtfsFsdCreate; DriverObject->MajorFunction[IRP_MJ_CLOSE] = NtfsFsdClose; - DriverObject->MajorFunction[IRP_MJ_READ] = NtfsFsdRead; + DriverObject->MajorFunction[IRP_MJ_READ] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_WRITE] = NtfsFsdWrite; DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch; diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index e4e2a34950c..05d63e8ec7d 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -759,10 +759,8 @@ NtfsFileFlagsToAttributes(ULONG NtfsAttributes, /* rw.c */ -DRIVER_DISPATCH NtfsFsdRead; -NTSTATUS NTAPI -NtfsFsdRead(PDEVICE_OBJECT DeviceObject, - PIRP Irp); +NTSTATUS +NtfsRead(PNTFS_IRP_CONTEXT IrpContext); DRIVER_DISPATCH NtfsFsdWrite; NTSTATUS NTAPI diff --git a/reactos/drivers/filesystems/ntfs/rw.c b/reactos/drivers/filesystems/ntfs/rw.c index 0ae0a280394..a5b5f742f18 100644 --- a/reactos/drivers/filesystems/ntfs/rw.c +++ b/reactos/drivers/filesystems/ntfs/rw.c @@ -161,9 +161,7 @@ NtfsReadFile(PDEVICE_EXTENSION DeviceExt, NTSTATUS -NTAPI -NtfsFsdRead(PDEVICE_OBJECT DeviceObject, - PIRP Irp) +NtfsRead(PNTFS_IRP_CONTEXT IrpContext) { PDEVICE_EXTENSION DeviceExt; PIO_STACK_LOCATION Stack; @@ -173,13 +171,17 @@ NtfsFsdRead(PDEVICE_OBJECT DeviceObject, LARGE_INTEGER ReadOffset; ULONG ReturnedReadLength = 0; NTSTATUS Status = STATUS_SUCCESS; + PIRP Irp; + PDEVICE_OBJECT DeviceObject; - DPRINT("NtfsRead(DeviceObject %x, Irp %x)\n",DeviceObject,Irp); + DPRINT("NtfsRead(DeviceObject %p)\n", IrpContext); + + DeviceObject = IrpContext->DeviceObject; + Irp = IrpContext->Irp; + Stack = IrpContext->Stack; + FileObject = IrpContext->FileObject; DeviceExt = DeviceObject->DeviceExtension; - Stack = IoGetCurrentIrpStackLocation(Irp); - FileObject = Stack->FileObject; - ReadLength = Stack->Parameters.Read.Length; ReadOffset = Stack->Parameters.Read.ByteOffset; Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress); @@ -206,9 +208,6 @@ NtfsFsdRead(PDEVICE_OBJECT DeviceObject, Irp->IoStatus.Information = 0; } - Irp->IoStatus.Status = Status; - IoCompleteRequest(Irp,IO_NO_INCREMENT); - return Status; }