PipCheckForUnsatisfiedDependencies
char __fastcall PipCheckForUnsatisfiedDependencies(__int64 a1, unsigned __int8 a2){
DEVICE_OBJECT *v2;
LIST_ENTRY *ProviderList;
__int64 v5;
LIST_ENTRY *Flink;
__int64 v8;
UINT64 DependencyTypes;
DEVICE_OBJECT *Provider;
v2 = *(DEVICE_OBJECT **)(a1 + 32);
LODWORD(DependencyTypes) = 0;
Provider = 0i64;
ProviderList = PiGetProviderList(v2);
Flink = ProviderList->Flink;
if( ProviderList->Flink != ProviderList )
{
while( 1 )
{
PiEnumerateProviderListEntry(Flink, &Provider, &DependencyTypes);
Flink = Flink->Flink;
v8 = Provider ? *(_QWORD *)(*((_QWORD *)Provider + 39) + 40i64) : v5;
if( !Provider || !v8 || (a2 & (unsigned __int8)DependencyTypes & 3) != 0 && !PipIsProviderStarted(v8) )
break;
if( Flink == ProviderList )
return v5;
}
LOBYTE(v5) = 1;
}
return v5;
}Referenced by:
PipAttemptDependentStart
PnpCheckForActiveDependencies