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