MiTransferSoftwarePte
NTSTATUS __stdcall MiTransferSoftwarePte(UINT64 a1, INT64 a2, UINT64 a3){
INT64 v4;
char v5;
__int16 v6;
UINT64 v7;
int updated;
__int16 v9;
char v10;
int v11;
UINT64 v13;
v13 = a1;
v4 = (unsigned int)a3;
MiSetNonResidentPteHeat(&v13, 0i64);
if( (v6 & 0x400) != 0 || (v5 & 4) != 0 )
v7 = v13;
else
v7 = v13 & 0xFFFFFFFFFFFFFFF9ui64;
if( a2 )
{
if( v7 )
updated = MiUpdatePageFileHighInPte(v7, v4);
else
updated = MiSwizzleInvalidPte(v4 << 32);
LODWORD(v7) = updated ^ ((unsigned __int16)updated ^ (unsigned __int16)(v9 << 12)) & 0xF000;
v11 = v7;
if( (v10 & 1) != 0 )
{
LODWORD(v7) = v7 | 4;
v11 = v7;
}
if( (v10 & 2) != 0 )
LODWORD(v7) = v11 | 2;
}
return v7;
}Referenced by:
MiBuildForkPte
MiDecommitPages
MiFindFreePageFileSpace
MiRewriteTrimPteAsDemandZero
MiStoreWriteModifiedPages
MiTrimUnusedPageFileRegionsWorker
MiUpdatePfnBackingStore
MiWriteComplete
MiZeroCfgSystemWideBitmapWorker