VirtualBox

source: vbox/trunk/src/VBox/Main/include/PlatformPropertiesImpl.h

Last change on this file was 106061, checked in by vboxsync, 3 months ago

Copyright year updates by scm.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.5 KB
Line 
1/* $Id: PlatformPropertiesImpl.h 106061 2024-09-16 14:03:52Z vboxsync $ */
2/** @file
3 * VirtualBox COM class implementation - Platform properties.
4 */
5
6/*
7 * Copyright (C) 2023-2024 Oracle and/or its affiliates.
8 *
9 * This file is part of VirtualBox base platform packages, as
10 * available from https://www.virtualbox.org.
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation, in version 3 of the
15 * License.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20 * General Public License for more details.
21 *
22 * You should have received a copy of the GNU General Public License
23 * along with this program; if not, see <https://www.gnu.org/licenses>.
24 *
25 * SPDX-License-Identifier: GPL-3.0-only
26 */
27
28#ifndef MAIN_INCLUDED_PlatformPropertiesImpl_h
29#define MAIN_INCLUDED_PlatformPropertiesImpl_h
30#ifndef RT_WITHOUT_PRAGMA_ONCE
31# pragma once
32#endif
33
34#include "PlatformPropertiesWrap.h"
35
36namespace settings
37{
38 struct PlatformProperties;
39}
40
41class ATL_NO_VTABLE PlatformProperties :
42 public PlatformPropertiesWrap
43{
44public:
45
46 DECLARE_COMMON_CLASS_METHODS(PlatformProperties)
47
48 HRESULT FinalConstruct();
49 void FinalRelease();
50
51 // public initializer/uninitializer for internal purposes only
52 HRESULT init(VirtualBox *aParent, bool fIsHost = false);
53 void uninit() RT_OVERRIDE;
54
55 // public internal methods
56 //HRESULT i_loadSettings(const settings::PlatformProperties &data);
57 //HRESULT i_saveSettings(settings::PlatformProperties &data);
58 //void i_rollback();
59 //void i_commit();
60 //void i_copyFrom(PlatformProperties *aThat);
61 HRESULT i_setArchitecture(PlatformArchitecture_T aArchitecture);
62
63 // public static helper functions
64 static PlatformArchitecture_T s_getHostPlatformArchitecture(void);
65
66 // public static methods, for stuff which does not have a state
67 static ULONG s_getMaxNetworkAdapters(ChipsetType_T aChipset);
68 static ULONG s_getMaxNetworkAdaptersOfType(ChipsetType_T aChipset, NetworkAttachmentType_T aType);
69 static HRESULT s_getSupportedVRAMRange(GraphicsControllerType_T aGraphicsControllerType, BOOL fAccelerate3DEnabled, ULONG *aMinMB, ULONG *aMaxMB, ULONG *aStrideSizeMB);
70 static int s_getSupportedGraphicsControllerFeatures(PlatformArchitecture_T enmArchitecture, GraphicsControllerType_T enmController, std::vector<GraphicsFeature_T> &vecSupportedGraphicsFeatures);
71 static bool s_isGraphicsControllerFeatureSupported(PlatformArchitecture_T enmArchitecture, GraphicsControllerType_T enmController, GraphicsFeature_T enmFeature);
72
73private:
74
75 // wrapped IPlatformProperties properties
76 HRESULT getSerialPortCount(ULONG *aSerialPortCount) RT_OVERRIDE;
77 HRESULT getParallelPortCount(ULONG *aParallelPortCount) RT_OVERRIDE;
78 HRESULT getMaxBootPosition(ULONG *aMaxBootPosition) RT_OVERRIDE;
79 HRESULT getRawModeSupported(BOOL *aRawModeSupported) RT_OVERRIDE;
80 HRESULT getExclusiveHwVirt(BOOL *aExclusiveHwVirt) RT_OVERRIDE;
81 HRESULT setExclusiveHwVirt(BOOL aExclusiveHwVirt) RT_OVERRIDE;
82 HRESULT getSupportedParavirtProviders(std::vector<ParavirtProvider_T> &aSupportedParavirtProviders) RT_OVERRIDE;
83 HRESULT getSupportedFirmwareTypes(std::vector<FirmwareType_T> &aSupportedFirmwareTypes) RT_OVERRIDE;
84 HRESULT getSupportedGfxControllerTypes(std::vector<GraphicsControllerType_T> &aSupportedGraphicsControllerTypes) RT_OVERRIDE;
85 HRESULT getSupportedGuestOSTypes(std::vector<ComPtr<IGuestOSType> > &aSupportedGuestOSTypes) RT_OVERRIDE;
86 HRESULT getSupportedNetAdpPromiscModePols(std::vector<NetworkAdapterPromiscModePolicy_T> &aSupportedNetworkAdapterPromiscModePolicies) RT_OVERRIDE;
87 HRESULT getSupportedNetworkAdapterTypes(std::vector<NetworkAdapterType_T> &aSupportedNetworkAdapterTypes) RT_OVERRIDE;
88 HRESULT getSupportedUartTypes(std::vector<UartType_T> &aSupportedUartTypes) RT_OVERRIDE;
89 HRESULT getSupportedUSBControllerTypes(std::vector<USBControllerType_T> &aSupportedUSBControllerTypes) RT_OVERRIDE;
90 HRESULT getSupportedAudioControllerTypes(std::vector<AudioControllerType_T> &aSupportedAudioControllerTypes) RT_OVERRIDE;
91 HRESULT getSupportedBootDevices(std::vector<DeviceType_T> &aSupportedBootDevices) RT_OVERRIDE;
92 HRESULT getSupportedStorageBuses(std::vector<StorageBus_T> &aSupportedStorageBuses) RT_OVERRIDE;
93 HRESULT getSupportedStorageControllerTypes(std::vector<StorageControllerType_T> &aSupportedStorageControllerTypes) RT_OVERRIDE;
94 HRESULT getSupportedChipsetTypes(std::vector<ChipsetType_T> &aSupportedChipsetTypes) RT_OVERRIDE;
95 HRESULT getSupportedIommuTypes(std::vector<IommuType_T> &aSupportedIommuTypes) RT_OVERRIDE;
96 HRESULT getSupportedTpmTypes(std::vector<TpmType_T> &aSupportedTpmTypes) RT_OVERRIDE;
97
98 // wrapped IPlatformProperties methods
99 HRESULT getMaxNetworkAdapters(ChipsetType_T aChipset,
100 ULONG *aMaxNetworkAdapters) RT_OVERRIDE;
101 HRESULT getMaxNetworkAdaptersOfType(ChipsetType_T aChipset,
102 NetworkAttachmentType_T aType,
103 ULONG *aMaxNetworkAdapters) RT_OVERRIDE;
104 HRESULT getMaxDevicesPerPortForStorageBus(StorageBus_T aBus,
105 ULONG *aMaxDevicesPerPort) RT_OVERRIDE;
106 HRESULT getMinPortCountForStorageBus(StorageBus_T aBus,
107 ULONG *aMinPortCount) RT_OVERRIDE;
108 HRESULT getMaxPortCountForStorageBus(StorageBus_T aBus,
109 ULONG *aMaxPortCount) RT_OVERRIDE;
110 HRESULT getMaxInstancesOfStorageBus(ChipsetType_T aChipset,
111 StorageBus_T aBus,
112 ULONG *aMaxInstances) RT_OVERRIDE;
113 HRESULT getSupportedVRAMRange(GraphicsControllerType_T aGraphicsControllerType, BOOL fAccelerate3DEnabled,
114 ULONG *aMinMB, ULONG *aMaxMB, ULONG *aStrideSizeMB) RT_OVERRIDE;
115 HRESULT getSupportedGfxFeaturesForType(GraphicsControllerType_T aGraphicsControllerType,
116 std::vector<GraphicsFeature_T> &aSupportedGraphicsFeatures) RT_OVERRIDE;
117 HRESULT getDeviceTypesForStorageBus(StorageBus_T aBus,
118 std::vector<DeviceType_T> &aDeviceTypes) RT_OVERRIDE;
119 HRESULT getStorageBusForControllerType(StorageControllerType_T aStorageControllerType,
120 StorageBus_T *aStorageBus) RT_OVERRIDE;
121 HRESULT getStorageControllerTypesForBus(StorageBus_T aStorageBus,
122 std::vector<StorageControllerType_T> &aStorageControllerTypes) RT_OVERRIDE;
123 HRESULT getStorageControllerHotplugCapable(StorageControllerType_T aControllerType,
124 BOOL *aHotplugCapable) RT_OVERRIDE;
125 HRESULT getMaxInstancesOfUSBControllerType(ChipsetType_T aChipset,
126 USBControllerType_T aType,
127 ULONG *aMaxInstances) RT_OVERRIDE;
128
129 VirtualBox * const mParent;
130 /** Platform architecture the properties are for. */
131 PlatformArchitecture_T mPlatformArchitecture;
132 /** Flag set to \c true if this instance handles platform properties
133 * for the host, or set to \c false for guests. */
134 bool const mfIsHost;
135
136 // Data
137
138 settings::PlatformProperties *m;
139};
140
141#endif /* !MAIN_INCLUDED_PlatformPropertiesImpl_h */
142
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