IopEliminateBogusConflict
UINT8 __stdcall IopEliminateBogusConflict(_DEVICE_OBJECT *PhysicalDeviceObject, _DEVICE_OBJECT *ConflictDeviceObject){
KIRQL v4;
_DEVICE_OBJECT *v5;
__int64 v6;
__int64 v7;
const UNICODE_STRING *v8;
const UNICODE_STRING *v9;
if( !PhysicalDeviceObject || !ConflictDeviceObject )
return 0;
v4 = KeAcquireQueuedSpinLock(0xAui64);
v5 = PhysicalDeviceObject;
do
{
if( v5 == ConflictDeviceObject )
{
KeReleaseQueuedSpinLock(0xAui64, v4);
return 1;
}
v5 = (_DEVICE_OBJECT *)*((_QWORD *)v5 + 3);
}
while( v5 );
KeReleaseQueuedSpinLock(0xAui64, v4);
v6 = *(_QWORD *)(*((_QWORD *)PhysicalDeviceObject + 39) + 40i64);
if( (*(_DWORD *)(v6 + 396) & 0x1000) != 0 && (*((_DWORD *)ConflictDeviceObject + 12) & 0x1000) == 0 )
{
v7 = *((_QWORD *)ConflictDeviceObject + 1);
if( v7 )
{
v8 = (const UNICODE_STRING *)(v6 + 56);
if( v8->Length )
{
v9 = (const UNICODE_STRING *)(*(_QWORD *)(v7 + 48) + 24i64);
if( v8->Length == v9->Length && !(unsigned int)RtlCompareUnicodeString(v8, v9, 1u) )
return 1;
}
}
}
return 0;
}Referenced by:
IopQueryConflictFillConflicts