ExtPackManagerImpl.h revision 78c40d6f7acb2e0cafa00e25133cd51d51e4c20a
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC.
fdc94c1a7aa295bf0b14ac33e1b3714bcbee8e33vboxsync * Copyright (C) 2010-2013 Oracle Corporation
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.
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync * An extension pack file.
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync /** @name COM and internal init/term/mapping cruft.
441579693f771e49eb05f2bd20c316232155675bvboxsync HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox);
f7d0672fb68919a6a824f47d7ef72b9b7bd0c266vboxsync /** @name Misc init helpers
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackFile properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getDescription(com::Utf8Str &aDescription);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getWhyUnusable(com::Utf8Str &aWhyUnusable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackFile methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryLicense(const com::Utf8Str &aPreferredLocale,
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync /** Pointer to the private instance. */
94e055188526aeeb119b5d60fe22bf7a302522dcvboxsync * An installed extension pack.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name COM and internal init/term/mapping cruft.
71a0530ccd741736d49c6798fd01cbc2956eea12vboxsync HRESULT initWithDir(VBOXEXTPACKCTX a_enmContext, const char *a_pszName, const char *a_pszDir);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name Internal interfaces used by ExtPackManager.
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_getVrdpLibraryName(Utf8Str *a_pstrVrdeLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_getLibraryName(const char *a_pszModuleName, Utf8Str *a_pstrLibrary);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync bool i_wantsToBeDefaultVrde(void) const;
710d24589d0cbe0ea6e9ad143eda5bbd41000693vboxsync /** @name Internal helper methods.
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 /** @name Extension Pack Helpers
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);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync static DECLCALLBACK(int) i_hlpReservedN(PCVBOXEXTPACKHLP pHlp);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPack properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getDescription(com::Utf8Str &aDescription);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getPlugIns(std::vector<ComPtr<IExtPackPlugIn> > &aPlugIns);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getWhyUnusable(com::Utf8Str &aWhyUnusable);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPack methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryLicense(const com::Utf8Str &aPreferredLocale,
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** Pointer to the private instance. */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync * Extension pack manager.
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name COM and internal init/term/mapping cruft.
dfb168a2e2b9e4dd806eab2ebfcbf3b36dc9a8b9vboxsync HRESULT initExtPackManager(VirtualBox *a_pVirtualBox, VBOXEXTPACKCTX a_enmContext);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** @name Internal interfaces used by other Main classes.
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);
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 // wrapped IExtPackManager properties
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT getInstalledExtPacks(std::vector<ComPtr<IExtPack> > &aInstalledExtPacks);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync // wrapped IExtPackManager methods
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT queryAllPlugInsForFrontend(const com::Utf8Str &aFrontendName,
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_runSetUidToRootHelper(Utf8Str const *a_pstrDisplayInfo, const char *a_pszCommand, ...);
78c40d6f7acb2e0cafa00e25133cd51d51e4c20avboxsync HRESULT i_refreshExtPack(const char *a_pszName, bool a_fUnsuableIsError, ExtPack **a_ppExtPack);
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync /** Pointer to the private instance. */
73045e3d71f04f3d399e70e89fbd6395c4402821vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */