HalpDmaFindAdapterByDeviceId

INT64 *__fastcall HalpDmaFindAdapterByDeviceId(INT64 a1){
  UINT64 v1; 
  INT64 *v2; 
  __int64 *v5; 
  UINT8 v6; 
  UINT8 v7; 
  INT64 *v8; 
  INT64 *v9; 
  v2 = 0i64;
  if( !a1 )
    return 0i64;
  KeAcquireSpinLockRaiseToDpc(&HalpDmaAdapterListLock, v1);
  v5 = (__int64 *)qword_140C4BCA8;
  v7 = v6;
  while( v5 != &HalpDmaAdapterList )
  {
    v8 = v5 - 57;
    v9 = (INT64 *)v5[9];
    if( v9 && IidAreIdsStrictlyEqual(v9, a1) )
    {
      if( ObReferenceObjectSafe(v8) )
        v2 = v8;
      break;
    }
    v5 = (__int64 *)v5[1];
  }
  KeReleaseSpinLock(&HalpDmaAdapterListLock, v7);
  return v2;
}

Referenced by:

HalpDmaAllocateChildAdapterV3