PiDmGetObject

NTSTATUS __stdcall PiDmGetObject(PNP_OBJECT_TYPE ObjectType, WCHAR *ObjectName, PI_DM_OBJECT **Object){
  NTSTATUS v5; 
  _PI_DM_OBJECT_MANAGER *ObjectManagerForObjectType; 
  _ETHREAD *CurrentThread; 
  _PI_DM_OBJECT *v8; 

  v5 = 0;
  ObjectManagerForObjectType = PiDmGetObjectManagerForObjectType((_PNP_OBJECT_TYPE)ObjectType);
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  --CurrentThread->Tcb.KernelApcDisable;
  ExAcquireResourceSharedLite((UINT64)ObjectManagerForObjectType, 1);
  v8 = PiDmLookupObject(ObjectManagerForObjectType, ObjectName);
  *Object = v8;
  if( v8 )
    _InterlockedIncrement(v8 + 2);
  else
    v5 = -1073741772;
  ExReleaseResourceLite((PERESOURCE)ObjectManagerForObjectType);
  KeLeaveCriticalRegionThread(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