diff --git a/reactos/drivers/filesystems/ntfs/close.c b/reactos/drivers/filesystems/ntfs/close.c index 6213455f9be..4502149f68e 100644 --- a/reactos/drivers/filesystems/ntfs/close.c +++ b/reactos/drivers/filesystems/ntfs/close.c @@ -79,35 +79,30 @@ NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, } -NTSTATUS NTAPI -NtfsFsdClose(PDEVICE_OBJECT DeviceObject, - PIRP Irp) +NTSTATUS +NtfsClose(PNTFS_IRP_CONTEXT IrpContext) { PDEVICE_EXTENSION DeviceExtension; - PIO_STACK_LOCATION Stack; PFILE_OBJECT FileObject; NTSTATUS Status; + PDEVICE_OBJECT DeviceObject; DPRINT("NtfsClose() called\n"); + DeviceObject = IrpContext->DeviceObject; if (DeviceObject == NtfsGlobalData->DeviceObject) { DPRINT("Closing file system\n"); - Status = STATUS_SUCCESS; - goto ByeBye; + IrpContext->Irp->IoStatus.Information = 0; + return STATUS_SUCCESS; } - Stack = IoGetCurrentIrpStackLocation(Irp); - FileObject = Stack->FileObject; + FileObject = IrpContext->FileObject; DeviceExtension = DeviceObject->DeviceExtension; - Status = NtfsCloseFile(DeviceExtension,FileObject); + Status = NtfsCloseFile(DeviceExtension, FileObject); -ByeBye: - Irp->IoStatus.Status = Status; - Irp->IoStatus.Information = 0; - - IoCompleteRequest(Irp, IO_NO_INCREMENT); + IrpContext->Irp->IoStatus.Information = 0; return Status; } diff --git a/reactos/drivers/filesystems/ntfs/dispatch.c b/reactos/drivers/filesystems/ntfs/dispatch.c index 91cea558f51..0e8a8ded846 100644 --- a/reactos/drivers/filesystems/ntfs/dispatch.c +++ b/reactos/drivers/filesystems/ntfs/dispatch.c @@ -96,6 +96,10 @@ NtfsDispatch(PNTFS_IRP_CONTEXT IrpContext) case IRP_MJ_WRITE: Status = NtfsWrite(IrpContext); break; + + case IRP_MJ_CLOSE: + Status = NtfsClose(IrpContext); + break; } ASSERT((!(IrpContext->Flags & IRPCONTEXT_COMPLETE) && !(IrpContext->Flags & IRPCONTEXT_QUEUE)) || diff --git a/reactos/drivers/filesystems/ntfs/ntfs.c b/reactos/drivers/filesystems/ntfs/ntfs.c index cbb53a8db26..3acdb8858d5 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.c +++ b/reactos/drivers/filesystems/ntfs/ntfs.c @@ -124,7 +124,7 @@ NTAPI NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject) { DriverObject->MajorFunction[IRP_MJ_CREATE] = NtfsFsdCreate; - DriverObject->MajorFunction[IRP_MJ_CLOSE] = NtfsFsdClose; + DriverObject->MajorFunction[IRP_MJ_CLOSE] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_READ] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_WRITE] = NtfsFsdDispatch; DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch; diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index 530f4f085f1..7c6e5fe5204 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -521,10 +521,8 @@ NTSTATUS NtfsCloseFile(PDEVICE_EXTENSION DeviceExt, PFILE_OBJECT FileObject); -DRIVER_DISPATCH NtfsFsdClose; -NTSTATUS NTAPI -NtfsFsdClose(PDEVICE_OBJECT DeviceObject, - PIRP Irp); +NTSTATUS +NtfsClose(PNTFS_IRP_CONTEXT IrpContext); /* create.c */