PsIsVsmEnclaveTerminated
BOOL __stdcall PsIsVsmEnclaveTerminated(INT64 a1){
_ETHREAD *CurrentThread;
_EX_PUSH_LOCK *v3;
int v4;
bool v5;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
v3 = (_EX_PUSH_LOCK *)(a1 + 48);
ExAcquirePushLockExclusiveEx((_EX_PUSH_LOCK *)(a1 + 48), 0i64);
v4 = *(_DWORD *)(a1 + 44);
if( !v4 )
{
*(_DWORD *)(a1 + 44) = 2;
KeSetEvent((PRKEVENT)(a1 + 80), 0, 0);
v4 = *(_DWORD *)(a1 + 44);
}
v5 = v4 == 2;
if( (_InterlockedExchangeAdd64(&v3->_bf_0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
ExfTryToWakePushLock(v3);
KeAbPostRelease(v3);
KeLeaveCriticalRegion();
return v5;
}Referenced by:
MiCanDeleteEnclave