PopSetSpecialRequest
_KNOWN_CONTROLLER_TYPE __stdcall PopSetSpecialRequest(_KNOWN_CONTROLLER_TYPE a1, _KNOWN_CONTROLLER_TYPE a2){
VOID *v2;
char v3;
UINT64 v4;
_KNOWN_CONTROLLER_TYPE v5;
_EPROCESS *v6;
VOID *v7;
UINT64 Tag;
_EPROCESS *Process;
Process = 0i64;
v3 = 0;
v4 = *(_QWORD *)&a1;
if( a2 != InterruptControllerGic )
return -1073741811;
LODWORD(Tag) = 1917874000;
v5 = ObpReferenceObjectByHandleWithTag(
v2,
0x2000ui64,
(_OBJECT_TYPE *)PsProcessType,
1,
Tag,
(VOID **)&Process,
0i64,
0i64);
if( v5 >= InterruptControllerInvalid )
{
v6 = Process;
v7 = PsChargeProcessWakeCounter(Process, 0i64, PsWakeReasonInstrumentation, v4);
PopAcquirePowerRequestPushLock(1u);
if( *(_QWORD *)(v4 + 120) )
{
v3 = 1;
v5 = -1073741811;
}
else
{
*(_QWORD *)(v4 + 120) = v6;
*(_QWORD *)(v4 + 128) = v7;
++*(_DWORD *)(v4 + 44);
PopDiagTracePowerRequestChange((_PO_POWER_REQUEST *)v4);
v5 = InterruptControllerInvalid;
}
PopReleaseRwLock((_POP_RW_LOCK *)((char *)&stru_140C23628 + 5864));
if( v3 )
PsReleaseProcessWakeCounter(v7, v4);
ObfDereferenceObjectWithTag(v6, 0x72506F50ui64);
}
return v5;
}Referenced by:
PopPowerRequestActionInfo