PiDmObjectRelease
VOID __fastcall PiDmObjectRelease(CHAR *P){
void *v2;
CHAR *v3;
__int64 v4;
unsigned int v5;
DEVPROPKEY **v6;
v5 = 0;
if( _InterlockedExchangeAdd((volatile signed __int32 *)P + 2, 0xFFFFFFFF) == 1 )
{
v2 = (void *)*((_QWORD *)P + 2);
if( v2 )
ExFreePoolWithTag(v2, 0x5A706E50u);
PiDmGetCacheKeys(*((_DWORD *)P + 7), &v6, &v5);
if( v5 )
{
v3 = P + 112;
v4 = v5;
do
{
PiDmCacheDataFree((INT64)v3);
v3 += 24;
--v4;
}
while( v4 );
}
ExFreePoolWithTag(P, 0x5A706E50u);
}
}Referenced by:
IopProcessSetInterfaceState
IopRegisterDeviceInterface
PiControlGetDeviceInterfaceEnabled
PiDmAddCacheReferenceForObject
PiDmCacheDataFree
PiDmEnumObjectsWithCallback
PiDmGetObjectConstraintList
PiDmGetReferencedObjectFromProperty
PiDmListEnumObjectsWithCallback
PiDmListInitEnumCallback
PiDmObjectCreate
PiDmObjectGetAggregatedBooleanPropertyData
PiDmObjectGetCachedObjectProperty
PiDmObjectGetCachedObjectPropertyData
PiDmObjectGetCachedObjectReference
PiDmObjectManagerPopulate
PiDmObjectProcessPropertyChange
PiDmObjectUpdateCachedObjectProperty
PiDmRemoveCacheReferenceForObject
PiPnpRtlApplyMandatoryDeviceContainerFilters
PiPnpRtlCmActionCallback
PiPnpRtlEnsureObjectCached
PiPnpRtlFreeInstallerClassChangeInfo
PiPnpRtlFreeInterfaceDeleteInfo
PiPnpRtlFreePanelRemoveInfo
PiPnpRtlObjectEventCreate
PiPnpRtlObjectEventRelease
PiUEventFreeClientRegistrationContext