PoLatencySensitivityHint
VOID __stdcall PoLatencySensitivityHint(INT64 a1){
int v1;
int v2;
_BYTE *i;
REGHANDLE v4;
UINT64 v5;
bool v6;
bool v7;
int v8[8];
int v9;
UINT64 PreviousTime;
UINT64 v11;
_EVENT_DATA_DESCRIPTOR UserData;
v1 = a1;
PreviousTime = 0i64;
if( !*(&stru_140C23628 + 3532) || (_DWORD)a1 != 4 )
{
v2 = 0;
for( i = (_BYTE *)(2736i64 * *(&stru_140C23628 + 441) + *(&stru_140C00F40 + 365) + 117i64); !*i; ++i )
{
if( (unsigned int)++v2 >= 2 )
return;
}
v9 = a1;
if( PpmEtwRegistered )
{
v4 = PpmEtwHandle;
if( EtwEventEnabled(PpmEtwHandle, &PPM_ETW_LATENCY_SENSITIVITY_HINT) )
{
*(_QWORD *)&UserData.Size = 4i64;
UserData.Ptr = (unsigned __int64)&v9;
EtwWriteEx(v4, &PPM_ETW_LATENCY_SENSITIVITY_HINT, 0i64, 0, 0, 0, 1u, &UserData);
}
}
v11 = 0i64;
v6 = PpmInterlockedUpdateTimeNoFence(
(UINT64 *)&stru_140C23628 + 440,
*(&PopIrpWorkerControlEvent + 160) + *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart,
&PreviousTime) != 0;
if( v1 == 4 && PpmInterlockedUpdateTimeNoFence((UINT64 *)&stru_140C23628 + 439, v5, &v11) )
v6 = 1;
if( v6 )
{
_InterlockedOr(v8, 0);
v7 = PreviousTime <= *(&PopIrpWorkerControlEvent + 159);
if( v1 == 4 && v11 <= *(&PopIrpWorkerControlEvent + 159) )
v7 = 1;
if( v7 )
{
if( PpmTryAcquireLock() )
{
PpmCheckCustomRun(PpmCheckIdAsyncLatencyHint);
}
else if( !_InterlockedExchange((_DWORD *)&stru_140C23628 + 869, 1) )
{
ExQueueWorkItem(
(PWORK_QUEUE_ITEM)((char *)&stru_140C23628 + 3480),
CustomPriorityWorkQueue|NormalWorkQueue|0x18);
}
}
}
}
}Referenced by:
PopPerfBoostPowerRequest
PopPowerInformationInternal