PopAcquireAdaptiveLock
VOID __stdcall PopAcquireAdaptiveLock(UINT8 Win32kActivation){
INT64 v1;
int v2;
_ETHREAD *CurrentThread;
_LARGE_INTEGER Interval;
_WIN32_POWERSTATE_PARAMETERS Parms;
v2 = -1;
memset(&Parms, 0, sizeof(Parms));
if( !Win32kActivation )
{
v2 = PoBlockConsoleSwitch(&Parms);
Interval.QuadPart = -100000i64;
while( v2 != (_DWORD)PopConsoleContext )
KeDelayExecutionThread(0, 0, &Interval);
}
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquireResourceExclusiveLite((UINT64)&PopAdpmLock, 1, v1);
PopAdpmLockThread = (__int64)KeGetCurrentThread();
if( !Win32kActivation )
{
PopLazyContext = 0i64;
LOBYTE(PopLazyContext) = 1;
DWORD1(PopLazyContext) = v2;
qword_140C203B0 = 0i64;
}
}Referenced by:
PopActiveLockScreenPowerRequest
PopAdaptivePowerSettingCallback
PopIsLockConsoleTimeoutActive
PopSessionConnectionChange
PopSessionInputChange
PopSessionWinlogonNotification
PopSetDisplayStatus
PopUserPresentOverride