PopPolicyWorkerAction
__int64 PopPolicyWorkerAction(){
char v0;
__int64 v1;
_SYSTEM_POWER_STATE v2;
unsigned int v3;
POWER_POLICY_DEVICE_TYPE v4;
unsigned int v5;
__int64 *i;
UINT64 v7;
UINT64 Flag;
__int64 v10;
unsigned int v11;
int v12;
EVENT_DATA_DESCRIPTOR EventData;
v0 = 0;
PopAcquirePolicyLock();
qword_140C23410 = (__int64)KeGetCurrentThread();
if( byte_140C23261 == 1 )
{
v1 = Action;
v2 = *(&Action + 1);
v3 = *(_DWORD *)Flags;
PopSetPowerActionState(2u);
v4 = SleepReason;
v5 = PopIssueActionRequest(0, (POWER_ACTION)v1, v2, v3);
v0 = 1;
if( (PopAction & 2) != 0 )
{
if( *(&Action + 1) == PowerActionShutdownReset )
v4 = PolicyImmediateDozeS4;
SleepReason = v4;
*(_DWORD *)Flags = *(_DWORD *)Flags & 0x7FFFFFDC | 0x80000020;
LOBYTE(PopAction) = PopAction & 0xFD;
PopSetPowerActionState(1u);
v7 = 2i64;
}
else
{
if( (*(_WORD *)(&PerfGlobalGroupMask + 2) & 0x8000) != 0 )
{
v12 = 0;
EventData.Reserved = 0;
EventData.Ptr = (unsigned __int64)&v10;
v10 = v1;
v11 = v5;
EventData.Size = 16;
LODWORD(Flag) = 4200450;
EtwTraceKernelEvent(&EventData, 1ui64, 0x80008000ui64, 0x1223u, Flag);
}
dword_140C23270 = v5;
PopSetPowerActionState(0);
for( i = (__int64 *)PopActionWaiters; i != &PopActionWaiters; i = (__int64 *)*i )
PopCompleteAction(i[2], v5);
v7 = 1i64;
}
PopGetPolicyWorker(v7);
}
qword_140C23410 = 0i64;
PopReleasePolicyLock();
if( v0 && PoPdcCallbacks )
PoPdcCallbacks();
if( *((_DWORD *)KeGetCurrentThread() + 121) )
__fastfail(0x20u);
return 0i64;
}Referenced by:
No references.