VirtualBox

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

Last change on this file since 55631 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: 6.2 KB
Line 
1/* $Id: Global.h 55214 2015-04-13 15:53:01Z 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 static bool IsOnline(MachineState_T aState)
101 {
102 return aState >= MachineState_FirstOnline &&
103 aState <= MachineState_LastOnline;
104 }
105
106 /**
107 * Returns @c true if the given machine state is a transient state. This is
108 * a recommended way to detect if the VM is performing some potentially
109 * lengthy operation (such as starting, stopping, saving, deleting
110 * snapshot, etc.). Note some (but not all) transitional states are also
111 * online states (see #IsOnline()).
112 */
113 static bool IsTransient(MachineState_T aState)
114 {
115 return aState >= MachineState_FirstTransient &&
116 aState <= MachineState_LastTransient;
117 }
118
119 /**
120 * Shortcut to <tt>IsOnline(aState) || IsTransient(aState)</tt>. When it returns
121 * @false, the VM is turned off (no VM process) and not busy with
122 * another exclusive operation.
123 */
124 static bool IsOnlineOrTransient(MachineState_T aState)
125 {
126 return IsOnline(aState) || IsTransient(aState);
127 }
128
129 /**
130 * Stringify a machine state.
131 *
132 * @returns Pointer to a read only string.
133 * @param aState Valid machine state.
134 */
135 static const char *stringifyMachineState(MachineState_T aState);
136
137 /**
138 * Stringify a session state.
139 *
140 * @returns Pointer to a read only string.
141 * @param aState Valid session state.
142 */
143 static const char *stringifySessionState(SessionState_T aState);
144
145 /**
146 * Stringify a device type.
147 *
148 * @returns Pointer to a read only string.
149 * @param aType The device type.
150 */
151 static const char *stringifyDeviceType(DeviceType_T aType);
152
153 /**
154 * Stringify a reason.
155 *
156 * @returns Pointer to a read only string.
157 * @param aReason The reason code.
158 */
159 static const char *stringifyReason(Reason_T aReason);
160
161 /**
162 * Try convert a COM status code to a VirtualBox status code (VBox/err.h).
163 *
164 * @returns VBox status code.
165 * @param aComStatus COM status code.
166 */
167 static int vboxStatusCodeFromCOM(HRESULT aComStatus);
168
169 /**
170 * Try convert a VirtualBox status code (VBox/err.h) to a COM status code.
171 *
172 * This is mainly intended for dealing with vboxStatusCodeFromCOM() return
173 * values. If used on anything else, it won't be able to cope with most of the
174 * input!
175 *
176 * @returns COM status code.
177 * @param aVBoxStatus VBox status code.
178 */
179 static HRESULT vboxStatusCodeToCOM(int aVBoxStatus);
180};
181
182#endif /* !____H_GLOBAL */
183/* 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