VirtualBox

source: vbox/trunk/src/VBox/Main/src-all/Global.cpp@ 55357

Last change on this file since 55357 was 55214, checked in by vboxsync, 10 years ago

Main/Console+Machine+Session+Snapshot: move the save state and snapshot related methods from IConsole to IMachine, with lots of unavoidable code restructuring and cleanup. Also define two new machine states (so that the "Saving" one is specifically for saving state now) which requires more changes everywhere
Frontends: necessary adjustments
doc/SDK: document the changes

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 43.6 KB
Line 
1/* $Id: Global.cpp 55214 2015-04-13 15:53:01Z vboxsync $ */
2/** @file
3 * VirtualBox COM global definitions
4 *
5 * NOTE: This file is part of both VBoxC.dll and VBoxSVC.exe.
6 */
7
8/*
9 * Copyright (C) 2008-2015 Oracle Corporation
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.virtualbox.org. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License (GPL) as published by the Free Software
15 * Foundation, in version 2 as it comes in the "COPYING" file of the
16 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
17 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20#include "Global.h"
21
22#include <iprt/assert.h>
23#include <iprt/string.h>
24#include <VBox/err.h>
25
26/* static */
27const Global::OSType Global::sOSTypes[] =
28{
29 /* NOTE1: we assume that unknown is always the first two entries!
30 * NOTE2: please use powers of 2 when specifying the size of harddisks since
31 * '2GB' looks better than '1.95GB' (= 2000MB) */
32 { "Other", "Other", "Other", "Other/Unknown",
33 VBOXOSTYPE_Unknown, VBOXOSHINT_NONE,
34 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
35 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
36 { "Other", "Other", "Other_64", "Other/Unknown (64-bit)",
37 VBOXOSTYPE_Unknown_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
38 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
39 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
40 { "Windows", "Microsoft Windows", "Windows31", "Windows 3.1",
41 VBOXOSTYPE_Win31, VBOXOSHINT_FLOPPY,
42 32, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
43 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
44 { "Windows", "Microsoft Windows", "Windows95", "Windows 95",
45 VBOXOSTYPE_Win95, VBOXOSHINT_FLOPPY,
46 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
47 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
48 { "Windows", "Microsoft Windows", "Windows98", "Windows 98",
49 VBOXOSTYPE_Win98, VBOXOSHINT_FLOPPY,
50 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
51 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
52 { "Windows", "Microsoft Windows", "WindowsMe", "Windows ME",
53 VBOXOSTYPE_WinMe, VBOXOSHINT_FLOPPY | VBOXOSHINT_USBTABLET,
54 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
55 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
56 { "Windows", "Microsoft Windows", "WindowsNT4", "Windows NT 4",
57 VBOXOSTYPE_WinNT4, VBOXOSHINT_NONE,
58 128, 16, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
59 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
60 { "Windows", "Microsoft Windows", "Windows2000", "Windows 2000",
61 VBOXOSTYPE_Win2k, VBOXOSHINT_USBTABLET,
62 168, 16, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
63 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
64 { "Windows", "Microsoft Windows", "WindowsXP", "Windows XP (32 bit)",
65 VBOXOSTYPE_WinXP, VBOXOSHINT_USBTABLET,
66 192, 16, 10 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
67 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
68 { "Windows", "Microsoft Windows", "WindowsXP_64", "Windows XP (64 bit)",
69 VBOXOSTYPE_WinXP_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
70 512, 16, 10 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
71 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
72 { "Windows", "Microsoft Windows", "Windows2003", "Windows 2003 (32 bit)",
73 VBOXOSTYPE_Win2k3, VBOXOSHINT_USBTABLET,
74 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
75 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
76 { "Windows", "Microsoft Windows", "Windows2003_64", "Windows 2003 (64 bit)",
77 VBOXOSTYPE_Win2k3_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
78 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
79 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_HDA },
80 { "Windows", "Microsoft Windows", "WindowsVista", "Windows Vista (32 bit)",
81 VBOXOSTYPE_WinVista, VBOXOSHINT_USBTABLET,
82 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
83 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
84 { "Windows", "Microsoft Windows", "WindowsVista_64", "Windows Vista (64 bit)",
85 VBOXOSTYPE_WinVista_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
86 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
87 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
88 { "Windows", "Microsoft Windows", "Windows2008", "Windows 2008 (32 bit)",
89 VBOXOSTYPE_Win2k8, VBOXOSHINT_USBTABLET,
90 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
91 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
92 { "Windows", "Microsoft Windows", "Windows2008_64", "Windows 2008 (64 bit)",
93 VBOXOSTYPE_Win2k8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
94 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
95 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
96 { "Windows", "Microsoft Windows", "Windows7", "Windows 7 (32 bit)",
97 VBOXOSTYPE_Win7, VBOXOSHINT_USBTABLET,
98 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
99 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
100 { "Windows", "Microsoft Windows", "Windows7_64", "Windows 7 (64 bit)",
101 VBOXOSTYPE_Win7_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
102 512, 16, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
103 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
104 { "Windows", "Microsoft Windows", "Windows8", "Windows 8 (32 bit)",
105 VBOXOSTYPE_Win8, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE,
106 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
107 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
108 { "Windows", "Microsoft Windows", "Windows8_64", "Windows 8 (64 bit)",
109 VBOXOSTYPE_Win8_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
110 2048,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
111 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
112 { "Windows", "Microsoft Windows", "Windows81", "Windows 8.1 (32 bit)",
113 VBOXOSTYPE_Win81, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE,
114 1024,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
115 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
116 { "Windows", "Microsoft Windows", "Windows81_64", "Windows 8.1 (64 bit)",
117 VBOXOSTYPE_Win81_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
118 2048,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
119 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
120 { "Windows", "Microsoft Windows", "Windows2012_64", "Windows 2012 (64 bit)",
121 VBOXOSTYPE_Win2k12_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
122 2048,128, 25 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
123 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
124 { "Windows", "Microsoft Windows", "Windows10", "Windows 10 (32 bit)",
125 VBOXOSTYPE_Win10, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET | VBOXOSHINT_PAE,
126 1024,128, 32 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
127 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
128 { "Windows", "Microsoft Windows", "Windows10_64", "Windows 10 (64 bit)",
129 VBOXOSTYPE_Win10_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
130 2048,128, 32 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
131 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_HDA },
132 { "Windows", "Microsoft Windows", "WindowsNT", "Other Windows (32 bit)",
133 VBOXOSTYPE_WinNT, VBOXOSHINT_NONE,
134 512, 16, 20 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
135 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
136 { "Windows", "Microsoft Windows", "WindowsNT_64", "Other Windows (64-bit)",
137 VBOXOSTYPE_WinNT_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
138 512, 16, 20 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
139 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
140 { "Linux", "Linux", "Linux22", "Linux 2.2",
141 VBOXOSTYPE_Linux22, VBOXOSHINT_RTCUTC,
142 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
143 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
144 { "Linux", "Linux", "Linux24", "Linux 2.4 (32 bit)",
145 VBOXOSTYPE_Linux24, VBOXOSHINT_RTCUTC,
146 128, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
147 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
148 { "Linux", "Linux", "Linux24_64", "Linux 2.4 (64 bit)",
149 VBOXOSTYPE_Linux24_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
150 128, 4, 4 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
151 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
152 { "Linux", "Linux", "Linux26", "Linux 2.6 / 3.x (32 bit)",
153 VBOXOSTYPE_Linux26, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
154 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
155 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
156 { "Linux", "Linux", "Linux26_64", "Linux 2.6 / 3.x (64 bit)",
157 VBOXOSTYPE_Linux26_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
158 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
159 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
160 { "Linux", "Linux", "ArchLinux", "Arch Linux (32 bit)",
161 VBOXOSTYPE_ArchLinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
162 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
163 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
164 { "Linux", "Linux", "ArchLinux_64", "Arch Linux (64 bit)",
165 VBOXOSTYPE_ArchLinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
166 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
167 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
168 { "Linux", "Linux", "Debian", "Debian (32 bit)",
169 VBOXOSTYPE_Debian, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
170 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
171 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
172 { "Linux", "Linux", "Debian_64", "Debian (64 bit)",
173 VBOXOSTYPE_Debian_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
174 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
175 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97},
176 { "Linux", "Linux", "OpenSUSE", "openSUSE (32 bit)",
177 VBOXOSTYPE_OpenSUSE, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
178 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
179 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
180 { "Linux", "Linux", "OpenSUSE_64", "openSUSE (64 bit)",
181 VBOXOSTYPE_OpenSUSE_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
182 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
183 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
184 { "Linux", "Linux", "Fedora", "Fedora (32 bit)",
185 VBOXOSTYPE_FedoraCore, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
186 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
187 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
188 { "Linux", "Linux", "Fedora_64", "Fedora (64 bit)",
189 VBOXOSTYPE_FedoraCore_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
190 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
191 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
192 { "Linux", "Linux", "Gentoo", "Gentoo (32 bit)",
193 VBOXOSTYPE_Gentoo, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
194 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
195 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
196 { "Linux", "Linux", "Gentoo_64", "Gentoo (64 bit)",
197 VBOXOSTYPE_Gentoo_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
198 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
199 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
200 { "Linux", "Linux", "Mandriva", "Mandriva (32 bit)",
201 VBOXOSTYPE_Mandriva, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
202 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
203 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
204 { "Linux", "Linux", "Mandriva_64", "Mandriva (64 bit)",
205 VBOXOSTYPE_Mandriva_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
206 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
207 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
208 { "Linux", "Linux", "RedHat", "Red Hat (32 bit)",
209 VBOXOSTYPE_RedHat, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE,
210 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
211 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
212 { "Linux", "Linux", "RedHat_64", "Red Hat (64 bit)",
213 VBOXOSTYPE_RedHat_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
214 768, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
215 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
216 { "Linux", "Linux", "Turbolinux", "Turbolinux (32 bit)",
217 VBOXOSTYPE_Turbolinux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
218 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
219 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
220 { "Linux", "Linux", "Turbolinux_64", "Turbolinux (64 bit)",
221 VBOXOSTYPE_Turbolinux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
222 384, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
223 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
224 { "Linux", "Linux", "Ubuntu", "Ubuntu (32 bit)",
225 VBOXOSTYPE_Ubuntu, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE | VBOXOSHINT_USBTABLET,
226 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
227 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
228 { "Linux", "Linux", "Ubuntu_64", "Ubuntu (64 bit)",
229 VBOXOSTYPE_Ubuntu_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
230 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
231 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
232 { "Linux", "Linux", "Xandros", "Xandros (32 bit)",
233 VBOXOSTYPE_Xandros, VBOXOSHINT_RTCUTC,
234 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
235 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
236 { "Linux", "Linux", "Xandros_64", "Xandros (64 bit)",
237 VBOXOSTYPE_Xandros_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
238 256, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
239 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
240 { "Linux", "Linux", "Oracle", "Oracle (32 bit)",
241 VBOXOSTYPE_Oracle, VBOXOSHINT_RTCUTC | VBOXOSHINT_PAE,
242 512, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
243 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
244 { "Linux", "Linux", "Oracle_64", "Oracle (64 bit)",
245 VBOXOSTYPE_Oracle_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC,
246 768, 12, 12 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
247 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
248 { "Linux", "Linux", "Linux", "Other Linux (32 bit)",
249 VBOXOSTYPE_Linux, VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
250 256, 12, 8 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
251 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
252 { "Linux", "Linux", "Linux_64", "Other Linux (64-bit)",
253 VBOXOSTYPE_Linux_x64, VBOXOSHINT_64BIT | VBOXOSHINT_PAE | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
254 512, 12, 8 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
255 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
256 { "Solaris", "Solaris", "Solaris", "Oracle Solaris 10 5/09 and earlier (32 bit)",
257 VBOXOSTYPE_Solaris, VBOXOSHINT_NONE,
258 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
259 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
260 { "Solaris", "Solaris", "Solaris_64", "Oracle Solaris 10 5/09 and earlier (64 bit)",
261 VBOXOSTYPE_Solaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
262 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
263 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
264 { "Solaris", "Solaris", "OpenSolaris", "Oracle Solaris 10 10/09 and later (32 bit)",
265 VBOXOSTYPE_OpenSolaris, VBOXOSHINT_USBTABLET,
266 768, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
267 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
268 { "Solaris", "Solaris", "OpenSolaris_64", "Oracle Solaris 10 10/09 and later (64 bit)",
269 VBOXOSTYPE_OpenSolaris_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
270 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
271 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
272 { "Solaris", "Solaris", "Solaris11_64", "Oracle Solaris 11 (64 bit)",
273 VBOXOSTYPE_Solaris11_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_USBTABLET,
274 1536, 12, 16 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_IntelAhci, StorageBus_SATA,
275 StorageControllerType_IntelAhci, StorageBus_SATA, ChipsetType_PIIX3, AudioControllerType_AC97 },
276 { "BSD", "BSD", "FreeBSD", "FreeBSD (32 bit)",
277 VBOXOSTYPE_FreeBSD, VBOXOSHINT_NONE,
278 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
279 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
280 { "BSD", "BSD", "FreeBSD_64", "FreeBSD (64 bit)",
281 VBOXOSTYPE_FreeBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
282 128, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
283 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
284 { "BSD", "BSD", "OpenBSD", "OpenBSD (32 bit)",
285 VBOXOSTYPE_OpenBSD, VBOXOSHINT_HWVIRTEX,
286 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
287 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
288 { "BSD", "BSD", "OpenBSD_64", "OpenBSD (64 bit)",
289 VBOXOSTYPE_OpenBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
290 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
291 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
292 { "BSD", "BSD", "NetBSD", "NetBSD (32 bit)",
293 VBOXOSTYPE_NetBSD, VBOXOSHINT_NONE,
294 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
295 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
296 { "BSD", "BSD", "NetBSD_64", "NetBSD (64 bit)",
297 VBOXOSTYPE_NetBSD_x64, VBOXOSHINT_64BIT | VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC,
298 64, 4, 2 * _1G64, NetworkAdapterType_I82540EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
299 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
300 { "OS2", "IBM OS/2", "OS2Warp3", "OS/2 Warp 3",
301 VBOXOSTYPE_OS2Warp3, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
302 48, 4, 1 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
303 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
304 { "OS2", "IBM OS/2", "OS2Warp4", "OS/2 Warp 4",
305 VBOXOSTYPE_OS2Warp4, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
306 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
307 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
308 { "OS2", "IBM OS/2", "OS2Warp45", "OS/2 Warp 4.5",
309 VBOXOSTYPE_OS2Warp45, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY,
310 128, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
311 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
312 { "OS2", "IBM OS/2", "OS2eCS", "eComStation",
313 VBOXOSTYPE_ECS, VBOXOSHINT_HWVIRTEX,
314 256, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
315 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
316 { "OS2", "IBM OS/2", "OS21x", "OS/2 1.x",
317 VBOXOSTYPE_OS21x, VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB | VBOXOSHINT_TFRESET,
318 8, 4, 500 * _1M, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
319 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
320 { "OS2", "IBM OS/2", "OS2", "Other OS/2",
321 VBOXOSTYPE_OS2, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
322 96, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 1, StorageControllerType_PIIX4, StorageBus_IDE,
323 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
324 { "MacOS", "Mac OS X", "MacOS", "Mac OS X (32 bit)",
325 VBOXOSTYPE_MacOS, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE
326 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
327 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
328 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
329 ChipsetType_ICH9, AudioControllerType_HDA },
330 { "MacOS", "Mac OS X", "MacOS_64", "Mac OS X (64 bit)",
331 VBOXOSTYPE_MacOS_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT
332 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
333 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
334 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
335 ChipsetType_ICH9, AudioControllerType_HDA },
336 { "MacOS", "Mac OS X", "MacOS106", "Mac OS X 10.6 Snow Leopard (32 bit)",
337 VBOXOSTYPE_MacOS106, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE
338 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
339 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
340 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
341 ChipsetType_ICH9, AudioControllerType_HDA },
342 { "MacOS", "Mac OS X", "MacOS106_64", "Mac OS X 10.6 Snow Leopard (64 bit)",
343 VBOXOSTYPE_MacOS106_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT
344 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
345 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
346 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
347 ChipsetType_ICH9, AudioControllerType_HDA },
348 { "MacOS", "Mac OS X", "MacOS107_64", "Mac OS X 10.7 Lion (64 bit)",
349 VBOXOSTYPE_MacOS107_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT
350 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
351 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
352 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
353 ChipsetType_ICH9, AudioControllerType_HDA },
354 { "MacOS", "Mac OS X", "MacOS108_64", "Mac OS X 10.8 Mountain Lion (64 bit)", /* Aka "Mountain Kitten". */
355 VBOXOSTYPE_MacOS108_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT
356 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
357 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
358 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
359 ChipsetType_ICH9, AudioControllerType_HDA },
360 { "MacOS", "Mac OS X", "MacOS109_64", "Mac OS X 10.9 Mavericks (64 bit)", /* Not to be confused with McCain. */
361 VBOXOSTYPE_MacOS109_x64, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_EFI | VBOXOSHINT_PAE | VBOXOSHINT_64BIT
362 | VBOXOSHINT_USBHID | VBOXOSHINT_HPET | VBOXOSHINT_RTCUTC | VBOXOSHINT_USBTABLET,
363 2048, 4, 20 * _1G64, NetworkAdapterType_I82545EM, 0,
364 StorageControllerType_IntelAhci, StorageBus_SATA, StorageControllerType_IntelAhci, StorageBus_SATA,
365 ChipsetType_ICH9, AudioControllerType_HDA },
366 { "Other", "Other", "DOS", "DOS",
367 VBOXOSTYPE_DOS, VBOXOSHINT_FLOPPY | VBOXOSHINT_NOUSB,
368 32, 4, 500 * _1M, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
369 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_SB16 },
370 { "Other", "Other", "Netware", "Netware",
371 VBOXOSTYPE_Netware, VBOXOSHINT_HWVIRTEX,
372 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
373 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
374 { "Other", "Other", "L4", "L4",
375 VBOXOSTYPE_L4, VBOXOSHINT_NONE,
376 64, 4, 2 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
377 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
378 { "Other", "Other", "QNX", "QNX",
379#ifdef VBOX_WITH_RAW_RING1
380 VBOXOSTYPE_QNX, VBOXOSHINT_NONE,
381#else
382 VBOXOSTYPE_QNX, VBOXOSHINT_HWVIRTEX,
383#endif
384 512, 4, 4 * _1G64, NetworkAdapterType_Am79C973, 0, StorageControllerType_PIIX4, StorageBus_IDE,
385 StorageControllerType_PIIX4, StorageBus_IDE, ChipsetType_PIIX3, AudioControllerType_AC97 },
386 { "Other", "Other", "JRockitVE", "JRockitVE",
387 VBOXOSTYPE_JRockitVE, VBOXOSHINT_HWVIRTEX | VBOXOSHINT_IOAPIC | VBOXOSHINT_PAE,
388 1024, 4, 8 * _1G64, NetworkAdapterType_I82545EM, 0, StorageControllerType_PIIX4, StorageBus_IDE,
389 StorageControllerType_BusLogic, StorageBus_SCSI, ChipsetType_PIIX3, AudioControllerType_AC97 },
390};
391
392uint32_t Global::cOSTypes = RT_ELEMENTS(Global::sOSTypes);
393
394/**
395 * Returns an OS Type ID for the given VBOXOSTYPE value.
396 *
397 * The returned ID will correspond to the IGuestOSType::id value of one of the
398 * objects stored in the IVirtualBox::guestOSTypes
399 * (VirtualBoxImpl::COMGETTER(GuestOSTypes)) collection.
400 */
401/* static */
402const char *Global::OSTypeId(VBOXOSTYPE aOSType)
403{
404 for (size_t i = 0; i < RT_ELEMENTS(sOSTypes); ++i)
405 {
406 if (sOSTypes[i].osType == aOSType)
407 return sOSTypes[i].id;
408 }
409
410 return sOSTypes[0].id;
411}
412
413/*static*/ uint32_t Global::getMaxNetworkAdapters(ChipsetType_T aChipsetType)
414{
415 switch (aChipsetType)
416 {
417 case ChipsetType_PIIX3:
418 return 8;
419 case ChipsetType_ICH9:
420 return 36;
421 default:
422 return 0;
423 }
424}
425
426/*static*/ const char *
427Global::stringifyMachineState(MachineState_T aState)
428{
429 switch (aState)
430 {
431 case MachineState_Null: return "Null";
432 case MachineState_PoweredOff: return "PoweredOff";
433 case MachineState_Saved: return "Saved";
434 case MachineState_Teleported: return "Teleported";
435 case MachineState_Aborted: return "Aborted";
436 case MachineState_Running: return "Running";
437 case MachineState_Paused: return "Paused";
438 case MachineState_Stuck: return "GuruMeditation";
439 case MachineState_Teleporting: return "Teleporting";
440 case MachineState_LiveSnapshotting: return "LiveSnapshotting";
441 case MachineState_Starting: return "Starting";
442 case MachineState_Stopping: return "Stopping";
443 case MachineState_Saving: return "Saving";
444 case MachineState_Restoring: return "Restoring";
445 case MachineState_TeleportingPausedVM: return "TeleportingPausedVM";
446 case MachineState_TeleportingIn: return "TeleportingIn";
447 case MachineState_FaultTolerantSyncing: return "FaultTolerantSyncing";
448 case MachineState_DeletingSnapshotOnline: return "DeletingSnapshotOnline";
449 case MachineState_DeletingSnapshotPaused: return "DeletingSnapshotPaused";
450 case MachineState_OnlineSnapshotting: return "OnlineSnapshotting";
451 case MachineState_RestoringSnapshot: return "RestoringSnapshot";
452 case MachineState_DeletingSnapshot: return "DeletingSnapshot";
453 case MachineState_SettingUp: return "SettingUp";
454 case MachineState_Snapshotting: return "Snapshotting";
455 default:
456 {
457 AssertMsgFailed(("%d (%#x)\n", aState, aState));
458 static char s_szMsg[48];
459 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidState-0x%08x\n", aState);
460 return s_szMsg;
461 }
462 }
463}
464
465/*static*/ const char *
466Global::stringifySessionState(SessionState_T aState)
467{
468 switch (aState)
469 {
470 case SessionState_Null: return "Null";
471 case SessionState_Unlocked: return "Unlocked";
472 case SessionState_Locked: return "Locked";
473 case SessionState_Spawning: return "Spawning";
474 case SessionState_Unlocking: return "Unlocking";
475 default:
476 {
477 AssertMsgFailed(("%d (%#x)\n", aState, aState));
478 static char s_szMsg[48];
479 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidState-0x%08x\n", aState);
480 return s_szMsg;
481 }
482 }
483}
484
485/*static*/ const char *
486Global::stringifyDeviceType(DeviceType_T aType)
487{
488 switch (aType)
489 {
490 case DeviceType_Null: return "Null";
491 case DeviceType_Floppy: return "Floppy";
492 case DeviceType_DVD: return "DVD";
493 case DeviceType_HardDisk: return "HardDisk";
494 case DeviceType_Network: return "Network";
495 case DeviceType_USB: return "USB";
496 case DeviceType_SharedFolder: return "ShardFolder";
497 default:
498 {
499 AssertMsgFailed(("%d (%#x)\n", aType, aType));
500 static char s_szMsg[48];
501 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "InvalidType-0x%08x\n", aType);
502 return s_szMsg;
503 }
504 }
505}
506
507
508/*static*/ const char *
509Global::stringifyReason(Reason_T aReason)
510{
511 switch (aReason)
512 {
513 case Reason_Unspecified: return "unspecified";
514 case Reason_HostSuspend: return "host suspend";
515 case Reason_HostResume: return "host resume";
516 case Reason_HostBatteryLow: return "host battery low";
517 case Reason_Snapshot: return "snapshot";
518 default:
519 {
520 AssertMsgFailed(("%d (%#x)\n", aReason, aReason));
521 static char s_szMsg[48];
522 RTStrPrintf(s_szMsg, sizeof(s_szMsg), "invalid reason %#010x\n", aReason);
523 return s_szMsg;
524 }
525 }
526}
527
528/*static*/ int
529Global::vboxStatusCodeFromCOM(HRESULT aComStatus)
530{
531 switch (aComStatus)
532 {
533 case S_OK: return VINF_SUCCESS;
534
535 /* Standard COM status codes. See also RTErrConvertFromDarwinCOM */
536 case E_UNEXPECTED: return VERR_COM_UNEXPECTED;
537 case E_NOTIMPL: return VERR_NOT_IMPLEMENTED;
538 case E_OUTOFMEMORY: return VERR_NO_MEMORY;
539 case E_INVALIDARG: return VERR_INVALID_PARAMETER;
540 case E_NOINTERFACE: return VERR_NOT_SUPPORTED;
541 case E_POINTER: return VERR_INVALID_POINTER;
542#ifdef E_HANDLE
543 case E_HANDLE: return VERR_INVALID_HANDLE;
544#endif
545 case E_ABORT: return VERR_CANCELLED;
546 case E_FAIL: return VERR_GENERAL_FAILURE;
547 case E_ACCESSDENIED: return VERR_ACCESS_DENIED;
548
549 /* VirtualBox status codes */
550 case VBOX_E_OBJECT_NOT_FOUND: return VERR_COM_OBJECT_NOT_FOUND;
551 case VBOX_E_INVALID_VM_STATE: return VERR_COM_INVALID_VM_STATE;
552 case VBOX_E_VM_ERROR: return VERR_COM_VM_ERROR;
553 case VBOX_E_FILE_ERROR: return VERR_COM_FILE_ERROR;
554 case VBOX_E_IPRT_ERROR: return VERR_COM_IPRT_ERROR;
555 case VBOX_E_PDM_ERROR: return VERR_COM_PDM_ERROR;
556 case VBOX_E_INVALID_OBJECT_STATE: return VERR_COM_INVALID_OBJECT_STATE;
557 case VBOX_E_HOST_ERROR: return VERR_COM_HOST_ERROR;
558 case VBOX_E_NOT_SUPPORTED: return VERR_COM_NOT_SUPPORTED;
559 case VBOX_E_XML_ERROR: return VERR_COM_XML_ERROR;
560 case VBOX_E_INVALID_SESSION_STATE: return VERR_COM_INVALID_SESSION_STATE;
561 case VBOX_E_OBJECT_IN_USE: return VERR_COM_OBJECT_IN_USE;
562
563 default:
564 if (SUCCEEDED(aComStatus))
565 return VINF_SUCCESS;
566 /** @todo Check for the win32 facility and use the
567 * RTErrConvertFromWin32 function on windows. */
568 return VERR_UNRESOLVED_ERROR;
569 }
570}
571
572
573/*static*/ HRESULT
574Global::vboxStatusCodeToCOM(int aVBoxStatus)
575{
576 switch (aVBoxStatus)
577 {
578 case VINF_SUCCESS: return S_OK;
579
580 /* Standard COM status codes. */
581 case VERR_COM_UNEXPECTED: return E_UNEXPECTED;
582 case VERR_NOT_IMPLEMENTED: return E_NOTIMPL;
583 case VERR_NO_MEMORY: return E_OUTOFMEMORY;
584 case VERR_INVALID_PARAMETER: return E_INVALIDARG;
585 case VERR_NOT_SUPPORTED: return E_NOINTERFACE;
586 case VERR_INVALID_POINTER: return E_POINTER;
587#ifdef E_HANDLE
588 case VERR_INVALID_HANDLE: return E_HANDLE;
589#endif
590 case VERR_CANCELLED: return E_ABORT;
591 case VERR_GENERAL_FAILURE: return E_FAIL;
592 case VERR_ACCESS_DENIED: return E_ACCESSDENIED;
593
594 /* VirtualBox COM status codes */
595 case VERR_COM_OBJECT_NOT_FOUND: return VBOX_E_OBJECT_NOT_FOUND;
596 case VERR_COM_INVALID_VM_STATE: return VBOX_E_INVALID_VM_STATE;
597 case VERR_COM_VM_ERROR: return VBOX_E_VM_ERROR;
598 case VERR_COM_FILE_ERROR: return VBOX_E_FILE_ERROR;
599 case VERR_COM_IPRT_ERROR: return VBOX_E_IPRT_ERROR;
600 case VERR_COM_PDM_ERROR: return VBOX_E_PDM_ERROR;
601 case VERR_COM_INVALID_OBJECT_STATE: return VBOX_E_INVALID_OBJECT_STATE;
602 case VERR_COM_HOST_ERROR: return VBOX_E_HOST_ERROR;
603 case VERR_COM_NOT_SUPPORTED: return VBOX_E_NOT_SUPPORTED;
604 case VERR_COM_XML_ERROR: return VBOX_E_XML_ERROR;
605 case VERR_COM_INVALID_SESSION_STATE: return VBOX_E_INVALID_SESSION_STATE;
606 case VERR_COM_OBJECT_IN_USE: return VBOX_E_OBJECT_IN_USE;
607
608 /* Other errors. */
609 case VERR_UNRESOLVED_ERROR: return E_FAIL;
610
611 default:
612 AssertMsgFailed(("%Rrc\n", aVBoxStatus));
613 if (RT_SUCCESS(aVBoxStatus))
614 return S_OK;
615
616 /* try categorize it */
617 if ( aVBoxStatus < 0
618 && ( aVBoxStatus > -1000
619 || (aVBoxStatus < -22000 && aVBoxStatus > -32766) )
620 )
621 return VBOX_E_IPRT_ERROR;
622 if ( aVBoxStatus < VERR_PDM_NO_SUCH_LUN / 100 * 10
623 && aVBoxStatus > VERR_PDM_NO_SUCH_LUN / 100 * 10 - 100)
624 return VBOX_E_PDM_ERROR;
625 if ( aVBoxStatus <= -1000
626 && aVBoxStatus > -5000 /* wrong, but so what... */)
627 return VBOX_E_VM_ERROR;
628
629 return E_FAIL;
630 }
631}
632
633/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Note: See TracBrowser for help on using the repository browser.

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