VirtualBox

Changeset 101164 in vbox for trunk/src/VBox


Ignore:
Timestamp:
Sep 19, 2023 10:01:39 AM (16 months ago)
Author:
vboxsync
Message:

doc/manual,Frontends/VBoxManage,Main/{Global,GuestOSType,VirtualBox.xidl}:
Extend the OSType struct by including a new element named 'variant'
to provide further guest OS details and aid in guest OS categorization
for the GUI when creating VMs. Populate this field in the
Global::sOSTypes[] table for Linux using the distro name and for BSD
using the BSD flavour. Include the variant information in 'VBoxManage
list ostypes' and add a new 'VBoxManage list osvariants' subcommand.
Add new IVirtualBox methods for accessing the guest OS variant
information: getGuestOSVariantsByFamilyId() and getGuestOSDescsByVariant().
bugref:5936

Location:
trunk/src/VBox
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageList.cpp

    r101128 r101164  
    20142014    kListRunningVMs,
    20152015    kListOsTypes,
     2016    kListOsVariants,
    20162017    kListHostDvds,
    20172018    kListHostFloppies,
     
    21752176                    guestOS->COMGETTER(FamilyDescription)(familyDescription.asOutParam());
    21762177                    RTPrintf(List::tr("Family Desc: %ls\n"), familyDescription.raw());
     2178                    Bstr guestOSVariant;
     2179                    guestOS->COMGETTER(Variant)(guestOSVariant.asOutParam());
     2180                    if (guestOSVariant.isNotEmpty())
     2181                        RTPrintf(List::tr("OS Variant:  %ls\n"), guestOSVariant.raw());
    21772182                    BOOL is64Bit;
    21782183                    guestOS->COMGETTER(Is64Bit)(&is64Bit);
    21792184                    RTPrintf(List::tr("64 bit:      %RTbool\n"), is64Bit);
    21802185                    RTPrintf("\n");
     2186                }
     2187            }
     2188            break;
     2189        }
     2190
     2191        case kListOsVariants:
     2192        {
     2193            com::SafeArray<BSTR> GuestOSFamilies;
     2194            CHECK_ERROR(pVirtualBox, COMGETTER(GuestOSFamilies)(ComSafeArrayAsOutParam(GuestOSFamilies)));
     2195            if (SUCCEEDED(hrc))
     2196            {
     2197                for (size_t i = 0; i < GuestOSFamilies.size(); ++i)
     2198                {
     2199                    const Bstr bstrOSFamily = GuestOSFamilies[i];
     2200                    com::SafeArray<BSTR> GuestOSVariants;
     2201                    CHECK_ERROR(pVirtualBox,
     2202                                COMGETTER(GuestOSVariantsByFamilyId)(bstrOSFamily.raw(),
     2203                                          ComSafeArrayAsOutParam(GuestOSVariants)));
     2204                    if (SUCCEEDED(hrc))
     2205                    {
     2206                        RTPrintf("%ls\n", bstrOSFamily.raw());
     2207                        for (size_t j = 0; j < GuestOSVariants.size(); ++j)
     2208                        {
     2209                            RTPrintf("\t%ls\n", GuestOSVariants[j]);
     2210                            com::SafeArray<BSTR> GuestOSDescs;
     2211                            const Bstr bstrOSVariant = GuestOSVariants[j];
     2212                            CHECK_ERROR(pVirtualBox,
     2213                                        COMGETTER(GuestOSDescsByVariant)(bstrOSVariant.raw(),
     2214                                                  ComSafeArrayAsOutParam(GuestOSDescs)));
     2215                            if (SUCCEEDED(hrc))
     2216                                for (size_t k = 0; k < GuestOSDescs.size(); ++k)
     2217                                    RTPrintf("\t\t%ls\n", GuestOSDescs[k]);
     2218                        }
     2219                    }
    21812220                }
    21822221            }
     
    24202459        { "runningvms",         kListRunningVMs,         RTGETOPT_REQ_NOTHING },
    24212460        { "ostypes",            kListOsTypes,            RTGETOPT_REQ_NOTHING },
     2461        { "osvariants",         kListOsVariants,         RTGETOPT_REQ_NOTHING },
    24222462        { "hostdvds",           kListHostDvds,           RTGETOPT_REQ_NOTHING },
    24232463        { "hostfloppies",       kListHostFloppies,       RTGETOPT_REQ_NOTHING },
     
    24862526            case kListRunningVMs:
    24872527            case kListOsTypes:
     2528            case kListOsVariants:
    24882529            case kListHostDvds:
    24892530            case kListHostFloppies:
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r101117 r101164  
    27002700  <interface
    27012701    name="IVirtualBox" extends="$unknown"
    2702     uuid="0f22e6d1-07f5-4168-b3ef-167c57670c17"
     2702    uuid="901ac662-0b6e-4b19-a0ac-21cb54d4d5b2"
    27032703    wsmap="managed"
    27042704    rest="managed"
     
    34913491      <param name="type" type="IGuestOSType" dir="return">
    34923492        <desc>Guest OS type object.</desc>
     3493      </param>
     3494    </method>
     3495
     3496    <method name="getGuestOSFamilies">
     3497      <rest request="get" path="/server/methods/"/>
     3498      <desc>
     3499        Returns a list of all known guest OS family IDs.
     3500
     3501        The <link to="IVirtualBox::guestOSTypes"/> collection contains all
     3502        available guest OS type objects. Each object has an
     3503        <link to="IGuestOSType::familyId"/> attribute which contains
     3504        the guest OS family identifier string that this object describes.
     3505
     3506      </desc>
     3507      <param name="guestOSFamilies" type="wstring" safearray="yes" dir="return">
     3508        <desc>Array of all known guest OS family IDs.</desc>
     3509      </param>
     3510    </method>
     3511
     3512    <method name="getGuestOSVariantsByFamilyId">
     3513      <rest request="get" path="/server/methods/"/>
     3514      <desc>
     3515        Returns a list of guest OS family variants for a corresponding
     3516        guest OS family ID type.
     3517
     3518        The <link to="IVirtualBox::guestOSTypes"/> collection contains all
     3519        available guest OS type objects. Each object has an
     3520        <link to="IGuestOSType::familyId"/> attribute which contains a
     3521        the guest OS family this object describes.  The guest OS family
     3522        variant is contained in the <link to="IGuestOSType::variant"/>
     3523        attribute.
     3524
     3525        <result name="E_INVALIDARG">
     3526          @a family is not a valid guest OS family identifier.
     3527        </result>
     3528
     3529      </desc>
     3530      <param name="family" type="wstring" dir="in">
     3531        <desc>Guest OS type ID string.</desc>
     3532      </param>
     3533      <param name="OSvariants" type="wstring" safearray="yes" dir="return">
     3534        <desc>Array of guest OS family variants associated with the specified guest OS family ID.</desc>
     3535      </param>
     3536    </method>
     3537
     3538    <method name="getGuestOSDescsByVariant">
     3539      <rest request="get" path="/server/methods/"/>
     3540      <desc>
     3541        Returns a list of guest OS family descriptions for a corresponding
     3542        guest OS family variant.
     3543
     3544        The <link to="IVirtualBox::guestOSTypes"/> collection contains all
     3545        available guest OS type objects. Each object has an
     3546        <link to="IGuestOSType::variant"/> attribute which contains a
     3547        human readable description of the guest OS variant this object describes.
     3548        The guest OS family description is contained in the
     3549        <link to="IGuestOSType::familyDescription"/> attribute.
     3550
     3551        <result name="E_INVALIDARG">
     3552          @a OSVariant is not a valid guest OS variant.
     3553        </result>
     3554
     3555      </desc>
     3556      <param name="OSVariant" type="wstring" dir="in">
     3557        <desc>Guest OS variant.</desc>
     3558      </param>
     3559      <param name="GuestOSDescs" type="wstring" safearray="yes" dir="return">
     3560        <desc>Array of guest OS descriptions associated with the specified guest OS variant.</desc>
    34933561      </param>
    34943562    </method>
     
    1344713515  <interface
    1344813516    name="IGuestOSType" extends="$unknown"
    13449     uuid="966303d0-36a8-4180-8971-18650b0d1055"
     13517    uuid="858fc38e-efe6-47d0-b6ac-c71023f9d043"
    1345013518    wsmap="struct"
    1345113519    rest="managed"
     
    1346613534    <attribute name="id" type="wstring" readonly="yes">
    1346713535      <desc>Guest OS identifier string.</desc>
     13536    </attribute>
     13537
     13538    <attribute name="variant" type="wstring" readonly="yes">
     13539      <desc>Guest OS variant string.</desc>
    1346813540    </attribute>
    1346913541
  • trunk/src/VBox/Main/include/Global.h

    r101035 r101164  
    8686    struct OSType
    8787    {
    88         const char                    *familyId;          /* utf-8 */
    89         const char                    *familyDescription; /* utf-8 */
    90         const char                    *id;          /* utf-8, VM config file value */
    91         const char                    *description; /* utf-8 */
    92         const VBOXOSTYPE               osType;
     88        const char                    *familyId;          /* utf-8, e.g. Linux or MacOS  */
     89        const char                    *familyDescription; /* utf-8, e.g. Linux or Mac OS X */
     90        const char                    *variant;     /* utf-8, the subtype of the family e.g. Debian or FreeBSD */
     91        const char                    *id;          /* utf-8, VM config file value e.g. Debian12_64 */
     92        const char                    *description; /* utf-8, e.g. "Debian 12 Bookworm (64-bit)" */
     93        const VBOXOSTYPE               osType;      /* enum, e.g. VBOXOSTYPE_Debian12_x64 */
    9394        const uint32_t                 osHint;
    9495        const uint32_t                 recommendedCPUCount;
  • trunk/src/VBox/Main/include/GuestOSTypeImpl.h

    r98103 r101164  
    5353    const Utf8Str &i_id() const { return mID; }
    5454    const Utf8Str &i_familyId() const { return mFamilyID; }
     55    const Utf8Str &i_variant() const { return mOSVariant; }
     56    const Utf8Str &i_description() const { return mDescription; }
    5557    bool i_is64Bit() const { return !!(mOSHint & VBOXOSHINT_64BIT); }
    5658    bool i_recommendedIOAPIC() const { return !!(mOSHint & VBOXOSHINT_IOAPIC); }
     
    6870    HRESULT getFamilyId(com::Utf8Str &aFamilyId);
    6971    HRESULT getFamilyDescription(com::Utf8Str &aFamilyDescription);
     72    HRESULT getVariant(com::Utf8Str &aVariant);
    7073    HRESULT getId(com::Utf8Str &aId);
    7174    HRESULT getDescription(com::Utf8Str &aDescription);
     
    107110    const Utf8Str mFamilyID;
    108111    const Utf8Str mFamilyDescription;
     112    const Utf8Str mOSVariant;
    109113    const Utf8Str mID;
    110114    const Utf8Str mDescription;
  • trunk/src/VBox/Main/include/VirtualBoxImpl.h

    r101035 r101164  
    275275    HRESULT i_findGuestOSType(const Utf8Str &strOSType,
    276276                              ComObjPtr<GuestOSType> &guestOSType);
     277
     278    HRESULT getGuestOSFamilies(std::vector<com::Utf8Str> &aOSFamilies);
     279
     280    HRESULT getGuestOSVariantsByFamilyId(const Utf8Str &strOSFamily,
     281                                         std::vector<com::Utf8Str> &aOSVariants);
     282
     283    HRESULT getGuestOSDescsByVariant(const Utf8Str &strOSVariant,
     284                                     std::vector<com::Utf8Str> &aGuestOSDescs);
    277285
    278286    const Guid &i_getGlobalRegistryId() const;
  • trunk/src/VBox/Main/src-all/Global.cpp

    r101113 r101164  
    4949     *        Machine::getEffectiveParavirtProvider and Console::i_configConstructorInner
    5050     *        are still covering the relevant cases. */
    51     { "Other",   "Other",             "Other",              "Other/Unknown",
     51    { "Other",   "Other",             "",               "Other",              "Other/Unknown",
    5252      VBOXOSTYPE_Unknown,         VBOXOSHINT_NONE,
    5353      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    5454      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700 },
    5555
    56     { "Other",   "Other",             "Other_64",           "Other/Unknown (64-bit)",
     56    { "Other",   "Other",             "",               "Other_64",           "Other/Unknown (64-bit)",
    5757      VBOXOSTYPE_Unknown_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
    5858      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    5959      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700 },
    6060
    61     { "Windows", "Microsoft Windows", "Windows31",          "Windows 3.1",
     61    { "Windows", "Microsoft Windows", "",               "Windows31",          "Windows 3.1",
    6262      VBOXOSTYPE_Win31,           VBOXOSHINT_FLOPPY,
    6363      1,   32,   4,  1 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    6464      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    6565
    66     { "Windows", "Microsoft Windows", "Windows95",          "Windows 95",
     66    { "Windows", "Microsoft Windows", "",               "Windows95",          "Windows 95",
    6767      VBOXOSTYPE_Win95,           VBOXOSHINT_FLOPPY,
    6868      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    6969      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    7070
    71     { "Windows", "Microsoft Windows", "Windows98",          "Windows 98",
     71    { "Windows", "Microsoft Windows", "",               "Windows98",          "Windows 98",
    7272      VBOXOSTYPE_Win98,           VBOXOSHINT_FLOPPY,
    7373      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    7474      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    7575
    76     { "Windows", "Microsoft Windows", "WindowsMe",          "Windows ME",
     76    { "Windows", "Microsoft Windows", "",               "WindowsMe",          "Windows ME",
    7777      VBOXOSTYPE_WinMe,           VBOXOSHINT_FLOPPY | VBOXOSHINT_USBTABLET,
    7878      1,  128,   4,  4 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    7979      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    8080
    81     { "Windows", "Microsoft Windows", "WindowsNT3x",        "Windows NT 3.x",
     81    { "Windows", "Microsoft Windows", "",               "WindowsNT3x",        "Windows NT 3.x",
    8282      VBOXOSTYPE_WinNT3x,         VBOXOSHINT_NOUSB | VBOXOSHINT_FLOPPY,
    8383      1,   64,   8,  _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_BusLogic, StorageBus_SCSI,
    8484      StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    8585
    86     { "Windows", "Microsoft Windows", "WindowsNT4",         "Windows NT 4",
     86    { "Windows", "Microsoft Windows", "",               "WindowsNT4",         "Windows NT 4",
    8787      VBOXOSTYPE_WinNT4,          VBOXOSHINT_NOUSB,
    8888      1,  128,  16,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    8989      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    9090
    91     { "Windows", "Microsoft Windows", "Windows2000",        "Windows 2000",
     91    { "Windows", "Microsoft Windows", "",               "Windows2000",        "Windows 2000",
    9292      VBOXOSTYPE_Win2k,           VBOXOSHINT_USBTABLET,
    9393      1,  168,  16,  4 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    9494      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    9595
    96     { "Windows", "Microsoft Windows", "WindowsXP",          "Windows XP (32-bit)",
     96    { "Windows", "Microsoft Windows", "",               "WindowsXP",          "Windows XP (32-bit)",
    9797      VBOXOSTYPE_WinXP,           VBOXOSHINT_USBTABLET,
    9898      1,  192,  16, 10 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82543GC, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    9999      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    100100
    101     { "Windows", "Microsoft Windows", "WindowsXP_64",       "Windows XP (64-bit)",
     101    { "Windows", "Microsoft Windows", "",               "WindowsXP_64",       "Windows XP (64-bit)",
    102102      VBOXOSTYPE_WinXP_x64,       VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
    103103      1,  512,  16, 10 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    104104      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    105105
    106     { "Windows", "Microsoft Windows", "Windows2003",        "Windows 2003 (32-bit)",
     106    { "Windows", "Microsoft Windows", "",               "Windows2003",        "Windows 2003 (32-bit)",
    107107      VBOXOSTYPE_Win2k3,          VBOXOSHINT_USBTABLET,
    108108      1,  512,  16, 20 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82543GC, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    109109      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    110110
    111     { "Windows", "Microsoft Windows", "Windows2003_64",     "Windows 2003 (64-bit)",
     111    { "Windows", "Microsoft Windows", "",               "Windows2003_64",     "Windows 2003 (64-bit)",
    112112      VBOXOSTYPE_Win2k3_x64,      VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
    113113      1,  512,  16, 20 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    114114      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    115115
    116     { "Windows", "Microsoft Windows", "WindowsVista",       "Windows Vista (32-bit)",
     116    { "Windows", "Microsoft Windows", "",               "WindowsVista",       "Windows Vista (32-bit)",
    117117      VBOXOSTYPE_WinVista,        VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    118118      1,  512,  16, 25 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    119119      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    120120
    121     { "Windows", "Microsoft Windows", "WindowsVista_64",    "Windows Vista (64-bit)",
     121    { "Windows", "Microsoft Windows", "",               "WindowsVista_64",    "Windows Vista (64-bit)",
    122122      VBOXOSTYPE_WinVista_x64,    VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    123123      1,  512,  16, 25 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    124124      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    125125
    126     { "Windows", "Microsoft Windows", "Windows2008",        "Windows 2008 (32-bit)",
     126    { "Windows", "Microsoft Windows", "",               "Windows2008",        "Windows 2008 (32-bit)",
    127127      VBOXOSTYPE_Win2k8,          VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    128128      1, 1024,  16, 32 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    129129      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    130130
    131     { "Windows", "Microsoft Windows", "Windows2008_64",     "Windows 2008 (64-bit)",
     131    { "Windows", "Microsoft Windows", "",               "Windows2008_64",     "Windows 2008 (64-bit)",
    132132      VBOXOSTYPE_Win2k8_x64,      VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    133133      1, 2048,  16, 32 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    134134      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    135135
    136     { "Windows", "Microsoft Windows", "Windows7",           "Windows 7 (32-bit)",
     136    { "Windows", "Microsoft Windows", "",               "Windows7",           "Windows 7 (32-bit)",
    137137      VBOXOSTYPE_Win7,            VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    138138      1, 1024,  16, 32 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    139139      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    140140
    141     { "Windows", "Microsoft Windows", "Windows7_64",        "Windows 7 (64-bit)",
     141    { "Windows", "Microsoft Windows", "",               "Windows7_64",        "Windows 7 (64-bit)",
    142142      VBOXOSTYPE_Win7_x64,        VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_WDDM_GRAPHICS,
    143143      1, 2048,  16, 32 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    144144      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    145145
    146     { "Windows", "Microsoft Windows", "Windows8",           "Windows 8 (32-bit)",
     146    { "Windows", "Microsoft Windows", "",               "Windows8",           "Windows 8 (32-bit)",
    147147      VBOXOSTYPE_Win8,            VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    148148      1, 1024, 128, 40 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    149149      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    150150
    151     { "Windows", "Microsoft Windows", "Windows8_64",        "Windows 8 (64-bit)",
     151    { "Windows", "Microsoft Windows", "",               "Windows8_64",        "Windows 8 (64-bit)",
    152152      VBOXOSTYPE_Win8_x64,        VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    153153      1, 2048, 128, 40 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    154154      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    155155
    156     { "Windows", "Microsoft Windows", "Windows81",          "Windows 8.1 (32-bit)",
     156    { "Windows", "Microsoft Windows", "",               "Windows81",          "Windows 8.1 (32-bit)",
    157157      VBOXOSTYPE_Win81,           VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    158158      1, 1024, 128, 40 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    159159      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    160160
    161     { "Windows", "Microsoft Windows", "Windows81_64",       "Windows 8.1 (64-bit)",
     161    { "Windows", "Microsoft Windows", "",               "Windows81_64",       "Windows 8.1 (64-bit)",
    162162      VBOXOSTYPE_Win81_x64,       VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    163163      1, 2048, 128, 40 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    164164      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    165165
    166     { "Windows", "Microsoft Windows", "Windows2012_64",     "Windows 2012 (64-bit)",
     166    { "Windows", "Microsoft Windows", "",               "Windows2012_64",     "Windows 2012 (64-bit)",
    167167      VBOXOSTYPE_Win2k12_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    168168      1, 2048, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    169169      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    170170
    171     { "Windows", "Microsoft Windows", "Windows10",          "Windows 10 (32-bit)",
     171    { "Windows", "Microsoft Windows", "",               "Windows10",          "Windows 10 (32-bit)",
    172172      VBOXOSTYPE_Win10,           VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    173173      1, 1024, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    174174      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    175175
    176     { "Windows", "Microsoft Windows", "Windows10_64",       "Windows 10 (64-bit)",
     176    { "Windows", "Microsoft Windows", "",               "Windows10_64",       "Windows 10 (64-bit)",
    177177      VBOXOSTYPE_Win10_x64,       VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    178178      1, 2048, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    179179      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    180180
    181     { "Windows", "Microsoft Windows", "Windows2016_64",     "Windows 2016 (64-bit)",
     181    { "Windows", "Microsoft Windows", "",               "Windows2016_64",     "Windows 2016 (64-bit)",
    182182      VBOXOSTYPE_Win2k16_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    183183      1, 2048, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    184184      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    185185
    186     { "Windows", "Microsoft Windows", "Windows2019_64",     "Windows 2019 (64-bit)",
     186    { "Windows", "Microsoft Windows", "",               "Windows2019_64",     "Windows 2019 (64-bit)",
    187187      VBOXOSTYPE_Win2k19_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    188188      1, 2048, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    189189      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    190190
    191     { "Windows", "Microsoft Windows", "Windows11_64",       "Windows 11 (64-bit)",
     191    { "Windows", "Microsoft Windows", "",               "Windows11_64",       "Windows 11 (64-bit)",
    192192      VBOXOSTYPE_Win11_x64,       VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_EFI_SECUREBOOT | VBOXOSHINT_TPM2 | VBOXOSHINT_WDDM_GRAPHICS,
    193193      2, 4096, 128, 80 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    194194      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    195195
    196     { "Windows", "Microsoft Windows", "Windows2022_64",     "Windows 2022 (64-bit)",
     196    { "Windows", "Microsoft Windows", "",               "Windows2022_64",     "Windows 2022 (64-bit)",
    197197      VBOXOSTYPE_Win2k22_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_USB3 | VBOXOSHINT_WDDM_GRAPHICS,
    198198      1, 2048, 128, 50 * _1G64, GraphicsControllerType_VBoxSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    199199      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    200200
    201     { "Windows", "Microsoft Windows", "WindowsNT",          "Other Windows (32-bit)",
     201    { "Windows", "Microsoft Windows", "",               "WindowsNT",          "Other Windows (32-bit)",
    202202      VBOXOSTYPE_WinNT,           VBOXOSHINT_NONE,
    203203      1,  512,  16, 20 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    204204      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    205205
    206     { "Windows", "Microsoft Windows", "WindowsNT_64",       "Other Windows (64-bit)",
     206    { "Windows", "Microsoft Windows", "",               "WindowsNT_64",       "Other Windows (64-bit)",
    207207      VBOXOSTYPE_WinNT_x64,       VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
    208208      1,  512,  16, 20 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
     
    221221#define VBOX_LINUX_OSHINTS_D_64   (VBOXOSHINT_RTCUTC | VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC)
    222222
    223 #define VBOX_LINUX_OSTYPE_32(a_OStype)      (VBOXOSTYPE_ ## a_OStype)
    224 #define VBOX_LINUX_OSTYPE_64(a_OStype)      (VBOXOSTYPE_ ## a_OStype ## _x64)
    225 
    226 #define VBOX_LINUX_OSID_STR(a_OSid)         (# a_OSid)
     223#define VBOX_LINUX_OSTYPE_32(a_OStype)      VBOXOSTYPE_ ## a_OStype
     224#define VBOX_LINUX_OSTYPE_64(a_OStype)      VBOXOSTYPE_ ## a_OStype ## _x64
     225
     226#define VBOX_LINUX_OSID_STR(a_OSid)         #a_OSid
    227227#define VBOX_LINUX_OSID_STR_64(a_OSid)      VBOX_LINUX_OSID_STR(a_OSid ## _64)
    228228
    229 #define VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_OStype, a_OSHint, a_Memory, a_Vram, a_Diskspace, \
     229#define VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_OStype, a_OSHint, a_Memory, a_Vram, a_Diskspace, \
    230230                                       a_NetworkAdapter, a_HDStorageController, a_HDStorageBusType) \
    231     { "Linux",   "Linux", VBOX_LINUX_OSID_STR(a_Id), a_Description, VBOX_LINUX_OSTYPE_32(a_OStype), a_OSHint, \
     231    { "Linux",   "Linux", #a_Variant, VBOX_LINUX_OSID_STR(a_Id), a_Description, VBOX_LINUX_OSTYPE_32(a_OStype), a_OSHint, \
    232232      1, a_Memory, a_Vram, a_Diskspace * _1G64, GraphicsControllerType_VMSVGA, a_NetworkAdapter, 0, StorageControllerType_PIIX4, StorageBus_IDE, \
    233233      a_HDStorageController, a_HDStorageBusType, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_AD1980  }
    234234
    235 #define VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_OStype, a_OSHint, a_Memory, a_Vram, a_Diskspace, \
     235#define VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_OStype, a_OSHint, a_Memory, a_Vram, a_Diskspace, \
    236236                                       a_NetworkAdapter, a_HDStorageController, a_HDStorageBusType) \
    237     { "Linux",   "Linux", VBOX_LINUX_OSID_STR_64(a_Id), a_Description, VBOX_LINUX_OSTYPE_64(a_OStype), a_OSHint, \
     237    { "Linux",   "Linux", #a_Variant, VBOX_LINUX_OSID_STR_64(a_Id), a_Description, VBOX_LINUX_OSTYPE_64(a_OStype), a_OSHint, \
    238238      1, a_Memory, a_Vram, a_Diskspace * _1G64, GraphicsControllerType_VMSVGA, a_NetworkAdapter, 0, StorageControllerType_PIIX4, StorageBus_IDE, \
    239239      a_HDStorageController, a_HDStorageBusType, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_AD1980  }
    240240
    241241/* Linux 32-bit sub-type template defaulting to 1 CPU with USB-tablet-mouse/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    242 #define VBOX_LINUX_SUBTYPE_A_32(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    243     VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_A_32, a_Memory, a_Vram, a_Diskspace, \
     242#define VBOX_LINUX_SUBTYPE_A_32(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     243    VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_A_32, a_Memory, a_Vram, a_Diskspace, \
    244244                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    245245
    246246/* Linux 64-bit sub-type template defaulting to 1 CPU with USB-tablet-mouse/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    247 #define VBOX_LINUX_SUBTYPE_A_64(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    248     VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_A_64, a_Memory, a_Vram, a_Diskspace, \
     247#define VBOX_LINUX_SUBTYPE_A_64(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     248    VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_A_64, a_Memory, a_Vram, a_Diskspace, \
    249249                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    250250
    251 #define VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_32(a_Id, a_Description, a_OStype, a_Memory, a_Vram, a_Diskspace) \
    252     VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_OStype, VBOX_LINUX_OSHINTS_A_32, a_Memory, a_Vram, a_Diskspace, \
     251#define VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_32(a_Variant, a_Id, a_Description, a_OStype, a_Memory, a_Vram, a_Diskspace) \
     252    VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_OStype, VBOX_LINUX_OSHINTS_A_32, a_Memory, a_Vram, a_Diskspace, \
    253253                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    254254
    255 #define VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_64(a_Id, a_Description, a_OStype, a_Memory, a_Vram, a_Diskspace) \
    256     VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_OStype, VBOX_LINUX_OSHINTS_A_64, a_Memory, a_Vram, a_Diskspace, \
     255#define VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_64(a_Variant, a_Id, a_Description, a_OStype, a_Memory, a_Vram, a_Diskspace) \
     256    VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_OStype, VBOX_LINUX_OSHINTS_A_64, a_Memory, a_Vram, a_Diskspace, \
    257257                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    258258
    259259/* Linux 32-bit sub-type template defaulting to 1 CPU with PS/2-mouse/PAE-NX/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    260 #define VBOX_LINUX_SUBTYPE_B_32(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    261     VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_B_32, a_Memory, a_Vram, a_Diskspace, \
     260#define VBOX_LINUX_SUBTYPE_B_32(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     261    VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_B_32, a_Memory, a_Vram, a_Diskspace, \
    262262                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    263263
    264264/* Linux 64-bit sub-type template defaulting to 1 CPU with PS/2-mouse/PAE-NX/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    265 #define VBOX_LINUX_SUBTYPE_B_64(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    266     VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_B_64, a_Memory, a_Vram, a_Diskspace, \
     265#define VBOX_LINUX_SUBTYPE_B_64(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     266    VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_B_64, a_Memory, a_Vram, a_Diskspace, \
    267267                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    268268
    269269/* Linux 32-bit sub-type template defaulting to 1 CPU with PS/2-mouse/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    270 #define VBOX_LINUX_SUBTYPE_C_32(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    271     VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_C_32, a_Memory, a_Vram, a_Diskspace, \
     270#define VBOX_LINUX_SUBTYPE_C_32(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     271    VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_C_32, a_Memory, a_Vram, a_Diskspace, \
    272272                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    273273
    274274/* Linux 64-bit sub-type template defaulting to 1 CPU with PS/2-mouse/VMSVGA/Intel-Pro1000/PIIX4+IDE DVD/AHCI+SATA disk/AC97 */
    275 #define VBOX_LINUX_SUBTYPE_C_64(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    276     VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_C_64, a_Memory, a_Vram, a_Diskspace, \
     275#define VBOX_LINUX_SUBTYPE_C_64(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     276    VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_C_64, a_Memory, a_Vram, a_Diskspace, \
    277277                                   NetworkAdapterType_I82540EM, StorageControllerType_IntelAhci, StorageBus_SATA)
    278278
    279279/* Linux 32-bit sub-type template defaulting to 1 CPU with PS/2-mouse/VMSVGA/PCnet-FASTIII/PIIX4+IDE DVD/PIIX4+IDE disk/AC97 */
    280 #define VBOX_LINUX_SUBTYPE_D_32(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    281     VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_D_32, a_Memory, a_Vram, a_Diskspace, \
     280#define VBOX_LINUX_SUBTYPE_D_32(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     281    VBOX_LINUX_SUBTYPE_TEMPLATE_32(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_D_32, a_Memory, a_Vram, a_Diskspace, \
    282282                                   NetworkAdapterType_Am79C973, StorageControllerType_PIIX4, StorageBus_IDE)
    283283
    284284/* Linux 64-bit sub-type template defaulting to 1 CPU with PS/2-mouse/VMSVGA/PCnet-FASTIII/PIIX4+IDE DVD/PIIX4+IDE disk/AC97 */
    285 #define VBOX_LINUX_SUBTYPE_D_64(a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
    286     VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_D_64, a_Memory, a_Vram, a_Diskspace, \
     285#define VBOX_LINUX_SUBTYPE_D_64(a_Variant, a_Id, a_Description, a_Memory, a_Vram, a_Diskspace) \
     286    VBOX_LINUX_SUBTYPE_TEMPLATE_64(a_Variant, a_Id, a_Description, a_Id, VBOX_LINUX_OSHINTS_D_64, a_Memory, a_Vram, a_Diskspace, \
    287287                                   NetworkAdapterType_I82540EM, StorageControllerType_PIIX4, StorageBus_IDE)
    288288
    289     VBOX_LINUX_SUBTYPE_D_32(Linux22, "Linux 2.2 (32-bit)",                      64,  4, 2),
    290     VBOX_LINUX_SUBTYPE_D_32(Linux24, "Linux 2.4 (32-bit)",                     128, 16, 2),
    291     VBOX_LINUX_SUBTYPE_D_64(Linux24, "Linux 2.4 (64-bit)",                    1024, 16, 4),
    292     VBOX_LINUX_SUBTYPE_A_32(Linux26, "Linux 2.6 / 3.x / 4.x / 5.x (32-bit)",  1024, 16, 8),
    293     VBOX_LINUX_SUBTYPE_A_64(Linux26, "Linux 2.6 / 3.x / 4.x / 5.x (64-bit)",  1024, 16, 8),
    294 
    295     VBOX_LINUX_SUBTYPE_A_32(ArchLinux, "Arch Linux (32-bit)", 1024, 16, 8),
    296     VBOX_LINUX_SUBTYPE_A_64(ArchLinux, "Arch Linux (64-bit)", 1024, 16, 8),
    297 
    298     VBOX_LINUX_SUBTYPE_A_32(Debian,  "Debian (32-bit)",             2048, 16, 20),
    299     VBOX_LINUX_SUBTYPE_A_64(Debian,  "Debian (64-bit)",             2048, 16, 20),
    300     VBOX_LINUX_SUBTYPE_A_32(Debian31, "Debian 3.1 Sarge (32-bit)",   1024, 16, 8),  // 32-bit only
    301     VBOX_LINUX_SUBTYPE_A_32(Debian4,  "Debian 4.0 Etch (32-bit)",    1024, 16, 8),
    302     VBOX_LINUX_SUBTYPE_A_64(Debian4,  "Debian 4.0 Etch (64-bit)",    1024, 16, 8),
    303     VBOX_LINUX_SUBTYPE_A_32(Debian5,  "Debian 5.0 Lenny (32-bit)",   1024, 16, 8),
    304     VBOX_LINUX_SUBTYPE_A_64(Debian5,  "Debian 5.0 Lenny (64-bit)",   1024, 16, 8),
    305     VBOX_LINUX_SUBTYPE_A_32(Debian6,  "Debian 6.0 Squeeze (32-bit)", 1024, 16, 8),
    306     VBOX_LINUX_SUBTYPE_A_64(Debian6,  "Debian 6.0 Squeeze (64-bit)", 1024, 16, 8),
    307     VBOX_LINUX_SUBTYPE_A_32(Debian7,  "Debian 7 Wheezy (32-bit)",    2048, 16, 20),
    308     VBOX_LINUX_SUBTYPE_A_64(Debian7,  "Debian 7 Wheezy (64-bit)",    2048, 16, 20),
    309     VBOX_LINUX_SUBTYPE_A_32(Debian8,  "Debian 8 Jessie (32-bit)",    2048, 16, 20),
    310     VBOX_LINUX_SUBTYPE_A_64(Debian8,  "Debian 8 Jessie (64-bit)",    2048, 16, 20),
    311     VBOX_LINUX_SUBTYPE_A_32(Debian9,  "Debian 9 Stretch (32-bit)",   2048, 16, 20),
    312     VBOX_LINUX_SUBTYPE_A_64(Debian9,  "Debian 9 Stretch (64-bit)",   2048, 16, 20),
    313     VBOX_LINUX_SUBTYPE_A_32(Debian10, "Debian 10 Buster (32-bit)",   2048, 16, 20),
    314     VBOX_LINUX_SUBTYPE_A_64(Debian10, "Debian 10 Buster (64-bit)",   2048, 16, 20),
    315     VBOX_LINUX_SUBTYPE_A_32(Debian11, "Debian 11 Bullseye (32-bit)", 2048, 16, 20),
    316     VBOX_LINUX_SUBTYPE_A_64(Debian11, "Debian 11 Bullseye (64-bit)", 2048, 16, 20),
    317     VBOX_LINUX_SUBTYPE_A_32(Debian12, "Debian 12 Bookworm (32-bit)", 2048, 16, 20),
    318     VBOX_LINUX_SUBTYPE_A_64(Debian12, "Debian 12 Bookworm (64-bit)", 2048, 16, 20),
    319 
    320     VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_32(Fedora, "Fedora (32-bit)", FedoraCore, 2048, 16, 15),
    321     VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_64(Fedora, "Fedora (64-bit)", FedoraCore, 2048, 16, 15),
    322 
    323     VBOX_LINUX_SUBTYPE_A_32(Gentoo, "Gentoo (32-bit)", 1024, 16, 8),
    324     VBOX_LINUX_SUBTYPE_A_64(Gentoo, "Gentoo (64-bit)", 1024, 16, 8),
    325 
    326     VBOX_LINUX_SUBTYPE_A_32(Mandriva, "Mandriva (32-bit)",        1024, 16, 8),
    327     VBOX_LINUX_SUBTYPE_A_64(Mandriva, "Mandriva (64-bit)",        1024, 16, 8),
    328     VBOX_LINUX_SUBTYPE_A_32(OpenMandriva_Lx, "OpenMandriva Lx (32-bit)", 2048, 16, 10),
    329     VBOX_LINUX_SUBTYPE_A_64(OpenMandriva_Lx, "OpenMandriva Lx (64-bit)", 2048, 16, 10),
    330     VBOX_LINUX_SUBTYPE_A_32(PCLinuxOS, "PCLinuxOS / PCLOS (32-bit)",     2048, 16, 10),
    331     VBOX_LINUX_SUBTYPE_A_64(PCLinuxOS, "PCLinuxOS / PCLOS (64-bit)",     2048, 16, 10),
    332     VBOX_LINUX_SUBTYPE_A_32(Mageia,    "Mageia (32-bit)",                2048, 16, 10),
    333     VBOX_LINUX_SUBTYPE_A_64(Mageia,    "Mageia (64-bit)",                2048, 16, 10),
    334 
    335     VBOX_LINUX_SUBTYPE_B_32(Oracle,   "Oracle Linux (32-bit)",      2048, 16, 20),
    336     VBOX_LINUX_SUBTYPE_B_64(Oracle,   "Oracle Linux (64-bit)",      2048, 16, 20),
    337     VBOX_LINUX_SUBTYPE_B_32(Oracle4,  "Oracle Linux 4.x (32-bit)",  1024, 16, 8),
    338     VBOX_LINUX_SUBTYPE_B_64(Oracle4,  "Oracle Linux 4.x (64-bit)",  1024, 16, 8),
    339     VBOX_LINUX_SUBTYPE_B_32(Oracle5,  "Oracle Linux 5.x (32-bit)",  1024, 16, 8),
    340     VBOX_LINUX_SUBTYPE_B_64(Oracle5,  "Oracle Linux 5.x (64-bit)",  1024, 16, 8),
    341     VBOX_LINUX_SUBTYPE_B_32(Oracle6,  "Oracle Linux 6.x (32-bit)",  2048, 16, 10),
    342     VBOX_LINUX_SUBTYPE_B_64(Oracle6,  "Oracle Linux 6.x (64-bit)",  2048, 16, 10),
    343     VBOX_LINUX_SUBTYPE_B_64(Oracle7,  "Oracle Linux 7.x (64-bit)",  2048, 16, 20),  // 64-bit only
    344     VBOX_LINUX_SUBTYPE_B_64(Oracle8,  "Oracle Linux 8.x (64-bit)",  2048, 16, 20),  // 64-bit only
    345     VBOX_LINUX_SUBTYPE_B_64(Oracle9,  "Oracle Linux 9.x (64-bit)",  2048, 16, 20),  // 64-bit only
    346 
    347     VBOX_LINUX_SUBTYPE_B_32(RedHat,   "Red Hat (32-bit)",      2048, 16, 20),
    348     VBOX_LINUX_SUBTYPE_B_64(RedHat,   "Red Hat (64-bit)",      2048, 16, 20),
    349     VBOX_LINUX_SUBTYPE_B_32(RedHat3,  "Red Hat 3.x (32-bit)",  1024, 16, 8),
    350     VBOX_LINUX_SUBTYPE_B_64(RedHat3,  "Red Hat 3.x (64-bit)",  1024, 16, 8),
    351     VBOX_LINUX_SUBTYPE_B_32(RedHat4,  "Red Hat 4.x (32-bit)",  1024, 16, 8),
    352     VBOX_LINUX_SUBTYPE_B_64(RedHat4,  "Red Hat 4.x (64-bit)",  1024, 16, 8),
    353     VBOX_LINUX_SUBTYPE_B_32(RedHat5,  "Red Hat 5.x (32-bit)",  1024, 16, 8),
    354     VBOX_LINUX_SUBTYPE_B_64(RedHat5,  "Red Hat 5.x (64-bit)",  1024, 16, 8),
    355     VBOX_LINUX_SUBTYPE_B_32(RedHat6,  "Red Hat 6.x (32-bit)",  1024, 16, 10),
    356     VBOX_LINUX_SUBTYPE_B_64(RedHat6,  "Red Hat 6.x (64-bit)",  1024, 16, 10),
    357     VBOX_LINUX_SUBTYPE_B_64(RedHat7,  "Red Hat 7.x (64-bit)",  2048, 16, 20),  // 64-bit only
    358     VBOX_LINUX_SUBTYPE_B_64(RedHat8,  "Red Hat 8.x (64-bit)",  2048, 16, 20),  // 64-bit only
    359     VBOX_LINUX_SUBTYPE_B_64(RedHat9,  "Red Hat 9.x (64-bit)",  2048, 16, 20),  // 64-bit only
    360 
    361     VBOX_LINUX_SUBTYPE_A_32(OpenSUSE,            "openSUSE (32-bit)",               1024, 16, 8),
    362     VBOX_LINUX_SUBTYPE_A_64(OpenSUSE,            "openSUSE (64-bit)",               1024, 16, 8),
    363     VBOX_LINUX_SUBTYPE_A_64(OpenSUSE_Leap,       "openSUSE Leap (64-bit)",          2048, 16, 8),  // 64-bit only
    364     VBOX_LINUX_SUBTYPE_A_32(OpenSUSE_Tumbleweed, "openSUSE Tumbleweed (32-bit)",    2048, 16, 8),
    365     VBOX_LINUX_SUBTYPE_A_64(OpenSUSE_Tumbleweed, "openSUSE Tumbleweed (64-bit)",    2048, 16, 8),
    366     VBOX_LINUX_SUBTYPE_A_32(SUSE_LE,             "SUSE Linux Enterprise (32-bit)",  2048, 16, 8),
    367     VBOX_LINUX_SUBTYPE_A_64(SUSE_LE,             "SUSE Linux Enterprise (64-bit)",  2048, 16, 8),
    368 
    369     VBOX_LINUX_SUBTYPE_A_32(Turbolinux, "Turbolinux (32-bit)", 384, 16, 8),
    370     VBOX_LINUX_SUBTYPE_A_64(Turbolinux, "Turbolinux (64-bit)", 384, 16, 8),
    371 
    372     VBOX_LINUX_SUBTYPE_A_32(Ubuntu,       "Ubuntu (32-bit)",                             2048, 16, 25),
    373     VBOX_LINUX_SUBTYPE_A_64(Ubuntu,       "Ubuntu (64-bit)",                             2048, 16, 25),
    374     VBOX_LINUX_SUBTYPE_A_32(Ubuntu10_LTS, "Ubuntu 10.04 LTS (Lucid Lynx) (32-bit)",       256, 16, 3),
    375     VBOX_LINUX_SUBTYPE_A_64(Ubuntu10_LTS, "Ubuntu 10.04 LTS (Lucid Lynx) (64-bit)",       256, 16, 3),
    376     VBOX_LINUX_SUBTYPE_A_32(Ubuntu10,     "Ubuntu 10.10 (Maverick Meerkat) (32-bit)",     256, 16, 3),
    377     VBOX_LINUX_SUBTYPE_A_64(Ubuntu10,     "Ubuntu 10.10 (Maverick Meerkat) (64-bit)",     256, 16, 3),
    378     VBOX_LINUX_SUBTYPE_A_32(Ubuntu11,     "Ubuntu 11.04 (Natty Narwhal) / 11.10 (Oneiric Ocelot) (32-bit)",  384, 16, 5),
    379     VBOX_LINUX_SUBTYPE_A_64(Ubuntu11,     "Ubuntu 11.04 (Natty Narwhal) / 11.10 (Oneiric Ocelot) (64-bit)",  384, 16, 5),
    380     VBOX_LINUX_SUBTYPE_A_32(Ubuntu12_LTS, "Ubuntu 12.04 LTS (Precise Pangolin) (32-bit)", 768, 16, 5),
    381     VBOX_LINUX_SUBTYPE_A_64(Ubuntu12_LTS, "Ubuntu 12.04 LTS (Precise Pangolin) (64-bit)", 768, 16, 5),
    382     VBOX_LINUX_SUBTYPE_A_32(Ubuntu12,     "Ubuntu 12.10 (Quantal Quetzal) (32-bit)",      768, 16, 5),
    383     VBOX_LINUX_SUBTYPE_A_64(Ubuntu12,     "Ubuntu 12.10 (Quantal Quetzal) (64-bit)",      768, 16, 5),
    384     VBOX_LINUX_SUBTYPE_A_32(Ubuntu13,     "Ubuntu 13.04 (Raring Ringtail) / 13.10 (Saucy Salamander) (32-bit)",  768, 16, 5),
    385     VBOX_LINUX_SUBTYPE_A_64(Ubuntu13,     "Ubuntu 13.04 (Raring Ringtail) / 13.10 (Saucy Salamander) (64-bit)",  768, 16, 5),
    386     VBOX_LINUX_SUBTYPE_A_32(Ubuntu14_LTS, "Ubuntu 14.04 LTS (Trusty Tahr) (32-bit)",     1536, 16, 7),
    387     VBOX_LINUX_SUBTYPE_A_64(Ubuntu14_LTS, "Ubuntu 14.04 LTS (Trusty Tahr) (64-bit)",     1536, 16, 7),
    388     VBOX_LINUX_SUBTYPE_A_32(Ubuntu14,     "Ubuntu 14.10 (Utopic Unicorn) (32-bit)",      1536, 16, 7),
    389     VBOX_LINUX_SUBTYPE_A_64(Ubuntu14,     "Ubuntu 14.10 (Utopic Unicorn) (64-bit)",      1536, 16, 7),
    390     VBOX_LINUX_SUBTYPE_A_32(Ubuntu15,     "Ubuntu 15.04 (Vivid Vervet) / 15.10 (Wily Werewolf) (32-bit)",  1536, 16, 7),
    391     VBOX_LINUX_SUBTYPE_A_64(Ubuntu15,     "Ubuntu 15.04 (Vivid Vervet) / 15.10 (Wily Werewolf) (64-bit)",  1536, 16, 7),
    392     VBOX_LINUX_SUBTYPE_A_32(Ubuntu16_LTS, "Ubuntu 16.04 LTS (Xenial Xerus) (32-bit)",    1536, 16, 10),
    393     VBOX_LINUX_SUBTYPE_A_64(Ubuntu16_LTS, "Ubuntu 16.04 LTS (Xenial Xerus) (64-bit)",    1536, 16, 10),
    394     VBOX_LINUX_SUBTYPE_A_32(Ubuntu16,     "Ubuntu 16.10 (Yakkety Yak) (32-bit)",         1536, 16, 10),
    395     VBOX_LINUX_SUBTYPE_A_64(Ubuntu16,     "Ubuntu 16.10 (Yakkety Yak) (64-bit)",         1536, 16, 10),
    396     VBOX_LINUX_SUBTYPE_A_32(Ubuntu17,     "Ubuntu 17.04 (Zesty Zapus) / 17.10 (Artful Aardvark) (32-bit)", 1536, 16, 10),
    397     VBOX_LINUX_SUBTYPE_A_64(Ubuntu17,     "Ubuntu 17.04 (Zesty Zapus) / 17.10 (Artful Aardvark) (64-bit)", 1536, 16, 10),
    398     VBOX_LINUX_SUBTYPE_A_32(Ubuntu18_LTS, "Ubuntu 18.04 LTS (Bionic Beaver) (32-bit)",   2048, 16, 25),
    399     VBOX_LINUX_SUBTYPE_A_64(Ubuntu18_LTS, "Ubuntu 18.04 LTS (Bionic Beaver) (64-bit)",   2048, 16, 25),
    400     VBOX_LINUX_SUBTYPE_A_32(Ubuntu18,     "Ubuntu 18.10 (Cosmic Cuttlefish) (32-bit)",   2048, 16, 25),
    401     VBOX_LINUX_SUBTYPE_A_64(Ubuntu18,     "Ubuntu 18.10 (Cosmic Cuttlefish) (64-bit)",   2048, 16, 25),
    402     VBOX_LINUX_SUBTYPE_A_32(Ubuntu19,     "Ubuntu 19.04 (Disco Dingo) / 19.10 (Eoan Ermine) (32-bit)",     2048, 16, 25),
    403     VBOX_LINUX_SUBTYPE_A_64(Ubuntu19,     "Ubuntu 19.04 (Disco Dingo) / 19.10 (Eoan Ermine) (64-bit)",     2048, 16, 25),
    404     VBOX_LINUX_SUBTYPE_A_64(Ubuntu20_LTS, "Ubuntu 20.04 LTS (Focal Fossa) (64-bit)",     2048, 16, 25),  // 64-bit only
    405     VBOX_LINUX_SUBTYPE_A_64(Ubuntu20,     "Ubuntu 20.10 (Groovy Gorilla) (64-bit)",      2048, 16, 25),  // 64-bit only
    406     VBOX_LINUX_SUBTYPE_A_64(Ubuntu21,     "Ubuntu 21.04 (Hirsute Hippo) / 21.10 (Impish Indri) (64-bit)",  2048, 16, 25), // 64-bit only
    407     VBOX_LINUX_SUBTYPE_A_64(Ubuntu22_LTS, "Ubuntu 22.04 LTS (Jammy Jellyfish) (64-bit)", 2048, 16, 25), // 64-bit only
    408     VBOX_LINUX_SUBTYPE_A_64(Ubuntu22,     "Ubuntu 22.10 (Kinetic Kudu) (64-bit)", 2048, 16, 25), // 64-bit only
    409     VBOX_LINUX_SUBTYPE_A_64(Ubuntu23,     "Ubuntu 23.04 (Lunar Lobster) (64-bit)", 2048, 16, 25), // 64-bit only
    410     VBOX_LINUX_SUBTYPE_A_32(Lubuntu,      "Lubuntu (32-bit)",  1024, 16, 10),
    411     VBOX_LINUX_SUBTYPE_A_64(Lubuntu,      "Lubuntu (64-bit)",  1024, 16, 10),
    412     VBOX_LINUX_SUBTYPE_A_32(Xubuntu,      "Xubuntu (32-bit)",  1024, 16, 10),
    413     VBOX_LINUX_SUBTYPE_A_64(Xubuntu,      "Xubuntu (64-bit)",  1024, 16, 10),
    414 
    415     VBOX_LINUX_SUBTYPE_C_32(Xandros, "Xandros (32-bit)", 1024, 16, 8),
    416     VBOX_LINUX_SUBTYPE_C_64(Xandros, "Xandros (64-bit)", 1024, 16, 8),
    417 
    418     VBOX_LINUX_SUBTYPE_A_32(Linux, "Other Linux (32-bit)", 256, 16, 8),
    419     VBOX_LINUX_SUBTYPE_B_64(Linux, "Other Linux (64-bit)", 512, 16, 8),
    420 
    421     { "Solaris", "Solaris",           "Solaris",            "Oracle Solaris 10 5/09 and earlier (32-bit)",
     289    VBOX_LINUX_SUBTYPE_D_32(Linux 2.2,   Linux22, "Linux 2.2 (32-bit)",                      64,  4, 2),
     290    VBOX_LINUX_SUBTYPE_D_32(Linux 2.4,   Linux24, "Linux 2.4 (32-bit)",                     128, 16, 2),
     291    VBOX_LINUX_SUBTYPE_D_64(Linux 2.4,   Linux24, "Linux 2.4 (64-bit)",                    1024, 16, 4),
     292    VBOX_LINUX_SUBTYPE_A_32(Linux 2.6,   Linux26, "Linux 2.6 / 3.x / 4.x / 5.x (32-bit)",  1024, 16, 8),
     293    VBOX_LINUX_SUBTYPE_A_64(Linux 2.6,   Linux26, "Linux 2.6 / 3.x / 4.x / 5.x (64-bit)",  1024, 16, 8),
     294
     295    VBOX_LINUX_SUBTYPE_A_32(ArchLinux, ArchLinux, "Arch Linux (32-bit)", 1024, 16, 8),
     296    VBOX_LINUX_SUBTYPE_A_64(ArchLinux, ArchLinux, "Arch Linux (64-bit)", 1024, 16, 8),
     297
     298    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian,  "Debian (32-bit)",             2048, 16, 20),
     299    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian,  "Debian (64-bit)",             2048, 16, 20),
     300    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian31, "Debian 3.1 Sarge (32-bit)",   1024, 16, 8),  // 32-bit only
     301    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian4,  "Debian 4.0 Etch (32-bit)",    1024, 16, 8),
     302    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian4,  "Debian 4.0 Etch (64-bit)",    1024, 16, 8),
     303    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian5,  "Debian 5.0 Lenny (32-bit)",   1024, 16, 8),
     304    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian5,  "Debian 5.0 Lenny (64-bit)",   1024, 16, 8),
     305    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian6,  "Debian 6.0 Squeeze (32-bit)", 1024, 16, 8),
     306    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian6,  "Debian 6.0 Squeeze (64-bit)", 1024, 16, 8),
     307    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian7,  "Debian 7 Wheezy (32-bit)",    2048, 16, 20),
     308    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian7,  "Debian 7 Wheezy (64-bit)",    2048, 16, 20),
     309    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian8,  "Debian 8 Jessie (32-bit)",    2048, 16, 20),
     310    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian8,  "Debian 8 Jessie (64-bit)",    2048, 16, 20),
     311    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian9,  "Debian 9 Stretch (32-bit)",   2048, 16, 20),
     312    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian9,  "Debian 9 Stretch (64-bit)",   2048, 16, 20),
     313    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian10, "Debian 10 Buster (32-bit)",   2048, 16, 20),
     314    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian10, "Debian 10 Buster (64-bit)",   2048, 16, 20),
     315    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian11, "Debian 11 Bullseye (32-bit)", 2048, 16, 20),
     316    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian11, "Debian 11 Bullseye (64-bit)", 2048, 16, 20),
     317    VBOX_LINUX_SUBTYPE_A_32(Debian,  Debian12, "Debian 12 Bookworm (32-bit)", 2048, 16, 20),
     318    VBOX_LINUX_SUBTYPE_A_64(Debian,  Debian12, "Debian 12 Bookworm (64-bit)", 2048, 16, 20),
     319
     320    VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_32(Fedora, Fedora, "Fedora (32-bit)", FedoraCore, 2048, 16, 15),
     321    VBOX_LINUX_SUBTYPE_A_WITH_OSTYPE_64(Fedora, Fedora, "Fedora (64-bit)", FedoraCore, 2048, 16, 15),
     322
     323    VBOX_LINUX_SUBTYPE_A_32(Gentoo, Gentoo, "Gentoo (32-bit)", 1024, 16, 8),
     324    VBOX_LINUX_SUBTYPE_A_64(Gentoo, Gentoo, "Gentoo (64-bit)", 1024, 16, 8),
     325
     326    VBOX_LINUX_SUBTYPE_A_32(Mandriva, Mandriva, "Mandriva (32-bit)",        1024, 16, 8),
     327    VBOX_LINUX_SUBTYPE_A_64(Mandriva, Mandriva, "Mandriva (64-bit)",        1024, 16, 8),
     328    VBOX_LINUX_SUBTYPE_A_32(Mandriva, OpenMandriva_Lx, "OpenMandriva Lx (32-bit)", 2048, 16, 10),
     329    VBOX_LINUX_SUBTYPE_A_64(Mandriva, OpenMandriva_Lx, "OpenMandriva Lx (64-bit)", 2048, 16, 10),
     330    VBOX_LINUX_SUBTYPE_A_32(PCLinuxOS, PCLinuxOS, "PCLinuxOS / PCLOS (32-bit)",     2048, 16, 10),
     331    VBOX_LINUX_SUBTYPE_A_64(PCLinuxOS, PCLinuxOS, "PCLinuxOS / PCLOS (64-bit)",     2048, 16, 10),
     332    VBOX_LINUX_SUBTYPE_A_32(Mageia, Mageia,    "Mageia (32-bit)",                2048, 16, 10),
     333    VBOX_LINUX_SUBTYPE_A_64(Mageia, Mageia,    "Mageia (64-bit)",                2048, 16, 10),
     334
     335    VBOX_LINUX_SUBTYPE_B_32(Oracle Linux, Oracle,   "Oracle Linux (32-bit)",      2048, 16, 20),
     336    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle,   "Oracle Linux (64-bit)",      2048, 16, 20),
     337    VBOX_LINUX_SUBTYPE_B_32(Oracle Linux, Oracle4,  "Oracle Linux 4.x (32-bit)",  1024, 16, 8),
     338    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle4,  "Oracle Linux 4.x (64-bit)",  1024, 16, 8),
     339    VBOX_LINUX_SUBTYPE_B_32(Oracle Linux, Oracle5,  "Oracle Linux 5.x (32-bit)",  1024, 16, 8),
     340    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle5,  "Oracle Linux 5.x (64-bit)",  1024, 16, 8),
     341    VBOX_LINUX_SUBTYPE_B_32(Oracle Linux, Oracle6,  "Oracle Linux 6.x (32-bit)",  2048, 16, 10),
     342    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle6,  "Oracle Linux 6.x (64-bit)",  2048, 16, 10),
     343    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle7,  "Oracle Linux 7.x (64-bit)",  2048, 16, 20),  // 64-bit only
     344    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle8,  "Oracle Linux 8.x (64-bit)",  2048, 16, 20),  // 64-bit only
     345    VBOX_LINUX_SUBTYPE_B_64(Oracle Linux, Oracle9,  "Oracle Linux 9.x (64-bit)",  2048, 16, 20),  // 64-bit only
     346
     347    VBOX_LINUX_SUBTYPE_B_32(Red Hat, RedHat,   "Red Hat (32-bit)",      2048, 16, 20),
     348    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat,   "Red Hat (64-bit)",      2048, 16, 20),
     349    VBOX_LINUX_SUBTYPE_B_32(Red Hat, RedHat3,  "Red Hat 3.x (32-bit)",  1024, 16, 8),
     350    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat3,  "Red Hat 3.x (64-bit)",  1024, 16, 8),
     351    VBOX_LINUX_SUBTYPE_B_32(Red Hat, RedHat4,  "Red Hat 4.x (32-bit)",  1024, 16, 8),
     352    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat4,  "Red Hat 4.x (64-bit)",  1024, 16, 8),
     353    VBOX_LINUX_SUBTYPE_B_32(Red Hat, RedHat5,  "Red Hat 5.x (32-bit)",  1024, 16, 8),
     354    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat5,  "Red Hat 5.x (64-bit)",  1024, 16, 8),
     355    VBOX_LINUX_SUBTYPE_B_32(Red Hat, RedHat6,  "Red Hat 6.x (32-bit)",  1024, 16, 10),
     356    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat6,  "Red Hat 6.x (64-bit)",  1024, 16, 10),
     357    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat7,  "Red Hat 7.x (64-bit)",  2048, 16, 20),  // 64-bit only
     358    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat8,  "Red Hat 8.x (64-bit)",  2048, 16, 20),  // 64-bit only
     359    VBOX_LINUX_SUBTYPE_B_64(Red Hat, RedHat9,  "Red Hat 9.x (64-bit)",  2048, 16, 20),  // 64-bit only
     360
     361    VBOX_LINUX_SUBTYPE_A_32(openSUSE, OpenSUSE,            "openSUSE (32-bit)",               1024, 16, 8),
     362    VBOX_LINUX_SUBTYPE_A_64(openSUSE, OpenSUSE,            "openSUSE (64-bit)",               1024, 16, 8),
     363    VBOX_LINUX_SUBTYPE_A_64(openSUSE, OpenSUSE_Leap,       "openSUSE Leap (64-bit)",          2048, 16, 8),  // 64-bit only
     364    VBOX_LINUX_SUBTYPE_A_32(openSUSE, OpenSUSE_Tumbleweed, "openSUSE Tumbleweed (32-bit)",    2048, 16, 8),
     365    VBOX_LINUX_SUBTYPE_A_64(openSUSE, OpenSUSE_Tumbleweed, "openSUSE Tumbleweed (64-bit)",    2048, 16, 8),
     366    VBOX_LINUX_SUBTYPE_A_32(SUSE, SUSE_LE,             "SUSE Linux Enterprise (32-bit)",  2048, 16, 8),
     367    VBOX_LINUX_SUBTYPE_A_64(SUSE, SUSE_LE,             "SUSE Linux Enterprise (64-bit)",  2048, 16, 8),
     368
     369    VBOX_LINUX_SUBTYPE_A_32(TurboLinux, Turbolinux, "Turbolinux (32-bit)", 384, 16, 8),
     370    VBOX_LINUX_SUBTYPE_A_64(TurboLinux, Turbolinux, "Turbolinux (64-bit)", 384, 16, 8),
     371
     372    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu,       "Ubuntu (32-bit)",                             2048, 16, 25),
     373    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu,       "Ubuntu (64-bit)",                             2048, 16, 25),
     374    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu10_LTS, "Ubuntu 10.04 LTS (Lucid Lynx) (32-bit)",       256, 16, 3),
     375    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu10_LTS, "Ubuntu 10.04 LTS (Lucid Lynx) (64-bit)",       256, 16, 3),
     376    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu10,     "Ubuntu 10.10 (Maverick Meerkat) (32-bit)",     256, 16, 3),
     377    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu10,     "Ubuntu 10.10 (Maverick Meerkat) (64-bit)",     256, 16, 3),
     378    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu11,     "Ubuntu 11.04 (Natty Narwhal) / 11.10 (Oneiric Ocelot) (32-bit)",  384, 16, 5),
     379    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu11,     "Ubuntu 11.04 (Natty Narwhal) / 11.10 (Oneiric Ocelot) (64-bit)",  384, 16, 5),
     380    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu12_LTS, "Ubuntu 12.04 LTS (Precise Pangolin) (32-bit)", 768, 16, 5),
     381    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu12_LTS, "Ubuntu 12.04 LTS (Precise Pangolin) (64-bit)", 768, 16, 5),
     382    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu12,     "Ubuntu 12.10 (Quantal Quetzal) (32-bit)",      768, 16, 5),
     383    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu12,     "Ubuntu 12.10 (Quantal Quetzal) (64-bit)",      768, 16, 5),
     384    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu13,     "Ubuntu 13.04 (Raring Ringtail) / 13.10 (Saucy Salamander) (32-bit)",  768, 16, 5),
     385    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu13,     "Ubuntu 13.04 (Raring Ringtail) / 13.10 (Saucy Salamander) (64-bit)",  768, 16, 5),
     386    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu14_LTS, "Ubuntu 14.04 LTS (Trusty Tahr) (32-bit)",     1536, 16, 7),
     387    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu14_LTS, "Ubuntu 14.04 LTS (Trusty Tahr) (64-bit)",     1536, 16, 7),
     388    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu14,     "Ubuntu 14.10 (Utopic Unicorn) (32-bit)",      1536, 16, 7),
     389    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu14,     "Ubuntu 14.10 (Utopic Unicorn) (64-bit)",      1536, 16, 7),
     390    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu15,     "Ubuntu 15.04 (Vivid Vervet) / 15.10 (Wily Werewolf) (32-bit)",  1536, 16, 7),
     391    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu15,     "Ubuntu 15.04 (Vivid Vervet) / 15.10 (Wily Werewolf) (64-bit)",  1536, 16, 7),
     392    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu16_LTS, "Ubuntu 16.04 LTS (Xenial Xerus) (32-bit)",    1536, 16, 10),
     393    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu16_LTS, "Ubuntu 16.04 LTS (Xenial Xerus) (64-bit)",    1536, 16, 10),
     394    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu16,     "Ubuntu 16.10 (Yakkety Yak) (32-bit)",         1536, 16, 10),
     395    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu16,     "Ubuntu 16.10 (Yakkety Yak) (64-bit)",         1536, 16, 10),
     396    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu17,     "Ubuntu 17.04 (Zesty Zapus) / 17.10 (Artful Aardvark) (32-bit)", 1536, 16, 10),
     397    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu17,     "Ubuntu 17.04 (Zesty Zapus) / 17.10 (Artful Aardvark) (64-bit)", 1536, 16, 10),
     398    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu18_LTS, "Ubuntu 18.04 LTS (Bionic Beaver) (32-bit)",   2048, 16, 25),
     399    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu18_LTS, "Ubuntu 18.04 LTS (Bionic Beaver) (64-bit)",   2048, 16, 25),
     400    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu18,     "Ubuntu 18.10 (Cosmic Cuttlefish) (32-bit)",   2048, 16, 25),
     401    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu18,     "Ubuntu 18.10 (Cosmic Cuttlefish) (64-bit)",   2048, 16, 25),
     402    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Ubuntu19,     "Ubuntu 19.04 (Disco Dingo) / 19.10 (Eoan Ermine) (32-bit)",     2048, 16, 25),
     403    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu19,     "Ubuntu 19.04 (Disco Dingo) / 19.10 (Eoan Ermine) (64-bit)",     2048, 16, 25),
     404    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu20_LTS, "Ubuntu 20.04 LTS (Focal Fossa) (64-bit)",     2048, 16, 25),  // 64-bit only
     405    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu20,     "Ubuntu 20.10 (Groovy Gorilla) (64-bit)",      2048, 16, 25),  // 64-bit only
     406    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu21,     "Ubuntu 21.04 (Hirsute Hippo) / 21.10 (Impish Indri) (64-bit)",  2048, 16, 25), // 64-bit only
     407    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu22_LTS, "Ubuntu 22.04 LTS (Jammy Jellyfish) (64-bit)", 2048, 16, 25), // 64-bit only
     408    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu22,     "Ubuntu 22.10 (Kinetic Kudu) (64-bit)", 2048, 16, 25), // 64-bit only
     409    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Ubuntu23,     "Ubuntu 23.04 (Lunar Lobster) (64-bit)", 2048, 16, 25), // 64-bit only
     410    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Lubuntu,      "Lubuntu (32-bit)",  1024, 16, 10),
     411    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Lubuntu,      "Lubuntu (64-bit)",  1024, 16, 10),
     412    VBOX_LINUX_SUBTYPE_A_32(Ubuntu, Xubuntu,      "Xubuntu (32-bit)",  1024, 16, 10),
     413    VBOX_LINUX_SUBTYPE_A_64(Ubuntu, Xubuntu,      "Xubuntu (64-bit)",  1024, 16, 10),
     414
     415    VBOX_LINUX_SUBTYPE_C_32(Xandros, Xandros, "Xandros (32-bit)", 1024, 16, 8),
     416    VBOX_LINUX_SUBTYPE_C_64(Xandros, Xandros, "Xandros (64-bit)", 1024, 16, 8),
     417
     418    VBOX_LINUX_SUBTYPE_A_32(Other Linux, Linux, "Other Linux (32-bit)", 256, 16, 8),
     419    VBOX_LINUX_SUBTYPE_B_64(Other Linux, Linux, "Other Linux (64-bit)", 512, 16, 8),
     420
     421    { "Solaris", "Solaris",           "",        "Solaris",            "Oracle Solaris 10 5/09 and earlier (32-bit)",
    422422      VBOXOSTYPE_Solaris,         VBOXOSHINT_NONE,
    423423      1, 1024,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    424424      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    425425
    426     { "Solaris", "Solaris",           "Solaris_64",         "Oracle Solaris 10 5/09 and earlier (64-bit)",
     426    { "Solaris", "Solaris",           "",        "Solaris_64",         "Oracle Solaris 10 5/09 and earlier (64-bit)",
    427427      VBOXOSTYPE_Solaris_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
    428428      1, 2048,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    429429      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    430430
    431     { "Solaris", "Solaris",           "Solaris10U8_or_later",        "Oracle Solaris 10 10/09 and later (32-bit)",
     431    { "Solaris", "Solaris",           "",        "Solaris10U8_or_later",        "Oracle Solaris 10 10/09 and later (32-bit)",
    432432      VBOXOSTYPE_Solaris10U8_or_later,     VBOXOSHINT_USBTABLET,
    433433      1, 1024,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    434434      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    435435
    436     { "Solaris", "Solaris",           "Solaris10U8_or_later_64",     "Oracle Solaris 10 10/09 and later (64-bit)",
     436    { "Solaris", "Solaris",           "",        "Solaris10U8_or_later_64",     "Oracle Solaris 10 10/09 and later (64-bit)",
    437437      VBOXOSTYPE_Solaris10U8_or_later_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
    438438      1, 2048,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    439439      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    440440
    441     { "Solaris", "Solaris",           "Solaris11_64",       "Oracle Solaris 11 (64-bit)",
     441    { "Solaris", "Solaris",           "",        "Solaris11_64",       "Oracle Solaris 11 (64-bit)",
    442442      VBOXOSTYPE_Solaris11_x64,   VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_RTCUTC,
    443443      1, 4096,  16, 32 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    444444      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    445445
    446     { "Solaris", "Solaris",           "OpenSolaris",        "OpenSolaris / Illumos / OpenIndiana (32-bit)",
     446    { "Solaris", "Solaris",           "",        "OpenSolaris",        "OpenSolaris / Illumos / OpenIndiana (32-bit)",
    447447      VBOXOSTYPE_OpenSolaris,     VBOXOSHINT_USBTABLET,
    448448      1, 1024,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    449449      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    450450
    451     { "Solaris", "Solaris",           "OpenSolaris_64",     "OpenSolaris / Illumos / OpenIndiana (64-bit)",
     451    { "Solaris", "Solaris",           "",        "OpenSolaris_64",     "OpenSolaris / Illumos / OpenIndiana (64-bit)",
    452452      VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
    453453      1, 2048,  16, 32 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
    454454      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    455455
    456     { "BSD",     "BSD",               "FreeBSD",            "FreeBSD (32-bit)",
     456    { "BSD",     "BSD",       "FreeBSD",         "FreeBSD",            "FreeBSD (32-bit)",
    457457      VBOXOSTYPE_FreeBSD,         VBOXOSHINT_NONE,
    458458      1, 1024,  16,  2 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    459459      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    460460
    461     { "BSD",     "BSD",               "FreeBSD_64",         "FreeBSD (64-bit)",
     461    { "BSD",     "BSD",       "FreeBSD",         "FreeBSD_64",         "FreeBSD (64-bit)",
    462462      VBOXOSTYPE_FreeBSD_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
    463463      1, 1024,  16, 16 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    464464      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    465465
    466     { "BSD",     "BSD",               "OpenBSD",            "OpenBSD (32-bit)",
     466    { "BSD",     "BSD",        "OpenBSD",        "OpenBSD",            "OpenBSD (32-bit)",
    467467      VBOXOSTYPE_OpenBSD,         VBOXOSHINT_HWVIRTEX,
    468468      1, 1024,  16, 16 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    469469      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    470470
    471     { "BSD",     "BSD",               "OpenBSD_64",         "OpenBSD (64-bit)",
     471    { "BSD",     "BSD",       "OpenBSD",         "OpenBSD_64",         "OpenBSD (64-bit)",
    472472      VBOXOSTYPE_OpenBSD_x64,     VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
    473473      1, 1024,  16, 16 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    474474      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    475475
    476     { "BSD",     "BSD",               "NetBSD",             "NetBSD (32-bit)",
     476    { "BSD",     "BSD",       "NetBSD",          "NetBSD",             "NetBSD (32-bit)",
    477477      VBOXOSTYPE_NetBSD,          VBOXOSHINT_RTCUTC,
    478478      1, 1024,  16, 16 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    479479      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    480480
    481     { "BSD",     "BSD",               "NetBSD_64",          "NetBSD (64-bit)",
     481    { "BSD",     "BSD",       "NetBSD",          "NetBSD_64",          "NetBSD (64-bit)",
    482482      VBOXOSTYPE_NetBSD_x64,      VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
    483483      1, 1024,  16, 16 * _1G64, GraphicsControllerType_VMSVGA, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    484484      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    485485
    486     { "OS2",     "IBM OS/2",          "OS21x",              "OS/2 1.x",
     486    { "OS2",     "IBM OS/2",          "",        "OS21x",              "OS/2 1.x",
    487487      VBOXOSTYPE_OS21x,           VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB | VBOXOSHINT_TFRESET,
    488488      1,    8,   4, 500 * _1M, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    489489      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    490490
    491     { "OS2",     "IBM OS/2",          "OS2Warp3",           "OS/2 Warp 3",
     491    { "OS2",     "IBM OS/2",          "",        "OS2Warp3",           "OS/2 Warp 3",
    492492      VBOXOSTYPE_OS2Warp3,        VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
    493493      1,   48,   4,  1 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    494494      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    495495
    496     { "OS2",     "IBM OS/2",          "OS2Warp4",           "OS/2 Warp 4",
     496    { "OS2",     "IBM OS/2",          "",        "OS2Warp4",           "OS/2 Warp 4",
    497497      VBOXOSTYPE_OS2Warp4,        VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
    498498      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    499499      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    500500
    501     { "OS2",     "IBM OS/2",          "OS2Warp45",          "OS/2 Warp 4.5",
     501    { "OS2",     "IBM OS/2",          "",        "OS2Warp45",          "OS/2 Warp 4.5",
    502502      VBOXOSTYPE_OS2Warp45,       VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
    503503      1,  128,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    504504      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    505505
    506     { "OS2",     "IBM OS/2",          "OS2eCS",             "eComStation",
     506    { "OS2",     "IBM OS/2",          "",        "OS2eCS",             "eComStation",
    507507      VBOXOSTYPE_ECS,             VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
    508508      1,  256,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    509509      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    510510
    511     { "OS2",     "IBM OS/2",          "OS2ArcaOS",          "ArcaOS",
     511    { "OS2",     "IBM OS/2",          "",        "OS2ArcaOS",          "ArcaOS",
    512512      VBOXOSTYPE_ArcaOS,          VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
    513513      1, 1024,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82540EM, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    514514      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700 },
    515515
    516     { "OS2",     "IBM OS/2",          "OS2",                "Other OS/2",
     516    { "OS2",     "IBM OS/2",          "",        "OS2",                "Other OS/2",
    517517      VBOXOSTYPE_OS2,             VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
    518518      1,   96,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    519519      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    520520
    521     { "MacOS",   "Mac OS X",          "MacOS",              "Mac OS X (32-bit)",
     521    { "MacOS",   "Mac OS X",          "",        "MacOS",              "Mac OS X (32-bit)",
    522522      VBOXOSTYPE_MacOS,           VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE
    523523                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    525525      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    526526
    527     { "MacOS",   "Mac OS X",          "MacOS_64",           "Mac OS X (64-bit)",
     527    { "MacOS",   "Mac OS X",          "",        "MacOS_64",           "Mac OS X (64-bit)",
    528528      VBOXOSTYPE_MacOS_x64,       VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    529529                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    531531      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    532532
    533     { "MacOS",   "Mac OS X",          "MacOS106",           "Mac OS X 10.6 Snow Leopard (32-bit)",
     533    { "MacOS",   "Mac OS X",          "",        "MacOS106",           "Mac OS X 10.6 Snow Leopard (32-bit)",
    534534      VBOXOSTYPE_MacOS106,        VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE
    535535                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    537537      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    538538
    539     { "MacOS",   "Mac OS X",          "MacOS106_64",        "Mac OS X 10.6 Snow Leopard (64-bit)",
     539    { "MacOS",   "Mac OS X",          "",        "MacOS106_64",        "Mac OS X 10.6 Snow Leopard (64-bit)",
    540540      VBOXOSTYPE_MacOS106_x64,    VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    541541                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    543543      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    544544
    545     { "MacOS",   "Mac OS X",          "MacOS107_64",        "Mac OS X 10.7 Lion (64-bit)",
     545    { "MacOS",   "Mac OS X",          "",        "MacOS107_64",        "Mac OS X 10.7 Lion (64-bit)",
    546546      VBOXOSTYPE_MacOS107_x64,    VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    547547                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    549549      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    550550
    551     { "MacOS",   "Mac OS X",          "MacOS108_64",        "Mac OS X 10.8 Mountain Lion (64-bit)",  /* Aka "Mountain Kitten". */
     551    { "MacOS",   "Mac OS X",          "",        "MacOS108_64",        "Mac OS X 10.8 Mountain Lion (64-bit)",  /* Aka "Mountain Kitten". */
    552552      VBOXOSTYPE_MacOS108_x64,    VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    553553                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    555555      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    556556
    557     { "MacOS",   "Mac OS X",          "MacOS109_64",        "Mac OS X 10.9 Mavericks (64-bit)", /* Not to be confused with McCain. */
     557    { "MacOS",   "Mac OS X",          "",        "MacOS109_64",        "Mac OS X 10.9 Mavericks (64-bit)", /* Not to be confused with McCain. */
    558558      VBOXOSTYPE_MacOS109_x64,    VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    559559                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    561561      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    562562
    563     { "MacOS",   "Mac OS X",          "MacOS1010_64",       "Mac OS X 10.10 Yosemite (64-bit)",
     563    { "MacOS",   "Mac OS X",         "",        "MacOS1010_64",       "Mac OS X 10.10 Yosemite (64-bit)",
    564564      VBOXOSTYPE_MacOS1010_x64,   VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    565565                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    567567      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    568568
    569     { "MacOS",   "Mac OS X",          "MacOS1011_64",       "Mac OS X 10.11 El Capitan (64-bit)",
     569    { "MacOS",   "Mac OS X",         "",        "MacOS1011_64",       "Mac OS X 10.11 El Capitan (64-bit)",
    570570      VBOXOSTYPE_MacOS1011_x64,   VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    571571                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    573573      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    574574
    575     { "MacOS",   "Mac OS X",          "MacOS1012_64",       "macOS 10.12 Sierra (64-bit)",
     575    { "MacOS",   "Mac OS X",         "",        "MacOS1012_64",       "macOS 10.12 Sierra (64-bit)",
    576576      VBOXOSTYPE_MacOS1012_x64,   VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    577577                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    579579      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    580580
    581     { "MacOS",   "Mac OS X",          "MacOS1013_64",       "macOS 10.13 High Sierra (64-bit)",
     581    { "MacOS",   "Mac OS X",         "",        "MacOS1013_64",       "macOS 10.13 High Sierra (64-bit)",
    582582      VBOXOSTYPE_MacOS1013_x64,   VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE |  VBOXOSHINT_64BIT
    583583                                | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
     
    585585      StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_ICH9, IommuType_None, AudioControllerType_HDA, AudioCodecType_STAC9221  },
    586586
    587     { "Other",   "Other",             "DOS",                "DOS",
     587    { "Other",   "Other",             "",        "DOS",                "DOS",
    588588      VBOXOSTYPE_DOS,             VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
    589589      1,   32,   4,  500 * _1M, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
    590590      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_SB16, AudioCodecType_SB16  },
    591591
    592     { "Other",   "Other",             "Netware",            "Netware",
     592    { "Other",   "Other",             "",        "Netware",            "Netware",
    593593      VBOXOSTYPE_Netware,         VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
    594594      1,  512,   4,  4 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    595595      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    596596
    597     { "Other",   "Other",             "L4",                 "L4",
     597    { "Other",   "Other",             "",        "L4",                 "L4",
    598598      VBOXOSTYPE_L4,              VBOXOSHINT_NONE,
    599599      1,   64,   4,  2 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    600600      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    601601
    602     { "Other",   "Other",             "QNX",                "QNX",
     602    { "Other",   "Other",             "",        "QNX",                "QNX",
    603603      VBOXOSTYPE_QNX,             VBOXOSHINT_HWVIRTEX,
    604604      1,  512,   4,  4 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    605605      StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    606606
    607     { "Other",   "Other",             "JRockitVE",          "JRockitVE",
     607    { "Other",   "Other",             "",        "JRockitVE",          "JRockitVE",
    608608      VBOXOSTYPE_JRockitVE,       VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE,
    609609      1, 1024,   4,  8 * _1G64, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
    610610      StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, IommuType_None, AudioControllerType_AC97, AudioCodecType_STAC9700  },
    611611
    612     { "Other",   "Other",             "VBoxBS_64",          "VirtualBox Bootsector Test (64-bit)",
     612    { "Other",   "Other",             "",        "VBoxBS_64",          "VirtualBox Bootsector Test (64-bit)",
    613613      VBOXOSTYPE_VBoxBS_x64,      VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE | VBOXOSHINT_64BIT,
    614614      1,  128,   4,  0, GraphicsControllerType_VBoxVGA, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
  • trunk/src/VBox/Main/src-server/GuestOSTypeImpl.cpp

    r101139 r101164  
    113113    unconst(mFamilyID)                  = ostype.familyId;
    114114    unconst(mFamilyDescription)         = ostype.familyDescription;
     115    unconst(mOSVariant)                 = ostype.variant;
    115116    unconst(mID)                        = ostype.id;
    116117    unconst(mDescription)               = ostype.description;
     
    173174
    174175
     176HRESULT GuestOSType::getVariant(com::Utf8Str &aVariant)
     177{
     178    /* mOSVariant is constant during life time, no need to lock */
     179    aVariant = mOSVariant;
     180
     181    return S_OK;
     182}
     183
     184
    175185HRESULT GuestOSType::getId(com::Utf8Str &aId)
    176186{
  • trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp

    r101153 r101164  
    44024402
    44034403/**
     4404 * Walk the list of GuestOSType objects and return a list of all known guest
     4405 * OS families.
     4406 *
     4407 * @param aOSFamilies    Where to store the list of guest OS families.
     4408 *
     4409 * @note Locks the guest OS types list for reading.
     4410 */
     4411HRESULT VirtualBox::getGuestOSFamilies(std::vector<com::Utf8Str> &aOSFamilies)
     4412{
     4413    std::list<com::Utf8Str> allOSFamilies;
     4414
     4415    AutoReadLock alock(m->allGuestOSTypes.getLockHandle() COMMA_LOCKVAL_SRC_POS);
     4416
     4417    for (GuestOSTypesOList::const_iterator it = m->allGuestOSTypes.begin();
     4418         it != m->allGuestOSTypes.end(); ++it)
     4419    {
     4420        const Utf8Str &familyId = (*it)->i_familyId();
     4421        AssertMsg(!familyId.isEmpty(), ("familfyId must not be NULL"));
     4422        allOSFamilies.push_back(familyId);
     4423    }
     4424
     4425    /* throw out any duplicates */
     4426    allOSFamilies.sort();
     4427    allOSFamilies.unique();
     4428
     4429    aOSFamilies.resize(allOSFamilies.size());
     4430    size_t i = 0;
     4431    for (std::list<com::Utf8Str>::const_iterator it = allOSFamilies.begin();
     4432         it != allOSFamilies.end(); ++it, ++i)
     4433        aOSFamilies[i] = (*it);
     4434
     4435    return S_OK;
     4436}
     4437
     4438/**
     4439 * Walk the list of GuestOSType objects and return a list of guest OS
     4440 * variants which correspond to the supplied guest OS family ID.
     4441 *
     4442 * @param strOSFamily    Guest OS family ID.
     4443 * @param aOSVariants    Where to store the list of guest OS variants.
     4444 *
     4445 * @note Locks the guest OS types list for reading.
     4446 */
     4447HRESULT VirtualBox::getGuestOSVariantsByFamilyId(const Utf8Str &strOSFamily,
     4448                                                 std::vector<com::Utf8Str> &aOSVariants)
     4449{
     4450    std::list<com::Utf8Str> allOSVariants;
     4451
     4452    AutoReadLock alock(m->allGuestOSTypes.getLockHandle() COMMA_LOCKVAL_SRC_POS);
     4453
     4454    bool fFoundGuestOSType = false;
     4455    for (GuestOSTypesOList::const_iterator it = m->allGuestOSTypes.begin();
     4456         it != m->allGuestOSTypes.end(); ++it)
     4457    {
     4458        const Utf8Str &familyId = (*it)->i_familyId();
     4459        AssertMsg(!familyId.isEmpty(), ("familfyId must not be NULL"));
     4460        if (familyId.compare(strOSFamily, Utf8Str::CaseInsensitive) == 0)
     4461        {
     4462            fFoundGuestOSType = true;
     4463            break;
     4464        }
     4465    }
     4466
     4467    if (!fFoundGuestOSType)
     4468       return setError(VBOX_E_OBJECT_NOT_FOUND,
     4469                       tr("'%s' is not a valid guest OS family identifier."), strOSFamily.c_str());
     4470
     4471    for (GuestOSTypesOList::const_iterator it = m->allGuestOSTypes.begin();
     4472         it != m->allGuestOSTypes.end(); ++it)
     4473    {
     4474        const Utf8Str &familyId = (*it)->i_familyId();
     4475        AssertMsg(!familyId.isEmpty(), ("familfyId must not be NULL"));
     4476        if (familyId.compare(strOSFamily, Utf8Str::CaseInsensitive) == 0)
     4477        {
     4478            const Utf8Str &strOSVariant = (*it)->i_variant();
     4479            if (!strOSVariant.isEmpty())
     4480                allOSVariants.push_back(strOSVariant);
     4481        }
     4482    }
     4483
     4484    /* throw out any duplicates */
     4485    allOSVariants.sort();
     4486    allOSVariants.unique();
     4487
     4488    aOSVariants.resize(allOSVariants.size());
     4489    size_t i = 0;
     4490    for (std::list<com::Utf8Str>::const_iterator it = allOSVariants.begin();
     4491         it != allOSVariants.end(); ++it, ++i)
     4492        aOSVariants[i] = (*it);
     4493
     4494    return S_OK;
     4495}
     4496
     4497/**
     4498 * Walk the list of GuestOSType objects and return a list of guest OS
     4499 * descriptions which correspond to the supplied guest OS variant.
     4500 *
     4501 * @param strOSVariant     Guest OS variant.
     4502 * @param aGuestOSDescs    Where to store the list of guest OS descriptions..
     4503 *
     4504 * @note Locks the guest OS types list for reading.
     4505 */
     4506HRESULT VirtualBox::getGuestOSDescsByVariant(const Utf8Str &strOSVariant,
     4507                                             std::vector<com::Utf8Str> &aGuestOSDescs)
     4508{
     4509    std::list<com::Utf8Str> allOSDescs;
     4510
     4511    AutoReadLock alock(m->allGuestOSTypes.getLockHandle() COMMA_LOCKVAL_SRC_POS);
     4512
     4513    bool fFoundGuestOSVariant = false;
     4514    for (GuestOSTypesOList::const_iterator it = m->allGuestOSTypes.begin();
     4515         it != m->allGuestOSTypes.end(); ++it)
     4516    {
     4517        const Utf8Str &guestOSVariant = (*it)->i_variant();
     4518        /* Only some guest OS types have a populated variant value. */
     4519        if (guestOSVariant.isNotEmpty() &&
     4520            guestOSVariant.compare(strOSVariant, Utf8Str::CaseInsensitive) == 0)
     4521        {
     4522            fFoundGuestOSVariant = true;
     4523            break;
     4524        }
     4525    }
     4526
     4527    if (!fFoundGuestOSVariant)
     4528       return setError(VBOX_E_OBJECT_NOT_FOUND,
     4529                       tr("'%s' is not a valid guest OS variant."), strOSVariant.c_str());
     4530
     4531    for (GuestOSTypesOList::const_iterator it = m->allGuestOSTypes.begin();
     4532         it != m->allGuestOSTypes.end(); ++it)
     4533    {
     4534        const Utf8Str &guestOSVariant = (*it)->i_variant();
     4535        /* Only some guest OS types have a populated variant value. */
     4536        if (guestOSVariant.isNotEmpty() &&
     4537            guestOSVariant.compare(strOSVariant, Utf8Str::CaseInsensitive) == 0)
     4538        {
     4539            const Utf8Str &strOSDesc = (*it)->i_description();
     4540            allOSDescs.push_back(strOSDesc);
     4541        }
     4542    }
     4543
     4544    aGuestOSDescs.resize(allOSDescs.size());
     4545    size_t i = 0;
     4546    for (std::list<com::Utf8Str>::const_iterator it = allOSDescs.begin();
     4547         it != allOSDescs.end(); ++it, ++i)
     4548        aGuestOSDescs[i] = (*it);
     4549
     4550    return S_OK;
     4551}
     4552
     4553/**
    44044554 * Returns the constant pseudo-machine UUID that is used to identify the
    44054555 * global media registry.
Note: See TracChangeset for help on using the changeset viewer.

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