IopTestConfiguration
NTSTATUS __stdcall IopTestConfiguration(
_PNP_RESOURCE_REQUEST *RequestTable,
UINT64 RequestTableCount,
_LIST_ENTRY *ArbiterList){
_LIST_ENTRY *Flink;
NTSTATUS v4;
unsigned int v6;
_LIST_ENTRY *v8;
char v9;
__int128 v11;
__int128 i;
Flink = ArbiterList->Flink;
v4 = 0;
v6 = RequestTableCount;
v11 = 0i64;
for( i = 0i64; Flink != ArbiterList; Flink = Flink->Flink )
{
if( BYTE1(Flink[1].Flink) )
{
v8 = Flink[-4].Flink;
DWORD2(v11) = 0;
*(_QWORD *)&i = 0i64;
*(_QWORD *)&v11 = Flink - 3;
PnpLookupArbitersNewResources(
(__int64)RequestTable,
v6,
(__int64)Flink[-4].Blink,
(char)Flink[-5].Blink,
&i,
(unsigned int *)&v11 + 2);
v4 = ((__int64(__fastcall *)(_LIST_ENTRY *, _QWORD, __int128 *))v8[2].Flink)(v8->Blink, 0i64, &v11);
if( v4 < 0 )
{
PnpLogDeviceConflictingResource((__int64)&Flink[-6].Blink, (__int64)v8->Blink);
LOBYTE(Flink[1].Flink) |= 2u;
return v4;
}
v9 = (__int64)Flink[1].Flink & 0xFD;
BYTE1(Flink[1].Flink) = 0;
LOBYTE(Flink[1].Flink) = v9 | 1;
}
else if( ((__int64)Flink[1].Flink & 2) != 0 )
{
return -1073741823;
}
}
return v4;
}Referenced by:
PnpFindBestConfigurationWorker