PipNotifyDeviceDependencyList

VOID __stdcall PipNotifyDeviceDependencyList(_DEVICE_NODE *DeviceNode, PNP_DEPENDENCY_EDGE_LIST_TYPE Mode){
  _DEVICE_OBJECT *PhysicalDeviceObject; 
  _LIST_ENTRY *DependentList; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *v6; 
  _PNP_DEPENDENCY_EDGE *v7; 
  _PNP_DEPENDENCY_NODE *v8; 
  _PNP_DEPENDENCY_NODE *v9; 

  PhysicalDeviceObject = DeviceNode->PhysicalDeviceObject;
  PnpAcquireDependencyRelationsLock(0);
  if( Mode )
  {
    if( Mode != DependentList )
      goto LABEL_5;
    DependentList = PiGetDependentList(PhysicalDeviceObject);
  }
  else
  {
    DependentList = PiGetProviderList(PhysicalDeviceObject);
  }
  Flink = DependentList->Flink;
  v6 = DependentList;
  while( Flink != v6 )
  {
    v7 = PiListEntryToDependencyEdge(Flink, Mode);
    Flink = Flink->Flink;
    if( Mode )
    {
      v9 = (_PNP_DEPENDENCY_NODE *)*((_QWORD *)v7 + 5);
      v8 = 0i64;
    }
    else
    {
      v8 = (_PNP_DEPENDENCY_NODE *)*((_QWORD *)v7 + 4);
      v9 = 0i64;
    }
    PipNotifyDependenciesChanged(v9, v8);
  }
LABEL_5:
  ExReleaseResourceLite((PERESOURCE)((char *)&stru_140C452E0 + 384));
  PpDevNodeUnlockTree(PPL_SIMPLE_READ);
}

Referenced by:

PnpNewDeviceNodeDependencyCheck