PopArmIdlePhaseWatchdog
VOID __stdcall PopArmIdlePhaseWatchdog(INT64 a1){
__int64 v1;
__int64 v2;
int v3;
int v4;
UINT64 v5;
__int64 InputBuffer[14];
int v7;
__int64 v8;
v8 = 0i64;
v7 = 0;
v1 = *(&PopIrpWorkerControlEvent + 244);
v2 = (int)a1;
if( *(&PopIrpWorkerControlEvent + 244) && PopPdcAreAllPhasesDisengaged() )
{
PopSnapSystemIdleContext(&v8, &v7);
PopAcquireRwLockExclusive((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
v3 = v7;
*(&PopIrpWorkerControlEvent + 247) = v8;
*(&PopIrpWorkerControlEvent + 496) = v7;
PopReleaseRwLock((_POP_RW_LOCK *)((char *)&PopIrpWorkerControlEvent + 1960));
if( (_DWORD)v2 == 12 || (unsigned int)(v2 - 5) <= 1 )
v4 = PopIdleScanInterval + v3;
else
v4 = PopPdcIdlePhaseDefaultWatchdogTimeoutSeconds;
memset(InputBuffer, 0i64, 0x60u);
LODWORD(v5) = 0;
LODWORD(InputBuffer[0]) = 21;
InputBuffer[1] = v1;
LODWORD(InputBuffer[3]) = 160;
InputBuffer[4] = 2050i64;
LODWORD(InputBuffer[2]) = 1000 * v4;
InputBuffer[6] = (unsigned int)PopEventProcessorEnabled;
InputBuffer[7] = (__int64)&PopIrpWorkerControlEvent + 1952;
InputBuffer[10] = (__int64)InputBuffer;
InputBuffer[9] = (__int64)PopIdlePhaseWatchdogCallback;
InputBuffer[5] = v2;
ZwPowerInformation(PowerInformationInternal, InputBuffer, 0x60ui64, 0i64, v5);
}
}Referenced by:
PopProcessSessionDisplayStateChange