IopTranslateBusAddress

NTSTATUS __stdcall IopTranslateBusAddress(
        PHYSICAL_ADDRESS SourceAddress,
        UINT8 SourceResourceType,
        _LARGE_INTEGER *TargetAddress,
        UINT8 *TargetResourceType){
  ULONG v6; 
  _LARGE_INTEGER TranslatedAddress; 

  if( ((SourceResourceType - 3) & 0xFB) != 0 )
  {
    if( SourceResourceType != 1 )
      return -1073741811;
    v6 = 1;
  }
  else
  {
    v6 = 0;
  }
  TranslatedAddress.anonymous_0.LowPart = v6;
  if( !(unsigned __int8)HalTranslateBusAddress(Isa, 0, SourceAddress, &TranslatedAddress) )
    return -1073741823;
  if( (TranslatedAddress.anonymous_0.LowPart & 0xFFFFFFF9) == 0 )
  {
    if( !v6 && SourceResourceType == 7 )
      *TargetResourceType = 7;
    else
      *TargetResourceType = 3;
    return 0;
  }
  if( ((TranslatedAddress.anonymous_0.LowPart - 1) & 0xFFFFFFFD) == 0 )
  {
    *TargetResourceType = 1;
    return 0;
  }
  return -1073741811;
}

Referenced by:

IopGenericTranslateOrdering