PiDqQueryFreeActiveData
VOID __fastcall PiDqQueryFreeActiveData(INT64 a1){
struct _RTL_AVL_TABLE *i;
_QWORD **v3;
_QWORD *v4;
void *v5;
_QWORD *v6;
for( i = (struct _RTL_AVL_TABLE *)(a1 + 72); !RtlIsGenericTableEmptyAvl(i); i = (struct _RTL_AVL_TABLE *)(a1 + 72) )
PiDqQueryDeleteObjectFromResultSet(a1, *(_QWORD *)(*(_QWORD *)(a1 + 88) + 32i64));
v3 = (_QWORD **)(a1 + 192);
while( 1 )
{
v4 = *v3;
if( *v3 == v3 )
break;
if( (_QWORD **)v4[1] != v3 || (v6 = (_QWORD *)*v4, *(_QWORD **)(*v4 + 8i64) != v4) )
__fastfail(3u);
*v3 = v6;
v6[1] = v3;
PiDqQueryActionQueueEntryFree(v4);
}
*(_DWORD *)(a1 + 208) = 0;
v5 = *(void **)(a1 + 184);
if( v5 )
{
PiDqActionDataFree(v5);
*(_QWORD *)(a1 + 184) = 0i64;
}
}Referenced by:
PiDqIrpQueryCreate
PiDqIrpQueryGetResult
PiDqObjectManagerServiceActionQueue
PiDqQueryApplyObjectEvent
PiDqQueryRelease