PopDiagTraceFxRundown
VOID __stdcall PopDiagTraceFxRundown(){
_ETHREAD *CurrentThread;
UINT64 *i;
_POP_FX_DEVICE *j;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
--CurrentThread->Tcb.KernelApcDisable;
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 497, 0i64);
for( i = (UINT64 *)*(&stru_140C23628 + 493); i != (UINT64 *)((char *)&stru_140C23628 + 3944); i = (UINT64 *)*i )
PopDiagTraceFxPluginRegistration(i, i[3], 1u);
if( _InterlockedCompareExchange64((_QWORD *)&stru_140C23628 + 497, 0i64, 17i64) != 17 )
ExfReleasePushLockShared((_EX_PUSH_LOCK *)&stru_140C23628 + 497);
KeAbPostRelease((char *)&stru_140C23628 + 3976);
ExAcquirePushLockSharedEx((_EX_PUSH_LOCK *)&stru_140C23628 + 489, 0i64);
for( j = (_POP_FX_DEVICE *)*(&stru_140C23628 + 485);
j != (_POP_FX_DEVICE *)((char *)&stru_140C23628 + 3880);
j = *(_POP_FX_DEVICE **)j )
{
if( *((_QWORD *)j + 6) )
{
PopFxTraceDeviceRegistration(j, 1u);
PopDiagTraceDeviceVerboseRundown(j);
}
}
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:
PopDiagTraceControlCallback