SystemPropertiesImpl.h revision be21a31a81f769881871ef88f43eeac1a3051624
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/* $Id$ */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/** @file
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * VirtualBox COM class implementation
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync/*
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Copyright (C) 2006-2008 Sun Microsystems, Inc.
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * available from http://www.virtualbox.org. This file is free software;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * you can redistribute it and/or modify it under the terms of the GNU
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * General Public License (GPL) as published by the Free Software
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync *
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync * additional information or have any questions.
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#ifndef ____H_SYSTEMPROPERTIESIMPL
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#define ____H_SYSTEMPROPERTIESIMPL
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include "VirtualBoxBase.h"
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include "HardDiskFormatImpl.h"
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include <VBox/com/array.h>
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#include <list>
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncclass VirtualBox;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncclass ATL_NO_VTABLE SystemProperties :
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync public VirtualBoxBaseNEXT,
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync public VirtualBoxSupportErrorInfoImpl <SystemProperties, ISystemProperties>,
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync public VirtualBoxSupportTranslation <SystemProperties>,
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync public ISystemProperties
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync{
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncpublic:
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT (SystemProperties)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync DECLARE_NOT_AGGREGATABLE(SystemProperties)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync DECLARE_PROTECT_FINAL_CONSTRUCT()
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync BEGIN_COM_MAP(SystemProperties)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync COM_INTERFACE_ENTRY(ISupportErrorInfo)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync COM_INTERFACE_ENTRY(ISystemProperties)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync END_COM_MAP()
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync NS_DECL_ISUPPORTS
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync DECLARE_EMPTY_CTOR_DTOR (SystemProperties)
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT FinalConstruct();
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync void FinalRelease();
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync // public initializer/uninitializer for internal purposes only
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT init (VirtualBox *aParent);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync void uninit();
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync // ISystemProperties properties
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MinGuestRAM) (ULONG *minRAM));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MaxGuestRAM) (ULONG *maxRAM));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MinGuestVRAM) (ULONG *minVRAM));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MaxGuestVRAM) (ULONG *maxVRAM));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MaxGuestMonitors) (ULONG *maxMonitors));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MaxVDISize) (ULONG64 *maxVDISize));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(NetworkAdapterCount) (ULONG *count));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(SerialPortCount) (ULONG *count));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(ParallelPortCount) (ULONG *count));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(MaxBootPosition) (ULONG *aMaxBootPosition));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(DefaultMachineFolder)) (BSTR *aDefaultMachineFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(DefaultMachineFolder)) (INPTR BSTR aDefaultMachineFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(DefaultHardDiskFolder)) (BSTR *aDefaultHardDiskFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(DefaultHardDiskFolder)) (INPTR BSTR aDefaultHardDiskFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(HardDiskFormats)) (ComSafeArrayOut (IHardDiskFormat *, aHardDiskFormats));
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(DefaultHardDiskFormat)) (BSTR *aDefaultHardDiskFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(DefaultHardDiskFormat)) (INPTR BSTR aDefaultHardDiskFolder);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(RemoteDisplayAuthLibrary)) (BSTR *aRemoteDisplayAuthLibrary);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(RemoteDisplayAuthLibrary)) (INPTR BSTR aRemoteDisplayAuthLibrary);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(WebServiceAuthLibrary)) (BSTR *aWebServiceAuthLibrary);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(WebServiceAuthLibrary)) (INPTR BSTR aWebServiceAuthLibrary);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(HWVirtExEnabled)) (BOOL *enabled);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(HWVirtExEnabled)) (BOOL enabled);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMGETTER(LogHistoryCount)) (ULONG *count);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync STDMETHOD(COMSETTER(LogHistoryCount)) (ULONG count);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync // public methods only for internal purposes
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT loadSettings (const settings::Key &aGlobal);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT saveSettings (settings::Key &aGlobal);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** Default Machine path (as is, not full). Not thread safe (use object lock). */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const Bstr &defaultMachineFolder() const { return mDefaultMachineFolder; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** Default Machine path (full). Not thread safe (use object lock). */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const Bstr &defaultMachineFolderFull() const { return mDefaultMachineFolderFull; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** Default hard disk path (as is, not full). Not thread safe (use object lock). */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const Bstr &defaultHardDiskFolder() const { return mDefaultHardDiskFolder; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** Default hard disk path (full). Not thread safe (use object lock). */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const Bstr &defaultHardDiskFolderFull() const { return mDefaultHardDiskFolderFull; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync /** Default hard disk format. Not thread safe (use object lock). */
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const Bstr &defaultHardDiskFormat() const { return mDefaultHardDiskFormat; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync // for VirtualBoxSupportErrorInfoImpl
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync static const wchar_t *getComponentName() { return L"SystemProperties"; }
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsyncprivate:
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync typedef std::list <ComObjPtr <HardDiskFormat> > HardDiskFormatList;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT setDefaultMachineFolder (const BSTR aPath);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT setDefaultHardDiskFolder (const BSTR aPath);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT setDefaultHardDiskFormat (const BSTR aFormat);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT setRemoteDisplayAuthLibrary (const BSTR aPath);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HRESULT setWebServiceAuthLibrary (const BSTR aPath);
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync const ComObjPtr <VirtualBox, ComWeakRef> mParent;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mDefaultMachineFolder;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mDefaultMachineFolderFull;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mDefaultHardDiskFolder;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mDefaultHardDiskFolderFull;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mDefaultHardDiskFormat;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync HardDiskFormatList mHardDiskFormats;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mRemoteDisplayAuthLibrary;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync Bstr mWebServiceAuthLibrary;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync BOOL mHWVirtExEnabled;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync ULONG mLogHistoryCount;
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync};
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync#endif // ____H_SYSTEMPROPERTIESIMPL
7da9e7e719adde3baba3f6fa1d0bcfb170cf9911vboxsync