From a9a99db3312ff5013979ade592128684417dcf96 Mon Sep 17 00:00:00 2001 From: Pierre Schweitzer Date: Fri, 26 Sep 2014 06:41:51 +0000 Subject: [PATCH] [NTFS] - Divert NtfsReadSectors() into NtfsReadDisk() - Reimplement NtfsReadSectors() using NtfsReadDisk() svn path=/trunk/; revision=64294 --- reactos/drivers/filesystems/ntfs/blockdev.c | 44 +++++++++++++-------- reactos/drivers/filesystems/ntfs/ntfs.h | 7 ++++ 2 files changed, 34 insertions(+), 17 deletions(-) diff --git a/reactos/drivers/filesystems/ntfs/blockdev.c b/reactos/drivers/filesystems/ntfs/blockdev.c index 85586939343..3628bb39114 100644 --- a/reactos/drivers/filesystems/ntfs/blockdev.c +++ b/reactos/drivers/filesystems/ntfs/blockdev.c @@ -33,39 +33,32 @@ /* FUNCTIONS ****************************************************************/ NTSTATUS -NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, - IN ULONG DiskSector, - IN ULONG SectorCount, - IN ULONG SectorSize, - IN OUT PUCHAR Buffer, - IN BOOLEAN Override) +NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, + IN LONGLONG StartingOffset, + IN ULONG Length, + IN OUT PUCHAR Buffer, + IN BOOLEAN Override) { PIO_STACK_LOCATION Stack; IO_STATUS_BLOCK IoStatus; LARGE_INTEGER Offset; - ULONG BlockSize; KEVENT Event; PIRP Irp; NTSTATUS Status; + DPRINT("NtfsReadDisk(%p, %I64x, %u, %p, %d)\n", DeviceObject, StartingOffset, Length, Buffer, Override); + KeInitializeEvent(&Event, NotificationEvent, FALSE); - Offset.QuadPart = (LONGLONG)DiskSector * (LONGLONG)SectorSize; - BlockSize = SectorCount * SectorSize; - - DPRINT("NtfsReadSectors(DeviceObject %p, DiskSector %d, Buffer %p)\n", - DeviceObject, DiskSector, Buffer); - DPRINT("Offset %I64x BlockSize %ld\n", - Offset.QuadPart, - BlockSize); + Offset.QuadPart = StartingOffset; DPRINT("Building synchronous FSD Request...\n"); Irp = IoBuildSynchronousFsdRequest(IRP_MJ_READ, DeviceObject, Buffer, - BlockSize, + Length, &Offset, &Event, &IoStatus); @@ -93,11 +86,28 @@ NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, Status = IoStatus.Status; } - DPRINT("NtfsReadSectors() done (Status %x)\n", Status); + DPRINT("NtfsReadDisk() done (Status %x)\n", Status); return Status; } +NTSTATUS +NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, + IN ULONG DiskSector, + IN ULONG SectorCount, + IN ULONG SectorSize, + IN OUT PUCHAR Buffer, + IN BOOLEAN Override) +{ + LONGLONG Offset; + ULONG BlockSize; + + Offset = (LONGLONG)DiskSector * (LONGLONG)SectorSize; + BlockSize = SectorCount * SectorSize; + + return NtfsReadDisk(DeviceObject, Offset, BlockSize, Buffer, Override); +} + NTSTATUS NtfsDeviceIoControl(IN PDEVICE_OBJECT DeviceObject, diff --git a/reactos/drivers/filesystems/ntfs/ntfs.h b/reactos/drivers/filesystems/ntfs/ntfs.h index cbdc3f0997b..0da7175b644 100644 --- a/reactos/drivers/filesystems/ntfs/ntfs.h +++ b/reactos/drivers/filesystems/ntfs/ntfs.h @@ -385,6 +385,13 @@ NtfsDumpFileAttributes(PFILE_RECORD_HEADER FileRecord); /* blockdev.c */ +NTSTATUS +NtfsReadDisk(IN PDEVICE_OBJECT DeviceObject, + IN LONGLONG StartingOffset, + IN ULONG Length, + IN OUT PUCHAR Buffer, + IN BOOLEAN Override); + NTSTATUS NtfsReadSectors(IN PDEVICE_OBJECT DeviceObject, IN ULONG DiskSector, -- 2.17.1