PipCheckForUnsatisfiedDependencies
UINT8 __stdcall PipCheckForUnsatisfiedDependencies(_DEVICE_NODE *DeviceNode, UINT64 DependencyTypes){
_DEVICE_OBJECT *PhysicalDeviceObject;
unsigned __int8 v3;
_LIST_ENTRY *ProviderList;
void *v5;
_LIST_ENTRY *Flink;
_DEVICE_NODE *v8;
UINT64 DependencyTypesa;
_DEVICE_OBJECT *Provider;
PhysicalDeviceObject = DeviceNode->PhysicalDeviceObject;
LODWORD(DependencyTypesa) = 0;
v3 = DependencyTypes;
Provider = 0i64;
ProviderList = PiGetProviderList(PhysicalDeviceObject);
Flink = ProviderList->Flink;
if( ProviderList->Flink != ProviderList )
{
while( 1 )
{
PiEnumerateProviderListEntry(Flink, &Provider, &DependencyTypesa);
Flink = Flink->Flink;
v8 = (_DEVICE_NODE *)(Provider ? Provider->DeviceObjectExtension->DeviceNode : v5);
if( !Provider || !v8 || (v3 & (unsigned __int8)DependencyTypesa & 3) != 0 && !PipIsProviderStarted(v8) )
break;
if( Flink == ProviderList )
return(unsigned __int8)v5;
}
LOBYTE(v5) = 1;
}
return(unsigned __int8)v5;
}Referenced by:
PipAttemptDependentStart
PnpCheckForActiveDependencies