mirror of
https://github.com/reactos/reactos.git
synced 2024-10-01 06:57:08 +00:00
[NTFS]
Handle IRP_MJ_READ with the dispatch routine svn path=/trunk/; revision=67634
This commit is contained in:
parent
241a326520
commit
edef9fdfae
|
@ -76,6 +76,10 @@ NtfsFsdDispatch(PDEVICE_OBJECT DeviceObject,
|
||||||
case IRP_MJ_DIRECTORY_CONTROL:
|
case IRP_MJ_DIRECTORY_CONTROL:
|
||||||
Status = NtfsDirectoryControl(IrpContext);
|
Status = NtfsDirectoryControl(IrpContext);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case IRP_MJ_READ:
|
||||||
|
Status = NtfsRead(IrpContext);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -121,7 +121,7 @@ NtfsInitializeFunctionPointers(PDRIVER_OBJECT DriverObject)
|
||||||
{
|
{
|
||||||
DriverObject->MajorFunction[IRP_MJ_CREATE] = NtfsFsdCreate;
|
DriverObject->MajorFunction[IRP_MJ_CREATE] = NtfsFsdCreate;
|
||||||
DriverObject->MajorFunction[IRP_MJ_CLOSE] = NtfsFsdClose;
|
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_WRITE] = NtfsFsdWrite;
|
||||||
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_QUERY_INFORMATION] = NtfsFsdDispatch;
|
||||||
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
DriverObject->MajorFunction[IRP_MJ_QUERY_VOLUME_INFORMATION] = NtfsFsdDispatch;
|
||||||
|
|
|
@ -759,10 +759,8 @@ NtfsFileFlagsToAttributes(ULONG NtfsAttributes,
|
||||||
|
|
||||||
/* rw.c */
|
/* rw.c */
|
||||||
|
|
||||||
DRIVER_DISPATCH NtfsFsdRead;
|
NTSTATUS
|
||||||
NTSTATUS NTAPI
|
NtfsRead(PNTFS_IRP_CONTEXT IrpContext);
|
||||||
NtfsFsdRead(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PIRP Irp);
|
|
||||||
|
|
||||||
DRIVER_DISPATCH NtfsFsdWrite;
|
DRIVER_DISPATCH NtfsFsdWrite;
|
||||||
NTSTATUS NTAPI
|
NTSTATUS NTAPI
|
||||||
|
|
|
@ -161,9 +161,7 @@ NtfsReadFile(PDEVICE_EXTENSION DeviceExt,
|
||||||
|
|
||||||
|
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
NTAPI
|
NtfsRead(PNTFS_IRP_CONTEXT IrpContext)
|
||||||
NtfsFsdRead(PDEVICE_OBJECT DeviceObject,
|
|
||||||
PIRP Irp)
|
|
||||||
{
|
{
|
||||||
PDEVICE_EXTENSION DeviceExt;
|
PDEVICE_EXTENSION DeviceExt;
|
||||||
PIO_STACK_LOCATION Stack;
|
PIO_STACK_LOCATION Stack;
|
||||||
|
@ -173,13 +171,17 @@ NtfsFsdRead(PDEVICE_OBJECT DeviceObject,
|
||||||
LARGE_INTEGER ReadOffset;
|
LARGE_INTEGER ReadOffset;
|
||||||
ULONG ReturnedReadLength = 0;
|
ULONG ReturnedReadLength = 0;
|
||||||
NTSTATUS Status = STATUS_SUCCESS;
|
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;
|
DeviceExt = DeviceObject->DeviceExtension;
|
||||||
Stack = IoGetCurrentIrpStackLocation(Irp);
|
|
||||||
FileObject = Stack->FileObject;
|
|
||||||
|
|
||||||
ReadLength = Stack->Parameters.Read.Length;
|
ReadLength = Stack->Parameters.Read.Length;
|
||||||
ReadOffset = Stack->Parameters.Read.ByteOffset;
|
ReadOffset = Stack->Parameters.Read.ByteOffset;
|
||||||
Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
|
Buffer = MmGetSystemAddressForMdl(Irp->MdlAddress);
|
||||||
|
@ -206,9 +208,6 @@ NtfsFsdRead(PDEVICE_OBJECT DeviceObject,
|
||||||
Irp->IoStatus.Information = 0;
|
Irp->IoStatus.Information = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Irp->IoStatus.Status = Status;
|
|
||||||
IoCompleteRequest(Irp,IO_NO_INCREMENT);
|
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue