VirtualBox

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

Last change on this file since 92404 was 92154, checked in by vboxsync, 3 years ago

Main/GuestOSType: Add new attribute for indicating that the guest uses WDDM graphics driver (assuming GA are installed), which can be used by the Manager UI to figure out the VRAM requirements without making guesses based on the guest OS type name.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 6.9 KB
Line 
1/* $Id: Global.h 92154 2021-10-29 17:11:00Z vboxsync $ */
2/** @file
3 * VirtualBox COM API - Global Declarations and Definitions.
4 */
5
6/*
7 * Copyright (C) 2008-2020 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 MAIN_INCLUDED_Global_h
19#define MAIN_INCLUDED_Global_h
20#ifndef RT_WITHOUT_PRAGMA_ONCE
21# pragma once
22#endif
23
24/* interface definitions */
25#include "VBox/com/VirtualBox.h"
26
27#include <VBox/ostypes.h>
28
29#include <iprt/types.h>
30
31#define VBOXOSHINT_NONE 0
32#define VBOXOSHINT_64BIT RT_BIT(0)
33#define VBOXOSHINT_HWVIRTEX RT_BIT(1)
34#define VBOXOSHINT_IOAPIC RT_BIT(2)
35#define VBOXOSHINT_EFI RT_BIT(3)
36#define VBOXOSHINT_PAE RT_BIT(4)
37#define VBOXOSHINT_USBHID RT_BIT(5)
38#define VBOXOSHINT_HPET RT_BIT(6)
39#define VBOXOSHINT_USBTABLET RT_BIT(7)
40#define VBOXOSHINT_RTCUTC RT_BIT(8)
41#define VBOXOSHINT_ACCEL2D RT_BIT(9)
42#define VBOXOSHINT_ACCEL3D RT_BIT(10)
43#define VBOXOSHINT_FLOPPY RT_BIT(11)
44#define VBOXOSHINT_NOUSB RT_BIT(12)
45#define VBOXOSHINT_TFRESET RT_BIT(13)
46#define VBOXOSHINT_USB3 RT_BIT(14)
47#define VBOXOSHINT_X2APIC RT_BIT(15)
48#define VBOXOSHINT_EFI_SECUREBOOT RT_BIT(16)
49#define VBOXOSHINT_TPM RT_BIT(17)
50#define VBOXOSHINT_TPM2 RT_BIT(18)
51#define VBOXOSHINT_WDDM_GRAPHICS RT_BIT(19)
52
53/** The VBoxVRDP kludge extension pack name.
54 *
55 * This is not a valid extension pack name (dashes are not allowed), and
56 * hence will not conflict with real extension packs.
57 */
58#define VBOXVRDP_KLUDGE_EXTPACK_NAME "Built-in-VBoxVRDP"
59
60/**
61 * Contains global static definitions that can be referenced by all COM classes
62 * regardless of the apartment.
63 */
64class Global
65{
66public:
67
68 /** Represents OS Type <-> string mappings. */
69 struct OSType
70 {
71 const char *familyId; /* utf-8 */
72 const char *familyDescription; /* utf-8 */
73 const char *id; /* utf-8, VM config file value */
74 const char *description; /* utf-8 */
75 const VBOXOSTYPE osType;
76 const uint32_t osHint;
77 const uint32_t recommendedCPUCount;
78 const uint32_t recommendedRAM;
79 const uint32_t recommendedVRAM;
80 const uint64_t recommendedHDD;
81 const GraphicsControllerType_T graphicsControllerType;
82 const NetworkAdapterType_T networkAdapterType;
83 const uint32_t numSerialEnabled;
84 const StorageControllerType_T dvdStorageControllerType;
85 const StorageBus_T dvdStorageBusType;
86 const StorageControllerType_T hdStorageControllerType;
87 const StorageBus_T hdStorageBusType;
88 const ChipsetType_T chipsetType;
89 const IommuType_T iommuType;
90 const AudioControllerType_T audioControllerType;
91 const AudioCodecType_T audioCodecType;
92 };
93
94 static const OSType sOSTypes[];
95 static size_t cOSTypes;
96
97 /**
98 * Maps VBOXOSTYPE to the OS type which is used in VM configs.
99 */
100 static const char *OSTypeId(VBOXOSTYPE aOSType);
101
102 /**
103 * Maps an OS type ID string to index into sOSTypes.
104 * @returns index on success, UINT32_MAX if not found.
105 */
106 static uint32_t getOSTypeIndexFromId(const char *pszId);
107
108 /**
109 * Get the network adapter limit for each chipset type.
110 */
111 static uint32_t getMaxNetworkAdapters(ChipsetType_T aChipsetType);
112
113 /**
114 * Returns @c true if the given machine state is an online state. This is a
115 * recommended way to detect if the VM is online (being executed in a
116 * dedicated process) or not. Note that some online states are also
117 * transitional states (see #IsTransient()).
118 */
119 static bool IsOnline(MachineState_T aState)
120 {
121 return aState >= MachineState_FirstOnline &&
122 aState <= MachineState_LastOnline;
123 }
124
125 /**
126 * Returns @c true if the given machine state is a transient state. This is
127 * a recommended way to detect if the VM is performing some potentially
128 * lengthy operation (such as starting, stopping, saving, deleting
129 * snapshot, etc.). Note some (but not all) transitional states are also
130 * online states (see #IsOnline()).
131 */
132 static bool IsTransient(MachineState_T aState)
133 {
134 return aState >= MachineState_FirstTransient &&
135 aState <= MachineState_LastTransient;
136 }
137
138 /**
139 * Shortcut to <tt>IsOnline(aState) || IsTransient(aState)</tt>. When it returns
140 * @c false, the VM is turned off (no VM process) and not busy with
141 * another exclusive operation.
142 */
143 static bool IsOnlineOrTransient(MachineState_T aState)
144 {
145 return IsOnline(aState) || IsTransient(aState);
146 }
147
148 /**
149 * Stringify a machine state.
150 *
151 * @returns Pointer to a read only string.
152 * @param aState Valid machine state.
153 */
154 static const char *stringifyMachineState(MachineState_T aState);
155
156 /**
157 * Stringify a session state.
158 *
159 * @returns Pointer to a read only string.
160 * @param aState Valid session state.
161 */
162 static const char *stringifySessionState(SessionState_T aState);
163
164 /**
165 * Stringify a device type.
166 *
167 * @returns Pointer to a read only string.
168 * @param aType The device type.
169 */
170 static const char *stringifyDeviceType(DeviceType_T aType);
171
172 /**
173 * Stringify a reason.
174 *
175 * @returns Pointer to a read only string.
176 * @param aReason The reason code.
177 */
178 static const char *stringifyReason(Reason_T aReason);
179
180 /**
181 * Try convert a COM status code to a VirtualBox status code (VBox/err.h).
182 *
183 * @returns VBox status code.
184 * @param aComStatus COM status code.
185 */
186 static int vboxStatusCodeFromCOM(HRESULT aComStatus);
187
188 /**
189 * Try convert a VirtualBox status code (VBox/err.h) to a COM status code.
190 *
191 * This is mainly intended for dealing with vboxStatusCodeFromCOM() return
192 * values. If used on anything else, it won't be able to cope with most of the
193 * input!
194 *
195 * @returns COM status code.
196 * @param aVBoxStatus VBox status code.
197 */
198 static HRESULT vboxStatusCodeToCOM(int aVBoxStatus);
199};
200
201#endif /* !MAIN_INCLUDED_Global_h */
202/* 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