}
else
{
- ExFreePoolWithTag(IrpContext, 'PRIN');
+ ExFreeToNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList, IrpContext);
}
IoSetTopLevelIrp(NULL);
TRACE_(NTFS, "NtfsAllocateIrpContext()\n");
- IrpContext = (PNTFS_IRP_CONTEXT)ExAllocatePoolWithTag(NonPagedPool,
- sizeof(NTFS_IRP_CONTEXT),
- 'PRIN');
+ IrpContext = (PNTFS_IRP_CONTEXT)ExAllocateFromNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList);
if (IrpContext == NULL)
return NULL;
NtfsGlobalData->FastIoDispatch.FastIoWrite = NtfsFastIoWrite;
DriverObject->FastIoDispatch = &NtfsGlobalData->FastIoDispatch;
+ /* Initialize lookaside list for IRP contexts */
+ ExInitializeNPagedLookasideList(&NtfsGlobalData->IrpContextLookasideList,
+ NULL, NULL, 0, sizeof(NTFS_IRP_CONTEXT), 'PRIN', 0);
+
/* Driver can't be unloaded */
DriverObject->DriverUnload = NULL;
CACHE_MANAGER_CALLBACKS CacheMgrCallbacks;
ULONG Flags;
FAST_IO_DISPATCH FastIoDispatch;
+ NPAGED_LOOKASIDE_LIST IrpContextLookasideList;
} NTFS_GLOBAL_DATA, *PNTFS_GLOBAL_DATA;