IopCheckIfMergeRequired
UINT8 __stdcall IopCheckIfMergeRequired(_RELATION_LIST *PendingList, _RELATION_LIST *NewList){
char v3;
__int64 v4;
char v5;
_LIST_ENTRY *ProviderList;
_LIST_ENTRY *Flink;
_LIST_ENTRY **v8;
char v9;
_DEVICE_OBJECT *DeviceObject;
_DEVICE_OBJECT *Provider;
UINT64 DependencyTypes;
_RELATION_LIST_MARKER Marker;
DeviceObject = 0i64;
Provider = 0i64;
Marker.Mode = ENUMERATE_ANY_ORDER;
Marker.Counter = 0;
LABEL_2:
while( IopEnumerateRelations(PendingList, &Marker, &DeviceObject, 0i64, 0i64) )
{
PipIsDeviceInDeviceObjectList();
if( v3 )
return 1;
PipIsDeviceInDeviceObjectList();
if( v5 )
return 1;
ProviderList = PiGetProviderList(*(_DEVICE_OBJECT **)(v4 + 32));
Flink = ProviderList->Flink;
if( ProviderList->Flink != ProviderList )
{
while( 1 )
{
PiEnumerateProviderListEntry(Flink, &Provider, &DependencyTypes);
Flink = *v8;
if( Provider )
{
PipIsDeviceInDeviceObjectList();
if( v9 )
return 1;
}
if( Flink == ProviderList )
goto LABEL_2;
}
}
}
return 0;
}Referenced by:
PnpQueuePendingSurpriseRemoval