HvHiveConvertLockedPagesToCowByPolicy
NTSTATUS __stdcall HvHiveConvertLockedPagesToCowByPolicy(INT64 a1){
INT64 v1;
_EX_PUSH_LOCK *v5;
_EX_PUSH_LOCK *v6;
int locked;
v1 = a1 + 216;
if( (*(_DWORD *)(a1 + 248) & 4) == 0 )
return 0;
v5 = (_EX_PUSH_LOCK *)(a1 + 72);
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)(a1 + 72), 0i64);
v6 = (_EX_PUSH_LOCK *)(a1 + 80);
ExAcquirePushLockExclusiveEx(v6, 0i64);
locked = HvpViewMapConvertLockedPagesToCOWByPolicy(v1);
if( (_InterlockedExchangeAdd64(&v6->_bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(v6);
KeAbPostRelease(v6);
if( _InterlockedCompareExchange64(&v5->_bf_0, 0i64, 17i64) != 17 )
ExfReleasePushLockShared(v5);
KeAbPostRelease(v5);
if( locked >= 0 )
return 0;
return locked;
}Referenced by:
CmpDoLocalizeNextHive