VirtualBox

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

Last change on this file since 28973 was 28825, checked in by vboxsync, 15 years ago

Make SATA the default harddisk controller for Windows guests (Vista and up) and 2.6 Linux guests

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.5 KB
Line 
1/* $Id: Global.h 28825 2010-04-27 13:50:46Z vboxsync $ */
2
3/** @file
4 *
5 * VirtualBox COM global declarations
6 */
7
8/*
9 * Copyright (C) 2008-2010 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#ifndef ____H_GLOBAL
21#define ____H_GLOBAL
22
23/* generated header */
24#include "SchemaDefs.h"
25
26/* interface definitions */
27#include "VBox/com/VirtualBox.h"
28
29#include <VBox/ostypes.h>
30
31#include <iprt/types.h>
32
33#define VBOXOSHINT_NONE 0
34#define VBOXOSHINT_64BIT RT_BIT(0)
35#define VBOXOSHINT_HWVIRTEX RT_BIT(1)
36#define VBOXOSHINT_IOAPIC RT_BIT(2)
37#define VBOXOSHINT_EFI RT_BIT(3)
38#define VBOXOSHINT_PAE RT_BIT(4)
39#define VBOXOSHINT_USBHID RT_BIT(5)
40#define VBOXOSHINT_HPET RT_BIT(6)
41#define VBOXOSHINT_USBTABLET RT_BIT(7)
42#define VBOXOSHINT_RTCUTC RT_BIT(8)
43
44/**
45 * Contains global static definitions that can be referenced by all COM classes
46 * regardless of the apartment.
47 */
48class Global
49{
50public:
51
52 /** Represents OS Type <-> string mappings. */
53 struct OSType
54 {
55 const char *familyId; /* utf-8 */
56 const char *familyDescription; /* utf-8 */
57 const char *id; /* utf-8 */
58 const char *description; /* utf-8 */
59 const VBOXOSTYPE osType;
60 const uint32_t osHint;
61 const uint32_t recommendedRAM;
62 const uint32_t recommendedVRAM;
63 const uint32_t recommendedHDD;
64 const NetworkAdapterType_T networkAdapterType;
65 const uint32_t numSerialEnabled;
66 const StorageControllerType_T dvdStorageControllerType;
67 const StorageBus_T dvdStorageBusType;
68 const StorageControllerType_T hdStorageControllerType;
69 const StorageBus_T hdStorageBusType;
70 };
71
72 static const OSType sOSTypes[SchemaDefs::OSTypeId_COUNT];
73
74 static const char *OSTypeId(VBOXOSTYPE aOSType);
75
76 /**
77 * Returns @c true if the given machine state is an online state. This is a
78 * recommended way to detect if the VM is online (being executed in a
79 * dedicated process) or not. Note that some online states are also
80 * transitional states (see #IsTransitional()).
81 *
82 * @remarks Saving may actually be an offline state according to the
83 * documentation (offline snapshot).
84 */
85 static bool IsOnline(MachineState_T aState)
86 {
87#if 0
88 return aState >= MachineState_FirstOnline &&
89 aState <= MachineState_LastOnline;
90#else
91 switch (aState)
92 {
93 case MachineState_Running:
94 case MachineState_Paused:
95 case MachineState_Teleporting:
96 case MachineState_LiveSnapshotting:
97 case MachineState_Stuck:
98 case MachineState_Starting:
99 case MachineState_Stopping:
100 case MachineState_Saving:
101 case MachineState_Restoring:
102 case MachineState_TeleportingPausedVM:
103 case MachineState_TeleportingIn:
104 return true;
105 default:
106 return false;
107 }
108#endif
109 }
110
111 /**
112 * Returns @c true if the given machine state is a transient state. This is
113 * a recommended way to detect if the VM is performing some potentially
114 * lengthy operation (such as starting, stopping, saving, deleting
115 * snapshot, etc.). Note some (but not all) transitional states are also
116 * online states (see #IsOnline()).
117 */
118 static bool IsTransient(MachineState_T aState)
119 {
120#if 0
121 return aState >= MachineState_FirstTransient &&
122 aState <= MachineState_LastTransient;
123#else
124 switch (aState)
125 {
126 case MachineState_Teleporting:
127 case MachineState_LiveSnapshotting:
128 case MachineState_Starting:
129 case MachineState_Stopping:
130 case MachineState_Saving:
131 case MachineState_Restoring:
132 case MachineState_TeleportingPausedVM:
133 case MachineState_TeleportingIn:
134 case MachineState_RestoringSnapshot:
135 case MachineState_DeletingSnapshot:
136 case MachineState_SettingUp:
137 return true;
138 default:
139 return false;
140 }
141#endif
142 }
143
144 /**
145 * Shortcut to <tt>IsOnline(aState) || IsTransient(aState)</tt>. When it returns
146 * @false, the VM is turned off (no VM process) and not busy with
147 * another exclusive operation.
148 */
149 static bool IsOnlineOrTransient(MachineState_T aState)
150 {
151 return IsOnline(aState) || IsTransient(aState);
152 }
153
154 /**
155 * Stringify a machine state.
156 *
157 * @returns Pointer to a read only string.
158 * @param aState Valid machine state.
159 */
160 static const char *stringifyMachineState(MachineState_T aState);
161
162 /**
163 * Stringify a session state.
164 *
165 * @returns Pointer to a read only string.
166 * @param aState Valid session state.
167 */
168 static const char *stringifySessionState(SessionState_T aState);
169
170 /**
171 * Stringify a device type.
172 *
173 * @returns Pointer to a read only string.
174 * @param aType The device type.
175 */
176 static const char *stringifyDeviceType(DeviceType_T aType);
177
178 /**
179 * Try convert a COM status code to a VirtualBox status code (VBox/err.h).
180 *
181 * @returns VBox status code.
182 * @param aComStatus COM status code.
183 */
184 static int vboxStatusCodeFromCOM(HRESULT aComStatus);
185
186 /**
187 * Try convert a VirtualBox status code (VBox/err.h) to a COM status code.
188 *
189 * This is mainly inteded for dealing with vboxStatusCodeFromCOM() return
190 * values. If used on anything else, it won't be able to cope with most of the
191 * input!
192 *
193 * @returns COM status code.
194 * @param aVBoxStatus VBox status code.
195 */
196 static HRESULT vboxStatusCodeToCOM(int aVBoxStatus);
197};
198
199#endif /* !____H_GLOBAL */
200/* 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