MiComputeCommitChargeForZeroPteRange
NTSTATUS __stdcall MiComputeCommitChargeForZeroPteRange(_MMVAD_SHORT *Vad, _MMPTE *PointerPte, UINT64 NumberOfPages){
NTSTATUS v3;
union {unsigned int LongFlags;_MMVAD_FLAGS VadFlags;_MM_PRIVATE_VAD_FLAGS PrivateVadFlags;_MM_GRAPHICS_VAD_FLAGS GraphicsVadFlags;_MM_SHARED_VAD_FLAGS SharedVadFlags;volatile unsigned int VolatileVadLong;} v5;
UINT64 v6;
unsigned __int64 v8;
int v9;
UINT64 PagesProcessedOut;
v3 = 0;
v5.LongFlags = (unsigned int)Vad->u;
v6 = NumberOfPages;
PagesProcessedOut = 0i64;
if( (v5.LongFlags & 0x100000) != 0 )
{
if( (Vad->u1.LongFlags1 & 0x80000000) == 0 )
LODWORD(v6) = 0;
return v6;
}
if( (v5.LongFlags & 0x70) != 32 )
{
if( (v5.LongFlags & 0x280) != 640 )
LODWORD(v6) = 0;
return v6;
}
v8 = (unsigned __int64)((__int64)(((_QWORD)PointerPte << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16) >> 12;
if( NumberOfPages )
{
do
{
MiComputeImageVadCommitCharge((_MMVAD *)Vad, v8, v6, &PagesProcessedOut);
v8 += PagesProcessedOut;
v3 += v9;
v6 -= PagesProcessedOut;
}
while( v6 );
}
return v3;
}Referenced by:
MiCheckCommitReleaseFromVad