HalpGetAdapter

_ADAPTER_OBJECT *__stdcall HalpGetAdapter(
        _DEVICE_DESCRIPTION *DeviceDescriptor,
        _DEVICE_OBJECT *DeviceObject,
        UINT64 *NumberOfMapRegisters){
  _ADAPTER_OBJECT *v3; 
  CHAR v7; 
  __int64 v8; 
  unsigned int Version; 

  v3 = 0i64;
  *(_DWORD *)NumberOfMapRegisters = 0;
  if( !DeviceObject || (v7 = HalpAreDriversDmarCompatible(DeviceObject), v8 = 2i64, !v7) )
    v8 = 0i64;
  Version = DeviceDescriptor->Version;
  if( DeviceDescriptor->Version <= 2 && !(_DWORD)v8 )
    return HalGetAdapterV2(DeviceDescriptor, DeviceObject, NumberOfMapRegisters);
  if( Version == 3 || Version == 2 && DeviceDescriptor->Master && (_DWORD)v8 == 2 )
    return(_ADAPTER_OBJECT *)HalGetAdapterV3((const _UNICODE_STRING *)DeviceDescriptor, DeviceObject, (UINT64 *)v8);
  return v3;
}

Referenced by:

HalGetAdapter
HaliGetDmaAdapter