PiDmGetObject

INT64 __fastcall PiDmGetObject(INT64 a1, WCHAR *a2, INT64 *a3){
  unsigned int v5; 
  struct _ERESOURCE *ObjectManagerForObjectType; 
  _ETHREAD *CurrentThread; 
  BOOL v8; 
  INT64 v9; 
  v5 = 0;
  ObjectManagerForObjectType = (struct _ERESOURCE *)PiDmGetObjectManagerForObjectType(a1);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --*((_WORD *)CurrentThread + 242);
  LOBYTE(v8) = 1;
  ExAcquireResourceSharedLite(ObjectManagerForObjectType, v8);
  v9 = PiDmLookupObject((INT64)ObjectManagerForObjectType, a2);
  *a3 = v9;
  if( v9 )
    _InterlockedIncrement((volatile signed __int32 *)(v9 + 8));
  else
    v5 = -1073741772;
  ExReleaseResourceLite(ObjectManagerForObjectType);
  KeLeaveCriticalRegionThread((__int64)KeGetCurrentThread());
  return v5;
}

Referenced by:

IopProcessSetInterfaceState
IopRegisterDeviceInterface
PiControlGetDeviceInterfaceEnabled
PiDmCacheDataEncode
PiDmGetObjectConstraintList
PiDmGetReferencedObjectFromProperty
PiDmObjectGetAggregatedBooleanPropertyData
PiDmObjectGetCachedObjectProperty
PiDmObjectGetCachedObjectPropertyData
PiDmObjectGetCachedObjectReference
PiDmObjectProcessPropertyChange
PiDmObjectUpdateCachedObjectProperty
PiPnpRtlApplyMandatoryDeviceContainerFilters
PiPnpRtlCmActionCallback
PiPnpRtlEnsureObjectCached
PiPnpRtlGatherContainerRemoveInfo
PiPnpRtlGatherInstallerClassChangeInfo
PiPnpRtlGatherInterfaceDeleteInfo
PiPnpRtlGatherPanelRemoveInfo
PiPnpRtlObjectEventCreate
PiUEventHandleRegistration