IopDuplicateDetection
__int64 __fastcall IopDuplicateDetection(unsigned int a1, unsigned int a2, unsigned int a3, _QWORD *a4){
unsigned int v4;
__int64 *LegacyBusDeviceNode;
void(__fastcall **v11)(_QWORD);
__int64 v12[5];
PVOID P;
v4 = 0;
P = 0i64;
v12[0] = 0i64;
*a4 = 0i64;
LegacyBusDeviceNode = IopFindLegacyBusDeviceNode(a1, a2);
if( !LegacyBusDeviceNode )
return 3221225488i64;
if( (int)IopQueryResourceHandlerInterface(3, LegacyBusDeviceNode[4], 0, &P) < 0 )
return 3221225488i64;
v11 = (void(__fastcall **)(_QWORD))P;
if( !P )
return 3221225488i64;
if( (*((int(__fastcall **)(_QWORD, _QWORD, _QWORD, _QWORD, __int64 *))P + 4))(*((_QWORD *)P + 1), a1, a2, a3, v12) >= 0
&& v12[0] )
{
*a4 = *(_QWORD *)(*(_QWORD *)(v12[0] + 312) + 40i64);
}
else
{
v4 = -1073741808;
}
v11[3](v11[1]);
ExFreePoolWithTag(v11, 0);
return v4;
}Referenced by:
IoReportDetectedDevice