PiDqQueryRelease
VOID __fastcall PiDqQueryRelease(VOID *P){
void *v2;
if( _InterlockedExchangeAdd((volatile signed __int32 *)P + 53, 0xFFFFFFFF) == 1 )
{
if( (byte_140C130BA & 0x40) != 0 )
McTemplateK0p_EtwWriteTransfer((INT64)P, (EVENT_DESCRIPTOR *)&KMPnPEvt_DevQuery_QueryStop, *((GUID **)P + 3), P);
PiDqQueryFreeActiveData((INT64)P);
v2 = (void *)*((_QWORD *)P + 3);
if( v2 )
ExFreePoolWithTag(v2, 0x6370726Bu);
if( *((_QWORD *)P + 2) )
MesHandleFree();
SeReleaseSubjectContext((_SECURITY_SUBJECT_CONTEXT *)P + 1);
ExFreePoolWithTag(P, 0x58706E50u);
}
}Referenced by:
PiDqDispatch
PiDqObjectManagerServiceActionQueue
PiDqObjectManagerUnregisterQuery