PopFxPauseDeviceAccounting
VOID __stdcall PopFxPauseDeviceAccounting(){
_ETHREAD *CurrentThread;
UINT64 v1;
UINT64 *i;
unsigned __int64 v3;
_QWORD *v4;
unsigned int j;
UINT64 *v6;
unsigned __int64 v7;
_QWORD *v8;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
v1 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
for( i = (UINT64 *)*(&stru_140C23628 + 485); i != (UINT64 *)((char *)&stru_140C23628 + 3880); i = (UINT64 *)*i )
{
if( i[6] )
{
if( *(&stru_140C23628 + 1058) < 0 )
{
v3 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(i + 75);
PopFxUpdateAccountingActiveTime((INT64)(i + 75), v1, 0x47868C00ui64);
PopFxMergeActiveTimeAccounting(v4);
KxReleaseSpinLock(i + 75);
__writecr8(v3);
}
for( j = 0; j < *((_DWORD *)i + 207); ++j )
{
v6 = (UINT64 *)(*(_QWORD *)(i[104] + 8i64 * j) + 200i64);
v7 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc(v6);
PopFxUpdateAccountingActiveTime((INT64)v6, v1, 0x47868C00ui64);
PopFxMergeActiveTimeAccounting(v8);
KxReleaseSpinLock(v6);
__writecr8(v7);
}
}
}
PopFxSetGlobalDeviceAccountingEnabled(0);
*(&stru_140C23628 + 4236) = 1;
if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 489, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 489);
KeAbPostRelease((char *)&stru_140C23628 + 3912);
KeLeaveCriticalRegionThread(KeGetCurrentThread());
}Referenced by:
PdcPoCurrentPdcPhase
PopPdcIdleResiliencyCallback