IovUtilRelateDeviceObjects
void __fastcall IovUtilRelateDeviceObjects(__int64 a1, __int64 a2, _DWORD *a3){
__int64 v5;
KIRQL v6;
__int64 v7;
v5 = a1;
if( a1 == a2 )
{
*a3 = 0;
}
else
{
v6 = KeAcquireQueuedSpinLock(0xAui64);
if( v5 == *(_QWORD *)(a2 + 24) )
{
*a3 = 1;
}
else
{
v7 = *(_QWORD *)(v5 + 24);
if( v7 == a2 )
{
*a3 = 2;
}
else
{
do
{
if( v5 == a2 )
break;
v5 = *(_QWORD *)(*(_QWORD *)(v5 + 312) + 48i64);
}
while( v5 );
if( v5 )
{
*a3 = 3;
}
else
{
while( v7 && v7 != a2 )
v7 = *(_QWORD *)(v7 + 24);
*a3 = 5 - (v7 != 0);
}
}
}
KeReleaseQueuedSpinLock(0xAui64, v6);
}
}Referenced by:
IovpExamineDevObjForwarding