PopAcquireAdaptiveLock
VOID __stdcall PopAcquireAdaptiveLock(UINT8 Win32kActivation){
int v1;
_ETHREAD *CurrentThread;
union _LARGE_INTEGER Interval;
__int128 v5;
__int64 v6;
v1 = -1;
v6 = 0i64;
v5 = 0i64;
if( !Win32kActivation )
{
v1 = PoBlockConsoleSwitch(&v5);
Interval.QuadPart = -100000i64;
while( v1 != (_DWORD)PopConsoleContext )
KeDelayExecutionThread(0, 0, &Interval);
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--*((_WORD *)CurrentThread + 242);
ExAcquireResourceExclusiveLite(&PopAdpmLock, 1u);
PopAdpmLockThread = (__int64)KeGetCurrentThread();
if( !Win32kActivation )
{
PopLazyContext = 0i64;
LOBYTE(PopLazyContext) = 1;
DWORD1(PopLazyContext) = v1;
qword_140C203B0 = 0i64;
}
}Referenced by:
PopActiveLockScreenPowerRequest
PopAdaptivePowerSettingCallback
PopIsLockConsoleTimeoutActive
PopSessionConnectionChange
PopSessionInputChange
PopSessionWinlogonNotification
PopSetDisplayStatus
PopUserPresentOverride