PfpServiceMainThreadBoost
INT64 __fastcall PfpServiceMainThreadBoost(INT64 a1, INT64 *a2){
INT64 Dpc;
unsigned int v3;
unsigned __int8 v6;
unsigned __int64 v7;
__int64 v8;
Dpc = a2[1];
v3 = 0;
if( *a2 )
{
*(_DWORD *)(Dpc + 160) = 1;
KeAcquireSpinLockRaiseToDpc((UINT64 *)(a1 + 104), (UINT64)a2);
++*(_DWORD *)(a1 + 112);
v7 = v6;
*(_DWORD *)(Dpc + 164) = *(_DWORD *)(a1 + 112);
if( !*(_QWORD *)(a1 + 88) )
{
v8 = *a2;
*(_QWORD *)(a1 + 88) = *a2;
*a2 = 0i64;
*(_DWORD *)(a1 + 96) = KeSetActualBasePriorityThread(v8, 12);
}
KxReleaseSpinLock((UINT64 *)(a1 + 104));
__writecr8(v7);
*(_QWORD *)(Dpc + 64) = 0i64;
*(_QWORD *)(Dpc + 80) = Dpc + 72;
*(_QWORD *)(Dpc + 72) = Dpc + 72;
*(_BYTE *)(Dpc + 64) = 8;
*(_QWORD *)(Dpc + 88) = 0i64;
*(_DWORD *)(Dpc + 124) = 0;
*(_WORD *)(Dpc + 120) = 0;
*(_QWORD *)(Dpc + 24) = PfpPowerActionDpcRoutine;
*(_DWORD *)Dpc = 275;
*(_QWORD *)(Dpc + 32) = Dpc;
*(_QWORD *)(Dpc + 56) = 0i64;
*(_QWORD *)(Dpc + 16) = 0i64;
KiSetTimerEx((_KTIMER *)(Dpc + 64), (_LARGE_INTEGER)-200000000i64, 0i64, 0, (_KDPC *)Dpc);
a2[1] = 0i64;
}
else
{
return(unsigned int)-2147483614;
}
return v3;
}Referenced by:
PfpScenCtxScenarioSet