MiIncreaseUsedPtesCount
VOID __stdcall MiIncreaseUsedPtesCount(PVOID OpaquePointer, UINT64 INCR){
unsigned int v3;
UINT64 SpinCount;
LODWORD(SpinCount) = 0;
v3 = INCR;
while( _interlockedbittestandset64((volatile signed __int32 *)OpaquePointer + 6, 0x3Fui64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *((__int64 *)OpaquePointer + 3) < 0 );
}
*((_QWORD *)OpaquePointer + 2) ^= ((unsigned int)*((_QWORD *)OpaquePointer + 2) ^ ((unsigned int)*((_QWORD *)OpaquePointer + 2)
+ ((unsigned __int16)v3 << 16))) & 0x3FF0000;
_InterlockedAnd64((volatile signed __int64 *)OpaquePointer + 3, 0x7FFFFFFFFFFFFFFFui64);
if( v3 <= 1 )
MmIsAddressValidEx(*((_QWORD *)OpaquePointer + 1) | 0x8000000000000000ui64);
}Referenced by:
MiBuildForkPte
MiCommitExistingVad
MiCommitHotPatchTable
MiCompleteRestrictedImageFault
MiDecommitPages
MiInPagePageTable
MiInsertLargeUserMapping
MiInsertPhysicalPteMapping
MiProtectPrivateMemory
MiReservePageFileSpaceForPage
MiSplitPrivatePage
MiUpdateAwePageTable
MiUpdateForkMaps
MiUpdatePageTableUseCount
MiUpdatePrivateDemandZeroView