ExtPackManagerImpl.h revision 970785e5b8fe4ca867c2c82422e52ae507d06799
/* $Id$ */
/** @file
* VirtualBox Main - interface for Extension Packs, VBoxSVC & VBoxC.
*/
/*
* Copyright (C) 2010-2014 Oracle Corporation
*
* This file is part of VirtualBox Open Source Edition (OSE), as
* available from http://www.virtualbox.org. This file is free software;
* General Public License (GPL) as published by the Free Software
* Foundation, in version 2 as it comes in the "COPYING" file of the
* VirtualBox OSE distribution. VirtualBox OSE is distributed in the
* hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
*/
#ifndef ____H_EXTPACKMANAGERIMPL
#define ____H_EXTPACKMANAGERIMPL
#include "VirtualBoxBase.h"
#include "ExtPackWrap.h"
#include "ExtPackFileWrap.h"
#include "ExtPackManagerWrap.h"
#if !defined(VBOX_COM_INPROC)
/**
* An extension pack file.
*/
{
* @{ */
void FinalRelease();
HRESULT initWithFile(const char *a_pszFile, const char *a_pszDigest, class ExtPackManager *a_pExtPackMgr, VirtualBox *a_pVirtualBox);
void uninit();
/** @} */
/** @name Misc init helpers
* @{ */
/** @} */
// wrapped IExtPackFile properties
// wrapped IExtPackFile methods
struct Data;
/** Pointer to the private instance. */
Data *m;
};
#endif
/**
* An installed extension pack.
*/
{
* @{ */
void FinalRelease();
void uninit();
/** @} */
/** @name Internal interfaces used by ExtPackManager.
* @{ */
bool i_callVmConfigureVmmHook(IConsole *a_pConsole, PVM a_pVM, AutoWriteLock *a_pLock, int *a_pvrc);
HRESULT i_checkVrde(void);
bool i_wantsToBeDefaultVrde(void) const;
/** @} */
/** @name Internal helper methods.
* @{ */
void i_probeAndLoad(void);
/** @} */
/** @name Extension Pack Helpers
* @{ */
static DECLCALLBACK(int) i_hlpFindModule(PCVBOXEXTPACKHLP pHlp, const char *pszName, const char *pszExt,
static DECLCALLBACK(int) i_hlpGetFilePath(PCVBOXEXTPACKHLP pHlp, const char *pszFilename, char *pszPath, size_t cbPath);
static DECLCALLBACK(int) i_hlpLoadHGCMService(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IConsole) *pConsole, const char *pszServiceLibrary, const char *pszServiceName);
static DECLCALLBACK(int) i_hlpLoadVDPlugin(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, const char *pszPluginLibrary);
static DECLCALLBACK(int) i_hlpUnloadVDPlugin(PCVBOXEXTPACKHLP pHlp, VBOXEXTPACK_IF_CS(IVirtualBox) *pVirtualBox, const char *pszPluginLibrary);
/** @} */
// wrapped IExtPack properties
// wrapped IExtPack methods
struct Data;
/** Pointer to the private instance. */
Data *m;
};
/**
* Extension pack manager.
*/
{
* @{ */
void FinalRelease();
void uninit();
/** @} */
/** @name Internal interfaces used by other Main classes.
* @{ */
#if !defined(VBOX_COM_INPROC)
HRESULT i_doInstall(ExtPackFile *a_pExtPackFile, bool a_fReplace, Utf8Str const *a_pstrDisplayInfo);
HRESULT i_doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo);
#endif
void i_callAllVirtualBoxReadyHooks(void);
HRESULT i_getLibraryPathForExtPack(const char *a_pszModuleName, Utf8Str const *a_pstrExtPack, Utf8Str *a_pstrLibrary);
bool i_isExtPackUsable(const char *a_pszExtPack);
void i_dumpAllToReleaseLog(void);
/** @} */
// wrapped IExtPackManager properties
// wrapped IExtPackManager methods
void i_removeExtPack(const char *a_pszName);
struct Data;
/** Pointer to the private instance. */
Data *m;
};
#endif
/* vi: set tabstop=4 shiftwidth=4 expandtab: */