settings.h revision 101e307bb33304d9dda53a7652510880e8228b13
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Settings file data structures.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * These structures are created by the settings file loader and filled with values
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * copied from the raw XML data. This was all new with VirtualBox 3.1 and allows us
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * to finally make the XML reader version-independent and read VirtualBox XML files
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * from earlier and even newer (future) versions without requiring complicated,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * tedious and error-prone XSLT conversions.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * It is this file that defines all structures that map VirtualBox global and
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * machine settings to XML files. These structures are used by the rest of Main,
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * even though this header file does not require anything else in Main.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Note: Headers in Main code have been tweaked to only declare the structures
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * defined here so that this header need only be included from code files that
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * actually use these structures.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Copyright (C) 2007-2013 Oracle Corporation
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * available from http://www.virtualbox.org. This file is free software;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * you can redistribute it and/or modify it under the terms of the GNU
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * General Public License (GPL) as published by the Free Software
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * The contents of this file may alternatively be used under the terms
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * of the Common Development and Distribution License Version 1.0
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox OSE distribution, in which case the provisions of the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * CDDL are applicable instead of those of the GPL.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * You may elect to license modified versions of this file under the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * terms and conditions of either the GPL or the CDDL or both.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * Maximum depth of the snapshot tree, to prevent stack overflows.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * XPCOM has a relatively low stack size for its workers, and we have
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * to avoid crashes due to exceeding the limit both on reading and
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * writing config files.
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync////////////////////////////////////////////////////////////////////////////////
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync// Structures shared between Machine XML and VirtualBox.xml
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync////////////////////////////////////////////////////////////////////////////////
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * USB device filter definition. This struct is used both in MainConfigFile
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * (for global USB filters) and MachineConfigFile (for machine filters).
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
2881ae582c193ac8e4dabe678ac5593c55ad7bd9vboxsync * your settings might never get saved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync USBDeviceFilterAction_T action; // only used with host USB filters
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync com::Utf8Str strRemote; // irrelevant for host USB objects
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync uint32_t ulMaskedInterfaces; // irrelevant for host USB objects
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::map<com::Utf8Str, com::Utf8Str> StringsMap;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync// ExtraDataItem (used by both VirtualBox.xml and machines XML)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<USBDeviceFilter> USBDeviceFiltersList;
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
81b3101ea5e60964f67c97185bbd43dbf75c5ab5vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * your settings might never get saved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync // the following are for hard disks only:
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync bool fAutoReset; // optional, only for diffs, default is false
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * A media registry. Starting with VirtualBox 3.3, this can appear in both the
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * VirtualBox.xml file as well as machine XML files with settings version 1.11
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * or higher, so these lists are now in ConfigFileBase.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * your settings might never get saved.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync /** Note: 128/8 is only acceptable */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsynctypedef std::list<NATHostLoopbackOffset> NATLoopbackOffsetList;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * Common base class for both MainConfigFile and MachineConfigFile
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * which contains some common logic for both.
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync /* Note: this copy constructor doesn't create a full copy of other, cause
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync * the file based stuff (xml doc) could not be copied. */
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readExtraData(const xml::ElementNode &elmExtraData,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readUSBDeviceFilters(const xml::ElementNode &elmDeviceFilters,
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync typedef enum {Error, HardDisk, DVDImage, FloppyImage} MediaType;
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readMedium(MediaType t, const xml::ElementNode &elmMedium, MediaList &llMedia);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readMediaRegistry(const xml::ElementNode &elmMediaRegistry, MediaRegistry &mr);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readNATForwardRuleList(const xml::ElementNode &elmParent, NATRuleList &llRules);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void readNATLoopbacks(const xml::ElementNode &elmParent, NATLoopbackOffsetList &llLoopBacks);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildExtraData(xml::ElementNode &elmParent, const StringsMap &me);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildUSBDeviceFilters(xml::ElementNode &elmParent,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync void buildMediaRegistry(xml::ElementNode &elmParent,
d0a71f63bd810b54e0359223fe53b07730154dc5vboxsync void buildNATForwardRuleList(xml::ElementNode &elmParent, const NATRuleList &natRuleList);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync void buildNATLoopbacks(xml::ElementNode &elmParent, const NATLoopbackOffsetList &natLoopbackList);
e0e0c19eefceaf5d4ec40f9466b58a771f50e799vboxsync////////////////////////////////////////////////////////////////////////////////
12204ff4d822f4d94cf0ced0a12f4e1b5fc664advboxsync////////////////////////////////////////////////////////////////////////////////
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::list<MachineRegistryEntry> MachinesRegistry;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::map<DhcpOpt_T, com::Utf8Str> DhcpOptionMap;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef DhcpOptionMap::const_iterator DhcpOptConstIterator;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync VmNameSlotKey(const com::Utf8Str& aVmName, LONG aSlot): VmName(aVmName),
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef std::map<VmNameSlotKey, DhcpOptionMap> VmSlot2OptionsMap;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef VmSlot2OptionsMap::value_type VmSlot2OptionsPair;
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsynctypedef VmSlot2OptionsMap::iterator VmSlot2OptionsIterator;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef VmSlot2OptionsMap::const_iterator VmSlot2OptionsConstIterator;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync std::map<DhcpOpt_T, com::Utf8Str> GlobalDhcpOptions;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Nat Networking settings (NAT service).
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readMachineRegistry(const xml::ElementNode &elmMachineRegistry);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readDHCPServers(const xml::ElementNode &elmDHCPServers);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readDhcpOptions(DhcpOptionMap& map, const xml::ElementNode& options);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync void readNATNetworks(const xml::ElementNode &elmNATNetworks);
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync////////////////////////////////////////////////////////////////////////////////
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync// Machine XML structures
c113f3435253eb5c01a17f6b599c280d505663f7vboxsync////////////////////////////////////////////////////////////////////////////////
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
a91869e545af1b242b7c5f6f0aa12164f74225f4vboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync * your settings might never get saved.
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync /** List of USB controllers present. */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync /** List of USB device filters. */
88c504b1c053e580e42d5fc90ef2ccedc50c65bdvboxsync fDNSPassDomain(true), /* historically this value is true */
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync enmPromiscModePolicy(NetworkAdapterPromiscModePolicy_Deny),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync NetworkAdapterPromiscModePolicy_T enmPromiscModePolicy;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strBandwidthGroup; // requires settings version 1.13 (VirtualBox 4.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<NetworkAdapter> NetworkAdaptersList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return (this == &a)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<GuestProperty> GuestPropertiesList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::map<uint32_t, DeviceType_T> BootOrderMap;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync return ( (this == &c)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsynctypedef std::list<BandwidthGroup> BandwidthGroupList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync bool operator==(const HostPCIDeviceAttachment &a) const
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsynctypedef std::list<HostPCIDeviceAttachment> HostPCIDeviceAttachmentList;
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * Representation of Machine hardware; this is used in the MachineConfigFile.hardwareMachine
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync com::Utf8Str strVersion; // hardware version, optional
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync typedef enum LongModeType { LongMode_Enabled, LongMode_Disabled, LongMode_Legacy } LongModeType;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fCpuHotPlug; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync CpuList llCpus; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync bool fHPETEnabled; // requires settings version 1.10 (VirtualBox 3.2)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync uint32_t ulCpuExecutionCap; // requires settings version 1.11 (VirtualBox 3.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync BootOrderMap mapBootOrder; // item 0 has highest priority
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync fAccelerate2DVideo; // requires settings version 1.8 (VirtualBox 3.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureHorzRes; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureVertRes; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureRate; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint32_t ulVideoCaptureFPS; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fVideoCaptureEnabled; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync uint64_t u64VideoCaptureScreens; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strVideoCaptureFile; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync FirmwareType_T firmwareType; // requires settings version 1.9 (VirtualBox 3.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync PointingHIDType_T pointingHIDType; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync KeyboardHIDType_T keyboardHIDType; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync ChipsetType_T chipsetType; // requires settings version 1.11 (VirtualBox 4.0)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync bool fEmulatedUSBCardReader; // 1.12 (VirtualBox 4.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // technically these two have no business in the hardware section, but for some
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // clever reason <Hardware> is where they are in the XML....
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync IOSettings ioSettings; // requires settings version 1.10 (VirtualBox 3.2)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync HostPCIDeviceAttachmentList pciAttachments; // requires settings version 1.12 (VirtualBox 4.1)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strDefaultFrontend; // requires settings version 1.14 (VirtualBox 4.3)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * A device attached to a storage controller. This can either be a
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * hard disk or a DVD drive or a floppy drive and also specifies
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * which medium is "in" the drive; as a result, this is a combination
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * of the Main IMedium and IMediumAttachment interfaces.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync DeviceType_T deviceType; // only HardDisk, DVD or Floppy are allowed
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // DVDs can be in pass-through mode:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether guest-triggered eject of DVDs will keep the medium in the
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // VM config or not:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether the medium is non-rotational:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Whether the medium supports discarding unused blocks:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // if an image file is attached to the device (ISO, RAW, or hard disk image such as VDI),
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // this is its UUID; it depends on deviceType which media registry this then needs to
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // be looked up in. If no image file (only permitted for DVDs and floppies), then the UUID is NULL
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // for DVDs and floppies, the attachment can also be a host device:
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync com::Utf8Str strHostDriveSrc; // if != NULL, value of <HostDrive>/@src
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // Bandwidth group the device is attached to.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsynctypedef std::list<AttachedDevice> AttachedDevicesList;
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync * your settings might never get saved.
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync StorageBus_T storageBus; // _SATA, _SCSI, _IDE, _SAS
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync // only for when controllerType == StorageControllerType_IntelAhci:
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsynctypedef std::list<StorageController> StorageControllersList;
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * We wrap the storage controllers list into an extra struct so we can
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * use an undefined struct without needing std::list<> in all the headers.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * your settings might never get saved.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Settings that has to do with debugging.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && fAllowTracingToAccessVM == rOther.fAllowTracingToAccessVM
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync * Settings that has to do with autostart.
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync return fAutostartEnabled == rOther.fAutostartEnabled
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * the operator== which is used by MachineConfigFile::operator==(), or otherwise
f67af59f039fe962080af93e1f7dd5065250b2cfvboxsync * your settings might never get saved.
77708d0cc3d81cb2007c13ed2ca5fb1b8379d0ddvboxsync com::Utf8Str strStateFile; // for online snapshots only
3379a3053bdf96e4a7c84cb099580a29c6d4547bvboxsync enmFaultToleranceState(FaultToleranceState_Inactive),
d7b582240fd84655df03ad70cf59ac764bf7cce7vboxsync && (fDirectoryIncludesUUID == c.fDirectoryIncludesUUID)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strTeleporterAddress == c.strTeleporterAddress)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strTeleporterPassword == c.strTeleporterPassword)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (enmFaultToleranceState == c.enmFaultToleranceState)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (uFaultToleranceInterval == c.uFaultToleranceInterval)
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync && (strFaultToleranceAddress == c.strFaultToleranceAddress)
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync && (strFaultTolerancePassword == c.strFaultTolerancePassword)
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * MachineConfigFile represents an XML machine configuration. All the machine settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * that go out to the XML (or are read from it) are in here.
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * NOTE: If you add any fields in here, you must update a) the constructor and b)
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * the operator== which is used by Machine::saveSettings(), or otherwise your settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync * might never get saved.
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync bool fCurrentStateModified; // optional, default is true
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync RTTIMESPEC timeLastStateChange; // optional, defaults to now
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync SnapshotsList llFirstSnapshot; // first snapshot or empty list if there's none
eb31f787aa8be90af240e2bed7680be92d625ba8vboxsync MachineConfigFile(const com::Utf8Str *pstrFilename);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void importMachineXML(const xml::ElementNode &elmMachine);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync static bool isAudioDriverAllowedOnThisHost(AudioDriverType_T drv);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync static AudioDriverType_T getHostDefaultAudioDriver();
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readNetworkAdapters(const xml::ElementNode &elmHardware, NetworkAdaptersList &ll);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void readAttachedNetworkMode(const xml::ElementNode &pelmMode, bool fEnabled, NetworkAdapter &nic);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readCpuIdTree(const xml::ElementNode &elmCpuid, CpuIdLeafsList &ll);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readCpuTree(const xml::ElementNode &elmCpu, CpuList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readSerialPorts(const xml::ElementNode &elmUART, SerialPortsList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readParallelPorts(const xml::ElementNode &elmLPT, ParallelPortsList &ll);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readAudioAdapter(const xml::ElementNode &elmAudioAdapter, AudioAdapter &aa);
a076b35761e36233a2a3ba16f77c77d7849170cavboxsync void readGuestProperties(const xml::ElementNode &elmGuestProperties, Hardware &hw);
1923b15bec4fe14f2049678525e5ae739a884dd0vboxsync void readStorageControllerAttributes(const xml::ElementNode &elmStorageController, StorageController &sctl);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readHardware(const xml::ElementNode &elmHardware, Hardware &hw, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readHardDiskAttachments_pre1_7(const xml::ElementNode &elmHardDiskAttachments, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readStorageControllers(const xml::ElementNode &elmStorageControllers, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readDVDAndFloppies_pre1_9(const xml::ElementNode &elmHardware, Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readTeleporter(const xml::ElementNode *pElmTeleporter, MachineUserData *pUserData);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readDebugging(const xml::ElementNode *pElmDbg, Debugging *pDbg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readAutostart(const xml::ElementNode *pElmAutostart, Autostart *pAutostart);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readGroups(const xml::ElementNode *elmGroups, StringsList *pllGroups);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readSnapshot(uint32_t depth, const xml::ElementNode &elmSnapshot, Snapshot &snap);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void readMachine(const xml::ElementNode &elmMachine);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildHardwareXML(xml::ElementNode &elmParent, const Hardware &hw, const Storage &strg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildNetworkXML(NetworkAttachmentType_T mode, xml::ElementNode &elmParent, bool fEnabled, const NetworkAdapter &nic);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildStorageControllersXML(xml::ElementNode &elmParent,
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync std::list<xml::ElementNode*> *pllElementsWithUuidAttributes);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildDebuggingXML(xml::ElementNode *pElmParent, const Debugging *pDbg);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildAutostartXML(xml::ElementNode *pElmParent, const Autostart *pAutostart);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildGroupsXML(xml::ElementNode *pElmParent, const StringsList *pllGroups);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync void buildSnapshotXML(uint32_t depth, xml::ElementNode &elmParent, const Snapshot &snap);
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync} // namespace settings
3904a969d57a5bb3cc5136c75ec805b66f8660dcvboxsync#endif /* ___VBox_settings_h */