MiFreeInPageSupportBlock
VOID __stdcall MiFreeInPageSupportBlock(_MMINPAGE_SUPPORT *Support){
_MMINPAGE_SUPPORT *PrefetchMdl;
if( (struct _KTHREAD *)Support->Thread == KeGetCurrentThread() && Support->Autoboost )
KeAbPostRelease(Support);
if( _InterlockedExchangeAdd(&Support->WaitCount, 0xFFFFFFFF) == 1 )
{
PrefetchMdl = (_MMINPAGE_SUPPORT *)Support->PrefetchMdl;
if( PrefetchMdl && PrefetchMdl != (_MMINPAGE_SUPPORT *)&Support->Mdl )
ExFreePoolWithTag(PrefetchMdl, 0);
if( !MiInsertInPageBlock((PSLIST_ENTRY)Support) )
ExFreePoolWithTag(Support, 0);
}
}Referenced by:
MiAllocateInPageSupport
MiFaultGetFileExtents
MiFinishHardFault
MiFreeRotateVadEvent
MiGetReadyInPageBlock
MiHandleTransitionFault
MiPfAllocateMdls
MiPfPutPagesInTransition
MiPrivateFixup
MiResolveMappedFileFault
MiResolvePageFileFault
MiResolveTransitionFault
MiWaitForCollidedFaultComplete
MmPrefetchPagesEx