MiTrimUnusedPageFileRegionsApc
VOID __stdcall MiTrimUnusedPageFileRegionsApc(
VOID *NormalContext,
VOID *SystemArgument1,
VOID *SystemArgument2,
INT64 a4,
UINT64 a5){
_MI_PARTITION *v5;
_MMPAGING_FILE *v7;
__int64 v8;
UINT64 v9;
unsigned int FreePageFileSpace;
unsigned int v11;
unsigned __int64 Long;
unsigned __int64 v13;
__int64 v14;
UINT64 Size;
_MMPTE PageFileInfo;
v5 = (_MI_PARTITION *)*((_QWORD *)NormalContext + 3);
v7 = v5->Vp.PagingFile[*((unsigned int *)NormalContext + 8)];
v8 = MiSwizzleInvalidPte((unsigned __int64)*((unsigned int *)NormalContext + 10) << 32);
v9 = *((unsigned int *)NormalContext + 9);
PageFileInfo.u.Long = ((unsigned __int64)(v7->_bf_cc & 0xF) << 12) | v8 & 0xFFFFFFFFFFFF0FFFui64;
FreePageFileSpace = MiFindFreePageFileSpace(v5, &PageFileInfo, v9, 0xABui64);
v11 = FreePageFileSpace;
if( FreePageFileSpace >= *((_DWORD *)NormalContext + 9) )
{
Long = PageFileInfo.u.Long;
if( *(&stru_140C4DB30 + 42) && (PageFileInfo.u.Long & 0x10) == 0 )
Long = PageFileInfo.u.Long & ~*(&stru_140C4DB30 + 42);
v13 = HIDWORD(Long);
*((_DWORD *)NormalContext + 10) = v13;
v14 = MiSwizzleInvalidPte((unsigned __int64)(FreePageFileSpace + (unsigned int)v13) << 32);
Size = v7->Size;
PageFileInfo.u.Long = ((unsigned __int64)(v7->_bf_cc & 0xF) << 12) | v14 & 0xFFFFFFFFFFFF0FFFui64;
*((_DWORD *)NormalContext + 11) = v11 + MiFindFreePageFileSpace(v5, &PageFileInfo, Size, 0x6Bui64);
}
KeSetEvent((PRKEVENT)NormalContext, 0, 0);
}Referenced by:
No references.