PipCheckValidNewDependencyEdge
UINT8 __stdcall PipCheckValidNewDependencyEdge(_PNP_DEPENDENCY_NODE *Dependent, _PNP_DEPENDENCY_NODE *Provider){
__int64 v2;
__int64 v3;
__int64 v4;
__int64 v5;
_PNP_DEPENDENCY_NODE *v6;
_LIST_ENTRY *v7;
_PNP_DEPENDENCY_EDGE *v8;
_LIST_ENTRY **v9;
__int64 v10;
if( Dependent == Provider )
return 0;
v2 = *((_QWORD *)Dependent + 6);
if( v2 )
v3 = *(_QWORD *)(*(_QWORD *)(v2 + 312) + 40i64);
else
v3 = 0i64;
v4 = *((_QWORD *)Provider + 6);
if( v4 )
v5 = *(_QWORD *)(*(_QWORD *)(v4 + 312) + 40i64);
else
v5 = 0i64;
if( v3 && v5 )
{
do
{
v5 = *(_QWORD *)(v5 + 16);
if( v5 == v3 )
return 0;
}
while( v5 != *(&PnpReplaceEvent + 831) );
}
v6 = Provider + 4;
v7 = (_LIST_ENTRY *)*((_QWORD *)Provider + 2);
while( v7 != (_LIST_ENTRY *)v6 )
{
v8 = PiListEntryToDependencyEdge(v7, ProviderList);
v7 = *v9;
if( *((_QWORD *)v8 + 4) == v10 )
return 0;
}
return 1;
}Referenced by:
PipAddDependencyEdgeBetweenNodes