#define ROUND_DOWN(N, S) ((N) - ((N) % (S)))
-/* FUNCTIONS *****************************************************************/
+extern NPAGED_LOOKASIDE_LIST iBcbLookasideList;
-typedef struct _INTERNAL_BCB
-{
- PUBLIC_BCB PFCB;
- PCACHE_SEGMENT CacheSegment;
- BOOLEAN Dirty;
-} INTERNAL_BCB, *PINTERNAL_BCB;
+/* FUNCTIONS *****************************************************************/
BOOLEAN STDCALL
CcMapData (IN PFILE_OBJECT FileObject,
ReadOffset = FileOffset->QuadPart;
Bcb = ((REACTOS_COMMON_FCB_HEADER*)FileObject->FsContext)->Bcb;
-
+ assert(Bcb);
+
DPRINT("AllocationSize %d, FileSize %d\n",
(ULONG)Bcb->AllocationSize.QuadPart,
(ULONG)Bcb->FileSize.QuadPart);
}
}
*pBuffer += ReadOffset % Bcb->CacheSegmentSize;
- iBcb = ExAllocatePool (NonPagedPool, sizeof(INTERNAL_BCB));
+ iBcb = ExAllocateFromNPagedLookasideList(&iBcbLookasideList);
if (iBcb == NULL)
{
CcRosReleaseCacheSegment(Bcb, CacheSeg, TRUE, FALSE, FALSE);
return FALSE;
}
+ memset(iBcb, 0, sizeof(INTERNAL_BCB));
iBcb->CacheSegment = CacheSeg;
iBcb->Dirty = FALSE;
iBcb->PFCB.MappedLength = Length;
PINTERNAL_BCB iBcb = Bcb;
CcRosReleaseCacheSegment(iBcb->CacheSegment->Bcb, iBcb->CacheSegment, TRUE,
iBcb->Dirty, FALSE);
- ExFreePool(iBcb);
+ ExFreeToNPagedLookasideList(&iBcbLookasideList, iBcb);
}
VOID STDCALL
IN PLARGE_INTEGER Lsn)
{
PINTERNAL_BCB iBcb = Bcb;
-#if 0
iBcb->Dirty = TRUE;
-#else
- WriteCacheSegment(iBcb->CacheSegment);
-#endif
}