if (!NT_SUCCESS(Status))
return Status;
- RangeStart = Offset - (Offset % _64K);
- if (RangeEnd % _64K)
- RangeEnd += _64K - (RangeEnd % _64K);
+ /* If the file is not random access, read a 64K Chunk. */
+ if (!FlagOn(FileObject->Flags, FO_RANDOM_ACCESS))
+ {
+ RangeStart = Offset - (Offset % _64K);
+ if (RangeEnd % _64K)
+ RangeEnd += _64K - (RangeEnd % _64K);
+ }
+ else
+ {
+ RangeStart = Offset - (Offset % PAGE_SIZE);
+ if (RangeEnd % PAGE_SIZE)
+ RangeEnd += PAGE_SIZE - (RangeEnd % PAGE_SIZE);
+ }
/* Clamp if needed */
if (!FlagOn(*Segment->Flags, MM_DATAFILE_SEGMENT))