PopFxActivateComponentWorker
void __fastcall PopFxActivateComponentWorker(ULONG_PTR a1, __int64 a2, char a3, int *a4){
char v5;
UINT64 v8;
char v9;
EVENT_DESCRIPTOR *v10;
UINT64 *v11;
int v12;
__int64 v13;
unsigned __int8 v14;
unsigned __int64 v15;
bool v16;
__int64 v17;
__int64 v18;
v5 = a3;
PopFxAddRefDevice(a1);
if( *(_DWORD *)(a2 + 172) )
{
v11 = (UINT64 *)(a2 + 128);
KeAcquireSpinLockRaiseToDpc((UINT64 *)(a2 + 128), v8);
v12 = *(_DWORD *)(a2 + 172);
v13 = 0i64;
v15 = v14;
*(_DWORD *)(a2 + 184) = v12;
v16 = v12 == 0;
if( v12 )
{
do
{
v17 = *(_QWORD *)(a2 + 176);
v18 = *(_QWORD *)(*(_QWORD *)(a1 + 832) + 8i64 * *(unsigned int *)(v17 + 8 * v13));
*(_BYTE *)(v17 + 8 * v13 + 4) = 1;
PopFxActivateComponent(a1, v18, 2, a3);
if( *(int *)(v18 + 88) < 0 )
{
*(_BYTE *)(*(_QWORD *)(a2 + 176) + 8 * v13 + 4) = 0;
--*(_DWORD *)(a2 + 184);
}
v13 = (unsigned int)(v13 + 1);
}
while( (unsigned int)v13 < *(_DWORD *)(a2 + 172) );
v5 = a3;
v11 = (UINT64 *)(a2 + 128);
v16 = *(_DWORD *)(a2 + 184) == 0;
}
v9 = v16;
KxReleaseSpinLock(v11);
__writecr8(v15);
}
else
{
v9 = 1;
}
if( v5 )
{
PopFxCompleteComponentActivation(a1, a2, 0);
}
else if( v9 )
{
if( PopPluginComponentActive(a1, *(_DWORD *)(a2 + 16), 1, a4) == 1 )
PopFxProcessWork(0i64, a4, v10);
}
}Referenced by:
PoFxActivateComponent
PopFxActivateComponent
PopFxIdleWorkerTail