SystemPropertiesImpl.h revision 9ff5b937cfc7a0832f0d8f52ab642193c2a0670a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/* $Id$ */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/** @file
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * VirtualBox COM class implementation
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/*
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Copyright (C) 2006-2010 Oracle Corporation
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster *
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * This file is part of VirtualBox Open Source Edition (OSE), as
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * available from http://www.virtualbox.org. This file is free software;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * you can redistribute it and/or modify it under the terms of the GNU
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * General Public License (GPL) as published by the Free Software
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * Foundation, in version 2 as it comes in the "COPYING" file of the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#ifndef ____H_SYSTEMPROPERTIESIMPL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#define ____H_SYSTEMPROPERTIESIMPL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#include "VirtualBoxBase.h"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#include "MediumFormatImpl.h"
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#include <VBox/com/array.h>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#include <list>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosternamespace settings
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster{
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster struct SystemProperties;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster}
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterclass ATL_NO_VTABLE SystemProperties :
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster public VirtualBoxBase,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster VBOX_SCRIPTABLE_IMPL(ISystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster{
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Maddenpublic:
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(SystemProperties, ISystemProperties)
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DECLARE_NOT_AGGREGATABLE(SystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden DECLARE_PROTECT_FINAL_CONSTRUCT()
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster BEGIN_COM_MAP(SystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster COM_INTERFACE_ENTRY(ISupportErrorInfo)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster COM_INTERFACE_ENTRY(ISystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster COM_INTERFACE_ENTRY2(IDispatch, ISystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster END_COM_MAP()
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster DECLARE_EMPTY_CTOR_DTOR(SystemProperties)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT FinalConstruct();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster void FinalRelease();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster // public initializer/uninitializer for internal purposes only
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden HRESULT init(VirtualBox *aParent);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden void uninit();
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster // ISystemProperties properties
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(MinGuestRAM))(ULONG *minRAM);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(MaxGuestRAM))(ULONG *maxRAM);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(MinGuestVRAM))(ULONG *minVRAM);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(MaxGuestVRAM))(ULONG *maxVRAM);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(MinGuestCPUCount))(ULONG *minCPUCount);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(MaxGuestCPUCount))(ULONG *maxCPUCount);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(MaxGuestMonitors))(ULONG *maxMonitors);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(InfoVDSize))(LONG64 *infoVDSize);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(NetworkAdapterCount))(ULONG *count);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(SerialPortCount))(ULONG *count);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(ParallelPortCount))(ULONG *count);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(MaxBootPosition))(ULONG *aMaxBootPosition);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(DefaultMachineFolder))(BSTR *aDefaultMachineFolder);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(DefaultMachineFolder))(IN_BSTR aDefaultMachineFolder);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(MediumFormats))(ComSafeArrayOut(IMediumFormat *, aMediumFormats));
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(DefaultHardDiskFormat))(BSTR *aDefaultHardDiskFormat);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(DefaultHardDiskFormat))(IN_BSTR aDefaultHardDiskFormat);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(FreeDiskSpaceWarning))(LONG64 *aFreeDiskSpace);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMSETTER(FreeDiskSpaceWarning))(LONG64 aFreeDiskSpace);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(COMGETTER(FreeDiskSpacePercentWarning))(ULONG *aFreeDiskSpacePercent);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(FreeDiskSpacePercentWarning))(ULONG aFreeDiskSpacePercent);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(FreeDiskSpaceError))(LONG64 *aFreeDiskSpace);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(FreeDiskSpaceError))(LONG64 aFreeDiskSpace);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(FreeDiskSpacePercentError))(ULONG *aFreeDiskSpacePercent);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(FreeDiskSpacePercentError))(ULONG aFreeDiskSpacePercent);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(RemoteDisplayAuthLibrary))(BSTR *aRemoteDisplayAuthLibrary);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(RemoteDisplayAuthLibrary))(IN_BSTR aRemoteDisplayAuthLibrary);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(WebServiceAuthLibrary))(BSTR *aWebServiceAuthLibrary);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(WebServiceAuthLibrary))(IN_BSTR aWebServiceAuthLibrary);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(LogHistoryCount))(ULONG *count);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMSETTER(LogHistoryCount))(ULONG count);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(COMGETTER(DefaultAudioDriver))(AudioDriverType_T *aAudioDriver);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(GetMaxDevicesPerPortForStorageBus)(StorageBus_T aBus, ULONG *aMaxDevicesPerPort);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(GetMinPortCountForStorageBus)(StorageBus_T aBus, ULONG *aMinPortCount);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(GetMaxPortCountForStorageBus)(StorageBus_T aBus, ULONG *aMaxPortCount);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(GetMaxInstancesOfStorageBus)(StorageBus_T aBus, ULONG *aMaxInstances);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster STDMETHOD(GetDeviceTypesForStorageBus)(StorageBus_T aBus, ComSafeArrayOut(DeviceType_T, aDeviceTypes));
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden STDMETHOD(GetDefaultIoCacheSettingForStorageController)(StorageControllerType_T aControllerType, BOOL *aEnabled);
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden // public methods only for internal purposes
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden HRESULT loadSettings(const settings::SystemProperties &data);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT saveSettings(settings::SystemProperties &data);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster ComObjPtr<MediumFormat> mediumFormat(const Utf8Str &aFormat);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster // public methods for internal purposes only
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster // (ensure there is a caller and a read lock before calling them!)
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterprivate:
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster typedef std::list<ComObjPtr<MediumFormat> > MediumFormatList;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT setDefaultMachineFolder(const Utf8Str &aPath);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT setDefaultHardDiskFormat(const Utf8Str &aFormat);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT setRemoteDisplayAuthLibrary(const Utf8Str &aPath);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster HRESULT setWebServiceAuthLibrary(const Utf8Str &aPath);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster VirtualBox * const mParent;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster settings::SystemProperties *m;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
ce4d3fddc8fe2eddd68a20af9570b3cc63ece5abNeil Madden Utf8Str m_strDefaultMachineFolderFull;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster MediumFormatList m_llMediumFormats;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster friend class VirtualBox;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster};
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster#endif // ____H_SYSTEMPROPERTIESIMPL
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster/* vi: set tabstop=4 shiftwidth=4 expandtab: */
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster