#define NDEBUG
#include <debug.h>
-/* MACROS *******************************************************************/
-
-#define TAG_FCB 'BCFI'
-
/* FUNCTIONS ****************************************************************/
static
ASSERT(Vcb);
ASSERT(Vcb->Identifier.Type == NTFS_TYPE_VCB);
- Fcb = ExAllocatePoolWithTag(NonPagedPool, sizeof(NTFS_FCB), TAG_FCB);
+ Fcb = ExAllocateFromNPagedLookasideList(&NtfsGlobalData->FcbLookasideList);
RtlZeroMemory(Fcb, sizeof(NTFS_FCB));
Fcb->Identifier.Type = NTFS_TYPE_FCB;
ExDeleteResourceLite(&Fcb->MainResource);
- ExFreePool(Fcb);
+ ExFreeToNPagedLookasideList(&NtfsGlobalData->FcbLookasideList, Fcb);
}
ObDereferenceObject(Vcb->StreamFileObject);
if (Fcb)
- ExFreePool(Fcb);
+ NtfsDestroyFCB(Fcb);
if (Ccb)
ExFreePool(Ccb);
/* Initialize lookaside list for IRP contexts */
ExInitializeNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList,
NULL, NULL, 0, sizeof(NTFS_IRP_CONTEXT), 'PRIN', 0);
+ /* Initialize lookaside list for FCBs */
+ ExInitializeNPagedLookasideList(&NtfsGlobalData->FcbLookasideList,
+ NULL, NULL, 0, sizeof(NTFS_FCB), TAG_FCB, 0);
/* Driver can't be unloaded */
DriverObject->DriverUnload = NULL;
} NTFS_CCB, *PNTFS_CCB;
#define TAG_CCB 'BCCI'
+#define TAG_FCB 'BCFI'
typedef struct
{
ULONG Flags;
FAST_IO_DISPATCH FastIoDispatch;
NPAGED_LOOKASIDE_LIST IrpContextLookasideList;
+ NPAGED_LOOKASIDE_LIST FcbLookasideList;
} NTFS_GLOBAL_DATA, *PNTFS_GLOBAL_DATA;