PMINIX_DEVICE_EXTENSION DeviceExt,
PMINIX_FSCONTEXT FsContext,
ULONG Offset,
- PVOID* Buffer,
- PCACHE_SEGMENT* CacheSeg)
+ PVOID* Buffer)
{
- BOOLEAN UptoDate;
NTSTATUS Status;
ULONG i;
ULONG DiskOffset;
-
- Status = CcRequestCachePage(FsContext->Bcb,
- Offset,
- Buffer,
- &UptoDate,
- CacheSeg);
- if (!NT_SUCCESS(Status))
- {
- return(Status);
- }
-
- if (!UptoDate)
+
+ *Buffer = ExAllocatePool(NonPagedPool, 4096);
+
+ for (i=0; i<4; i++)
{
- for (i=0; i<4; i++)
- {
- Status = MinixReadBlock(DeviceObject,
- DeviceExt,
- &FsContext->inode,
- Offset + (i * BLOCKSIZE),
- &DiskOffset);
- MinixReadSector(DeviceObject,
- DiskOffset / BLOCKSIZE,
- (*Buffer) + (i * BLOCKSIZE));
- }
+ Status = MinixReadBlock(DeviceObject,
+ DeviceExt,
+ &FsContext->inode,
+ Offset + (i * BLOCKSIZE),
+ &DiskOffset);
+ MinixReadSector(DeviceObject,
+ DiskOffset / BLOCKSIZE,
+ (*Buffer) + (i * BLOCKSIZE));
}
return(STATUS_SUCCESS);
}
PMINIX_FSCONTEXT FsContext = (PMINIX_FSCONTEXT)FileObject->FsContext;
unsigned int i;
PVOID DiskBuffer;
- PCACHE_SEGMENT CacheSeg;
DPRINT("MinixRead(DeviceObject %x, Irp %x)\n",DeviceObject,Irp);
DeviceExt,
FsContext,
CurrentOffset,
- &DiskBuffer,
- &CacheSeg);
+ &DiskBuffer);
memcpy(Buffer,
DiskBuffer+(Offset%PAGESIZE),
min(PAGESIZE - (Offset%PAGESIZE),Length));
- CcReleaseCachePage(FsContext->Bcb,
- CacheSeg,
- TRUE);
+ ExFreePool(DiskBuffer);
DPRINT("(BLOCKSIZE - (Offset%BLOCKSIZE)) %d\n",
(BLOCKSIZE - (Offset%BLOCKSIZE)));
DeviceExt,
FsContext,
CurrentOffset,
- &DiskBuffer,
- &CacheSeg);
+ &DiskBuffer);
memcpy(Buffer, DiskBuffer, PAGESIZE);
- CcReleaseCachePage(FsContext->Bcb,
- CacheSeg,
- TRUE);
-
+ ExFreePool(DiskBuffer);
+
CurrentOffset = CurrentOffset + PAGESIZE;
Buffer = Buffer + PAGESIZE;
}
DeviceExt,
FsContext,
CurrentOffset,
- &DiskBuffer,
- &CacheSeg);
+ &DiskBuffer);
memcpy(Buffer, DiskBuffer, (Length%PAGESIZE));
- CcReleaseCachePage(FsContext->Bcb,
- CacheSeg,
- TRUE);
+ ExFreePool(DiskBuffer);
}