VirtualBox

source: vbox/trunk/src/VBox/Main/include/Global.h@ 51856

Last change on this file since 51856 was 49074, checked in by vboxsync, 11 years ago

Main, FE/Qt: Added a triple fault handling OS hint and a new OS/2 1.x guest type.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.5 KB
Line 
1/* $Id: Global.h 49074 2013-10-13 22:08:34Z vboxsync $ */
2/** @file
3 * VirtualBox COM API - Global Declarations and Definitions.
4 */
5
6/*
7 * Copyright (C) 2008-2011 Oracle Corporation
8 *
9 * This file is part of VirtualBox Open Source Edition (OSE), as
10 * available from http://www.virtualbox.org. This file is free software;
11 * you can redistribute it and/or modify it under the terms of the GNU
12 * General Public License (GPL) as published by the Free Software
13 * Foundation, in version 2 as it comes in the "COPYING" file of the
14 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16 */
17
18#ifndef ____H_GLOBAL
19#define ____H_GLOBAL
20
21/* interface definitions */
22#include "VBox/com/VirtualBox.h"
23
24#include <VBox/ostypes.h>
25
26#include <iprt/types.h>
27
28#define VBOXOSHINT_NONE 0
29#define VBOXOSHINT_64BIT RT_BIT(0)
30#define VBOXOSHINT_HWVIRTEX RT_BIT(1)
31#define VBOXOSHINT_IOAPIC RT_BIT(2)
32#define VBOXOSHINT_EFI RT_BIT(3)
33#define VBOXOSHINT_PAE RT_BIT(4)
34#define VBOXOSHINT_USBHID RT_BIT(5)
35#define VBOXOSHINT_HPET RT_BIT(6)
36#define VBOXOSHINT_USBTABLET RT_BIT(7)
37#define VBOXOSHINT_RTCUTC RT_BIT(8)
38#define VBOXOSHINT_ACCEL2D RT_BIT(9)
39#define VBOXOSHINT_ACCEL3D RT_BIT(10)
40#define VBOXOSHINT_FLOPPY RT_BIT(11)
41#define VBOXOSHINT_NOUSB RT_BIT(12)
42#define VBOXOSHINT_TFRESET RT_BIT(13)
43
44/** The VBoxVRDP kludge extension pack name.
45 *
46 * This is not a valid extension pack name (dashes are not allowed), and
47 * hence will not conflict with real extension packs.
48 */
49#define VBOXVRDP_KLUDGE_EXTPACK_NAME "Built-in-VBoxVRDP"
50
51/**
52 * Contains global static definitions that can be referenced by all COM classes
53 * regardless of the apartment.
54 */
55class Global
56{
57public:
58
59 /** Represents OS Type <-> string mappings. */
60 struct OSType
61 {
62 const char *familyId; /* utf-8 */
63 const char *familyDescription; /* utf-8 */
64 const char *id; /* utf-8, VM config file value */
65 const char *description; /* utf-8 */
66 const VBOXOSTYPE osType;
67 const uint32_t osHint;
68 const uint32_t recommendedRAM;
69 const uint32_t recommendedVRAM;
70 const uint64_t recommendedHDD;
71 const NetworkAdapterType_T networkAdapterType;
72 const uint32_t numSerialEnabled;
73 const StorageControllerType_T dvdStorageControllerType;
74 const StorageBus_T dvdStorageBusType;
75 const StorageControllerType_T hdStorageControllerType;
76 const StorageBus_T hdStorageBusType;
77 const ChipsetType_T chipsetType;
78 const AudioControllerType_T audioControllerType;
79 };
80
81 static const OSType sOSTypes[];
82 static uint32_t cOSTypes;
83
84 /**
85 * Maps VBOXOSTYPE to the OS type which is used in VM configs.
86 */
87 static const char *OSTypeId(VBOXOSTYPE aOSType);
88
89 /**
90 * Get the network adapter limit for each chipset type.
91 */
92 static uint32_t getMaxNetworkAdapters(ChipsetType_T aChipsetType);
93
94 /**
95 * Returns @c true if the given machine state is an online state. This is a
96 * recommended way to detect if the VM is online (being executed in a
97 * dedicated process) or not. Note that some online states are also
98 * transitional states (see #IsTransitional()).
99 *
100 * @remarks Saving may actually be an offline state according to the
101 * documentation (offline snapshot).
102 */
103 static bool IsOnline(MachineState_T aState)
104 {
105#if 0
106 return aState >= MachineState_FirstOnline &&
107 aState <= MachineState_LastOnline;
108#else
109 switch (aState)
110 {
111 case MachineState_Running:
112 case MachineState_Paused:
113 case MachineState_Teleporting:
114 case MachineState_LiveSnapshotting:
115 case MachineState_Stuck:
116 case MachineState_Starting:
117 case MachineState_Stopping:
118 case MachineState_Saving:
119 case MachineState_Restoring:
120 case MachineState_TeleportingPausedVM:
121 case MachineState_TeleportingIn:
122 return true;
123 default:
124 return false;
125 }
126#endif
127 }
128
129 /**
130 * Returns @c true if the given machine state is a transient state. This is
131 * a recommended way to detect if the VM is performing some potentially
132 * lengthy operation (such as starting, stopping, saving, deleting
133 * snapshot, etc.). Note some (but not all) transitional states are also
134 * online states (see #IsOnline()).
135 */
136 static bool IsTransient(MachineState_T aState)
137 {
138#if 0
139 return aState >= MachineState_FirstTransient &&
140 aState <= MachineState_LastTransient;
141#else
142 switch (aState)
143 {
144 case MachineState_Teleporting:
145 case MachineState_LiveSnapshotting:
146 case MachineState_Starting:
147 case MachineState_Stopping:
148 case MachineState_Saving:
149 case MachineState_Restoring:
150 case MachineState_TeleportingPausedVM:
151 case MachineState_TeleportingIn:
152 case MachineState_RestoringSnapshot:
153 case MachineState_DeletingSnapshot:
154 case MachineState_SettingUp:
155 return true;
156 default:
157 return false;
158 }
159#endif
160 }
161
162 /**
163 * Shortcut to <tt>IsOnline(aState) || IsTransient(aState)</tt>. When it returns
164 * @false, the VM is turned off (no VM process) and not busy with
165 * another exclusive operation.
166 */
167 static bool IsOnlineOrTransient(MachineState_T aState)
168 {
169 return IsOnline(aState) || IsTransient(aState);
170 }
171
172 /**
173 * Stringify a machine state.
174 *
175 * @returns Pointer to a read only string.
176 * @param aState Valid machine state.
177 */
178 static const char *stringifyMachineState(MachineState_T aState);
179
180 /**
181 * Stringify a session state.
182 *
183 * @returns Pointer to a read only string.
184 * @param aState Valid session state.
185 */
186 static const char *stringifySessionState(SessionState_T aState);
187
188 /**
189 * Stringify a device type.
190 *
191 * @returns Pointer to a read only string.
192 * @param aType The device type.
193 */
194 static const char *stringifyDeviceType(DeviceType_T aType);
195
196 /**
197 * Stringify a reason.
198 *
199 * @returns Pointer to a read only string.
200 * @param aReason The reason code.
201 */
202 static const char *stringifyReason(Reason_T aReason);
203
204 /**
205 * Try convert a COM status code to a VirtualBox status code (VBox/err.h).
206 *
207 * @returns VBox status code.
208 * @param aComStatus COM status code.
209 */
210 static int vboxStatusCodeFromCOM(HRESULT aComStatus);
211
212 /**
213 * Try convert a VirtualBox status code (VBox/err.h) to a COM status code.
214 *
215 * This is mainly intended for dealing with vboxStatusCodeFromCOM() return
216 * values. If used on anything else, it won't be able to cope with most of the
217 * input!
218 *
219 * @returns COM status code.
220 * @param aVBoxStatus VBox status code.
221 */
222 static HRESULT vboxStatusCodeToCOM(int aVBoxStatus);
223};
224
225#endif /* !____H_GLOBAL */
226/* 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