73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/* $Id$ */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/** @file
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/*
970785e5b8fe4ca867c2c82422e52ae507d06799vboxsync * Copyright (C) 2010-2014 Oracle Corporation
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync *
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * available from http://www.virtualbox.org. This file is free software;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * you can redistribute it and/or modify it under the terms of the GNU
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * General Public License (GPL) as published by the Free Software
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync#ifndef ____H_EXTPACKMANAGERIMPL
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync#define ____H_EXTPACKMANAGERIMPL
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync#include "VirtualBoxBase.h"
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync#include <VBox/ExtPack/ExtPack.h>
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync#include "ExtPackWrap.h"
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync#include "ExtPackFileWrap.h"
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync#include "ExtPackManagerWrap.h"
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync#include <iprt/fs.h>
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
868b337416ea3d43dcd4e02f27e85d6703c98640vboxsync#if !defined(VBOX_COM_INPROC)
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync/**
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync * An extension pack file.
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync */
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsyncclass ATL_NO_VTABLE ExtPackFile :
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync public ExtPackFileWrap
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync{
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsyncpublic:
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync /** @name COM and internal init/term/mapping cruft.
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync * @{ */
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync DECLARE_EMPTY_CTOR_DTOR(ExtPackFile)
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync HRESULT FinalConstruct();
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync void FinalRelease();
441579693f771e49eb05f2bd20c316232155675bvboxsync HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox);
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync void uninit();
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync /** @} */
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsyncprivate:
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync /** @name Misc init helpers
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync * @{ */
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync HRESULT initFailed(const char *a_pszWhyFmt, ...);
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync /** @} */
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsyncprivate:
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackFile properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getName(com::Utf8Str &aName);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getDescription(com::Utf8Str &aDescription);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getVersion(com::Utf8Str &aVersion);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getRevision(ULONG *aRevision);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getEdition(com::Utf8Str &aEdition);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getVRDEModule(com::Utf8Str &aVRDEModule);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getUsable(BOOL *aUsable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getWhyUnusable(com::Utf8Str &aWhyUnusable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getShowLicense(BOOL *aShowLicense);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getLicense(com::Utf8Str &aLicense);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getFilePath(com::Utf8Str &aFilePath);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackFile methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryLicense(const com::Utf8Str &aPreferredLocale,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aPreferredLanguage,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aFormat,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync com::Utf8Str &aLicenseText);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT install(BOOL aReplace,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aDisplayInfo,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ComPtr<IProgress> &aProgess);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync struct Data;
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync /** Pointer to the private instance. */
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync Data *m;
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync friend class ExtPackManager;
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync};
868b337416ea3d43dcd4e02f27e85d6703c98640vboxsync#endif
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/**
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync * An installed extension pack.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsyncclass ATL_NO_VTABLE ExtPack :
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync public ExtPackWrap
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync{
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsyncpublic:
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name COM and internal init/term/mapping cruft.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * @{ */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync DECLARE_EMPTY_CTOR_DTOR(ExtPack)
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync HRESULT FinalConstruct();
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync void FinalRelease();
71a0530ccd741736d49c6798fd01cbc2956eea12vboxsync HRESULT initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync void uninit();
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync RTMEMEF_NEW_AND_DELETE_OPERATORS();
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @} */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name Internal interfaces used by ExtPackManager.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * @{ */
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callInstalledHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock, PRTERRINFO pErrInfo);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_callUninstallHookAndClose(IVirtualBox *a_pVirtualBox, bool a_fForcedRemoval);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callVirtualBoxReadyHook(IVirtualBox *a_pVirtualBox, AutoWriteLock *a_pLock);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callConsoleReadyHook(IConsole *a_pConsole, AutoWriteLock *a_pLock);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callVmCreatedHook(IVirtualBox *a_pVirtualBox, IMachine *a_pMachine, AutoWriteLock *a_pLock);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callVmPowerOnHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_callVmPowerOffHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_checkVrde(void);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_getLibraryName(const char *a_pszModuleName, Utf8Str *a_pstrLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_wantsToBeDefaultVrde(void) const;
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_refresh(bool *pfCanDelete);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @} */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsyncprotected:
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync /** @name Internal helper methods.
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync * @{ */
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_probeAndLoad(void);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_findModule(const char *a_pszName, const char *a_pszExt, VBOXEXTPACKMODKIND a_enmKind,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync Utf8Str *a_ppStrFound, bool *a_pfNative, PRTFSOBJINFO a_pObjInfo) const;
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static bool i_objinfoIsEqual(PCRTFSOBJINFO pObjInfo1, PCRTFSOBJINFO pObjInfo2);
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync /** @} */
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync /** @name Extension Pack Helpers
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync * @{ */
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync VBOXEXTPACKMODKIND enmKind, char *pszFound, size_t cbFound, bool *pfNative);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(VBOXEXTPACKCTX) i_hlpGetContext(PCVBOXEXTPACKHLP pHlp);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_hlpLoadHGCMService(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IConsole) *pConsole, const char *pszServiceLibrary, const char *pszServiceName);
970785e5b8fe4ca867c2c82422e52ae507d06799vboxsync static DECLCALLBACK(int) i_hlpLoadVDPlugin(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, const char *pszPluginLibrary);
970785e5b8fe4ca867c2c82422e52ae507d06799vboxsync static DECLCALLBACK(int) i_hlpUnloadVDPlugin(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, const char *pszPluginLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_hlpReservedN(PCVBOXEXTPACKHLP pHlp);
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync /** @} */
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsyncprivate:
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPack properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getName(com::Utf8Str &aName);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getDescription(com::Utf8Str &aDescription);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getVersion(com::Utf8Str &aVersion);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getRevision(ULONG *aRevision);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getEdition(com::Utf8Str &aEdition);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getVRDEModule(com::Utf8Str &aVRDEModule);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getUsable(BOOL *aUsable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getWhyUnusable(com::Utf8Str &aWhyUnusable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getShowLicense(BOOL *aShowLicense);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getLicense(com::Utf8Str &aLicense);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPack methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryLicense(const com::Utf8Str &aPreferredLocale,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aPreferredLanguage,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aFormat,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync com::Utf8Str &aLicenseText);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryObject(const com::Utf8Str &aObjUuid,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ComPtr<IUnknown> &aReturnInterface);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync struct Data;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** Pointer to the private instance. */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync Data *m;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync friend class ExtPackManager;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync};
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/**
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * Extension pack manager.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsyncclass ATL_NO_VTABLE ExtPackManager :
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync public ExtPackManagerWrap
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync{
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsyncpublic:
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name COM and internal init/term/mapping cruft.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * @{ */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync DECLARE_EMPTY_CTOR_DTOR(ExtPackManager)
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync HRESULT FinalConstruct();
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync void FinalRelease();
dfb168a2e2b9e4dd806eab2ebfcbf3b36dc9a8b9vboxsync HRESULT initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync void uninit();
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @} */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name Internal interfaces used by other Main classes.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * @{ */
868b337416ea3d43dcd4e02f27e85d6703c98640vboxsync#if !defined(VBOX_COM_INPROC)
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_doInstallThreadProc(RTTHREAD hThread, void *pvJob);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_doUninstallThreadProc(RTTHREAD hThread, void *pvJob);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo);
868b337416ea3d43dcd4e02f27e85d6703c98640vboxsync#endif
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_callAllVirtualBoxReadyHooks(void);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_callAllConsoleReadyHooks(IConsole *a_pConsole);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_callAllVmCreatedHooks(IMachine *a_pMachine);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync int i_callAllVmConfigureVmmHooks(IConsole *a_pConsole, PVM a_pVM);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync int i_callAllVmPowerOnHooks(IConsole *a_pConsole, PVM a_pVM);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_callAllVmPowerOffHooks(IConsole *a_pConsole, PVM a_pVM);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_checkVrdeExtPack(Utf8Str const *a_pstrExtPack);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync int i_getVrdeLibraryPathForExtPack(Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrVrdeLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_getLibraryPathForExtPack(const char *a_pszModuleName, Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_getDefaultVrdeExtPack(Utf8Str *a_pstrExtPack);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_isExtPackUsable(const char *a_pszExtPack);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_dumpAllToReleaseLog(void);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @} */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
8d82d07fc2f7234b1e5a3ba544e1086a5a7a7c5fvboxsyncprivate:
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackManager properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getInstalledExtPacks(std::vector<ComPtr<IExtPack> > &aInstalledExtPacks);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackManager methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT find(const com::Utf8Str &aName,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ComPtr<IExtPack> &aReturnData);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT openExtPackFile(const com::Utf8Str &aPath,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ComPtr<IExtPackFile> &aFile);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT uninstall(const com::Utf8Str &aName,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync BOOL aForcedRemoval,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync const com::Utf8Str &aDisplayInfo,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ComPtr<IProgress> &aProgess);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT cleanup();
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryAllPlugInsForFrontend(const com::Utf8Str &aFrontendName,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync std::vector<com::Utf8Str> &aPlugInModules);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT isExtPackUsable(const com::Utf8Str &aName,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync BOOL *aUsable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync ExtPack *i_findExtPack(const char *a_pszName);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync void i_removeExtPack(const char *a_pszName);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_refreshExtPack(const char *a_pszName, bool a_fUnsuableIsError, ExtPack **a_ppExtPack);
8d82d07fc2f7234b1e5a3ba544e1086a5a7a7c5fvboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsyncprivate:
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync struct Data;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** Pointer to the private instance. */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync Data *m;
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync};
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync#endif
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */