MiFillCombinePage
INT64 __fastcall MiFillCombinePage(
_MI_PAGE_COMBINING_SUPPORT *Pcs,
_MMPFN *SharedPfn,
_MMPFN *PrivatePfn,
VOID *PrivateMappedVa){
__int64 v5;
UINT64 v6;
unsigned int v7;
INT64 result;
void *v9;
v5 = (unsigned __int128)((SharedPfn - MmGetPfnDb()) * (__int128)0x2AAAAAAAAAAAAAABi64) >> 64;
v6 = ((unsigned __int64)v5 >> 63) + (v5 >> 3);
v7 = *((unsigned __int8 *)PrivatePfn + 34);
if( (((unsigned __int8)v7 ^ *((_BYTE *)SharedPfn + 34)) & 0xC0) != 0 )
MiChangePageAttribute((INT64)SharedPfn, v7 >> 6, 2);
LODWORD(result) = MiMapSinglePage(0i64, v6, 0x40000010ui64);
v9 = (void *)result;
if( result )
{
KeCopyPage((PVOID)result);
MiUnmapSinglePage(v9);
return 1i64;
}
return result;
}Referenced by:
MiConvertPrivateToProto
MiConvertStandbyToProto