VirtualBox

Ignore:
Timestamp:
Nov 28, 2019 4:15:37 PM (5 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
135086
Message:

Main/SystemProperties: add a method for querying which storage bus is applicable for a certain storage controller and a method for querying which storage controller types are valid for a certain storage bus

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/src-server/SystemPropertiesImpl.cpp

    r82251 r82268  
    536536        default:
    537537            AssertMsgFailed(("Invalid bus type %d\n", aBus));
     538    }
     539
     540    return S_OK;
     541}
     542
     543HRESULT SystemProperties::getStorageBusForStorageControllerType(StorageControllerType_T aStorageControllerType,
     544                                                                StorageBus_T *aStorageBus)
     545{
     546    /* no need to lock, this is const */
     547    switch (aStorageControllerType)
     548    {
     549        case StorageControllerType_LsiLogic:
     550        case StorageControllerType_BusLogic:
     551            *aStorageBus = StorageBus_SCSI;
     552            break;
     553        case StorageControllerType_IntelAhci:
     554            *aStorageBus = StorageBus_SATA;
     555            break;
     556        case StorageControllerType_PIIX3:
     557        case StorageControllerType_PIIX4:
     558        case StorageControllerType_ICH6:
     559            *aStorageBus = StorageBus_IDE;
     560            break;
     561        case StorageControllerType_I82078:
     562            *aStorageBus = StorageBus_Floppy;
     563            break;
     564        case StorageControllerType_LsiLogicSas:
     565            *aStorageBus = StorageBus_SAS;
     566            break;
     567        case StorageControllerType_USB:
     568            *aStorageBus = StorageBus_USB;
     569            break;
     570        case StorageControllerType_NVMe:
     571            *aStorageBus = StorageBus_PCIe;
     572            break;
     573        case StorageControllerType_VirtioSCSI:
     574            *aStorageBus = StorageBus_VirtioSCSI;
     575            break;
     576        default:
     577            return setError(E_FAIL, tr("Invalid storage controller type %d\n"), aStorageBus);
     578    }
     579
     580    return S_OK;
     581}
     582
     583HRESULT SystemProperties::getStorageControllerTypesForStorageBus(StorageBus_T aStorageBus,
     584                                                                 std::vector<StorageControllerType_T> &aStorageControllerTypes)
     585{
     586    aStorageControllerTypes.resize(0);
     587
     588    /* no need to lock, this is const */
     589    switch (aStorageBus)
     590    {
     591        case StorageBus_IDE:
     592            aStorageControllerTypes.resize(3);
     593            aStorageControllerTypes[0] = StorageControllerType_PIIX4;
     594            aStorageControllerTypes[1] = StorageControllerType_PIIX3;
     595            aStorageControllerTypes[2] = StorageControllerType_ICH6;
     596            break;
     597        case StorageBus_SATA:
     598            aStorageControllerTypes.resize(1);
     599            aStorageControllerTypes[0] = StorageControllerType_IntelAhci;
     600            break;
     601        case StorageBus_SCSI:
     602            aStorageControllerTypes.resize(2);
     603            aStorageControllerTypes[0] = StorageControllerType_LsiLogic;
     604            aStorageControllerTypes[1] = StorageControllerType_BusLogic;
     605            break;
     606        case StorageBus_Floppy:
     607            aStorageControllerTypes.resize(1);
     608            aStorageControllerTypes[0] = StorageControllerType_I82078;
     609            break;
     610        case StorageBus_SAS:
     611            aStorageControllerTypes.resize(1);
     612            aStorageControllerTypes[0] = StorageControllerType_LsiLogicSas;
     613            break;
     614        case StorageBus_USB:
     615            aStorageControllerTypes.resize(1);
     616            aStorageControllerTypes[0] = StorageControllerType_USB;
     617            break;
     618        case StorageBus_PCIe:
     619            aStorageControllerTypes.resize(1);
     620            aStorageControllerTypes[0] = StorageControllerType_NVMe;
     621            break;
     622        case StorageBus_VirtioSCSI:
     623            aStorageControllerTypes.resize(1);
     624            aStorageControllerTypes[0] = StorageControllerType_VirtioSCSI;
     625            break;
     626        default:
     627            return setError(E_FAIL, tr("Invalid storage bus %d\n"), aStorageBus);
    538628    }
    539629
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette