VirtualBox

Changeset 52082 in vbox for trunk/src/VBox/Main/include


Ignore:
Timestamp:
Jul 17, 2014 5:18:56 PM (11 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
95088
Message:

6813 - DisplayImpl using COM Wrappers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/GuestImpl.h

    r51476 r52082  
    1818#define ____H_GUESTIMPL
    1919
     20#include "GuestWrap.h"
    2021#include "VirtualBoxBase.h"
    2122#include <iprt/list.h>
     
    5051
    5152class ATL_NO_VTABLE Guest :
    52     public VirtualBoxBase,
    53     VBOX_SCRIPTABLE_IMPL(IGuest)
     53    public GuestWrap
    5454{
    5555public:
    56     VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(Guest, IGuest)
    57 
    58     DECLARE_NOT_AGGREGATABLE(Guest)
    59 
    60     DECLARE_PROTECT_FINAL_CONSTRUCT()
    61 
    62     BEGIN_COM_MAP(Guest)
    63         VBOX_DEFAULT_INTERFACE_ENTRIES(IGuest)
    64     END_COM_MAP()
    6556
    6657    DECLARE_EMPTY_CTOR_DTOR (Guest)
    6758
    68     HRESULT FinalConstruct(void);
    69     void FinalRelease(void);
     59    HRESULT FinalConstruct();
     60    void FinalRelease();
    7061
    7162    // Public initializer/uninitializer for internal purposes only.
    72     HRESULT init (Console *aParent);
     63    HRESULT init(Console *aParent);
    7364    void uninit();
    7465
    75     // IGuest properties.
    76     STDMETHOD(COMGETTER(OSTypeId))(BSTR *aOSTypeId);
    77     STDMETHOD(COMGETTER(AdditionsRunLevel))(AdditionsRunLevelType_T *aRunLevel);
    78     STDMETHOD(COMGETTER(AdditionsVersion))(BSTR *a_pbstrAdditionsVersion);
    79     STDMETHOD(COMGETTER(AdditionsRevision))(ULONG *a_puAdditionsRevision);
    80     STDMETHOD(COMGETTER(DnDSource))(IGuestDnDSource ** aSource);
    81     STDMETHOD(COMGETTER(DnDTarget))(IGuestDnDTarget ** aTarget);
    82     STDMETHOD(COMGETTER(EventSource))(IEventSource ** aEventSource);
    83     STDMETHOD(COMGETTER(Facilities))(ComSafeArrayOut(IAdditionsFacility *, aFacilities));
    84     STDMETHOD(COMGETTER(Sessions))(ComSafeArrayOut(IGuestSession *, aSessions));
    85     STDMETHOD(COMGETTER(MemoryBalloonSize)) (ULONG *aMemoryBalloonSize);
    86     STDMETHOD(COMSETTER(MemoryBalloonSize)) (ULONG aMemoryBalloonSize);
    87     STDMETHOD(COMGETTER(StatisticsUpdateInterval)) (ULONG *aUpdateInterval);
    88     STDMETHOD(COMSETTER(StatisticsUpdateInterval)) (ULONG aUpdateInterval);
    89     // IGuest methods.
    90     STDMETHOD(GetFacilityStatus)(AdditionsFacilityType_T aType, LONG64 *aTimestamp, AdditionsFacilityStatus_T *aStatus);
    91     STDMETHOD(GetAdditionsStatus)(AdditionsRunLevelType_T aLevel, BOOL *aActive);
    92     STDMETHOD(SetCredentials)(IN_BSTR aUsername, IN_BSTR aPassword,
    93                               IN_BSTR aDomain, BOOL aAllowInteractiveLogon);
    94     // Guest control.
    95     STDMETHOD(CreateSession)(IN_BSTR aUser, IN_BSTR aPassword, IN_BSTR aDomain, IN_BSTR aSessionName, IGuestSession **aGuestSession);
    96     STDMETHOD(FindSession)(IN_BSTR aSessionName, ComSafeArrayOut(IGuestSession *, aSessions));
    97     // Misc stuff
    98     STDMETHOD(InternalGetStatistics)(ULONG *aCpuUser, ULONG *aCpuKernel, ULONG *aCpuIdle,
    99                                      ULONG *aMemTotal, ULONG *aMemFree, ULONG *aMemBalloon, ULONG *aMemShared, ULONG *aMemCache,
    100                                      ULONG *aPageTotal, ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, ULONG *aMemBalloonTotal, ULONG *aMemSharedTotal);
    101     STDMETHOD(UpdateGuestAdditions)(IN_BSTR aSource, ComSafeArrayIn(IN_BSTR, aArguments), ComSafeArrayIn(AdditionsUpdateFlag_T, aFlags), IProgress **aProgress);
    10266
    10367public:
     
    10670#ifdef VBOX_WITH_GUEST_CONTROL
    10771    /** Static callback for handling guest control notifications. */
    108     static DECLCALLBACK(int) notifyCtrlDispatcher(void *pvExtension, uint32_t u32Function, void *pvData, uint32_t cbData);
    109     static DECLCALLBACK(void) staticUpdateStats(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick);
     72    static DECLCALLBACK(int) i_notifyCtrlDispatcher(void *pvExtension, uint32_t u32Function, void *pvData, uint32_t cbData);
     73    static DECLCALLBACK(void) i_staticUpdateStats(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick);
    11074#endif
    11175    /** @}  */
     
    11478    /** @name Public internal methods.
    11579     * @{ */
    116     void enableVMMStatistics(BOOL aEnable) { mCollectVMMStats = aEnable; };
    117     void setAdditionsInfo(Bstr aInterfaceVersion, VBOXOSTYPE aOsType);
    118     void setAdditionsInfo2(uint32_t a_uFullVersion, const char *a_pszName, uint32_t a_uRevision, uint32_t a_fFeatures);
    119     bool facilityIsActive(VBoxGuestFacilityType enmFacility);
    120     void facilityUpdate(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus, uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS);
    121     ComObjPtr<Console> getConsole(void) { return mParent; }
    122     void setAdditionsStatus(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus, uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS);
    123     void onUserStateChange(Bstr aUser, Bstr aDomain, VBoxGuestUserState enmState, const uint8_t *puDetails, uint32_t cbDetails);
    124     void setSupportedFeatures(uint32_t aCaps);
    125     HRESULT setStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal);
    126     BOOL isPageFusionEnabled();
    127     static HRESULT setErrorStatic(HRESULT aResultCode,
    128                                   const Utf8Str &aText)
     80    void i_enableVMMStatistics(BOOL aEnable) { mCollectVMMStats = aEnable; };
     81    void i_setAdditionsInfo(com::Utf8Str aInterfaceVersion, VBOXOSTYPE aOsType);
     82    void i_setAdditionsInfo2(uint32_t a_uFullVersion, const char *a_pszName, uint32_t a_uRevision, uint32_t a_fFeatures);
     83    bool i_facilityIsActive(VBoxGuestFacilityType enmFacility);
     84    void i_facilityUpdate(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus,
     85                          uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS);
     86    ComObjPtr<Console> i_getConsole(void) { return mParent; }
     87    void i_setAdditionsStatus(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus,
     88                              uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS);
     89    void i_onUserStateChange(Bstr aUser, Bstr aDomain, VBoxGuestUserState enmState, const uint8_t *puDetails, uint32_t cbDetails);
     90    void i_setSupportedFeatures(uint32_t aCaps);
     91    HRESULT i_setStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal);
     92    BOOL i_isPageFusionEnabled();
     93    static HRESULT i_setErrorStatic(HRESULT aResultCode, const Utf8Str &aText)
    12994    {
    13095        return setErrorInternal(aResultCode, getStaticClassIID(), getStaticComponentName(), aText, false, true);
    13196    }
    13297#ifdef VBOX_WITH_GUEST_CONTROL
    133     int         dispatchToSession(PVBOXGUESTCTRLHOSTCBCTX pCtxCb, PVBOXGUESTCTRLHOSTCALLBACK pSvcCb);
    134     uint32_t    getAdditionsVersion(void) { return mData.mAdditionsVersionFull; }
    135     int         sessionRemove(GuestSession *pSession);
    136     int         sessionCreate(const GuestSessionStartupInfo &ssInfo, const GuestCredentials &guestCreds, ComObjPtr<GuestSession> &pGuestSession);
    137     inline bool sessionExists(uint32_t uSessionID);
     98    int         i_dispatchToSession(PVBOXGUESTCTRLHOSTCBCTX pCtxCb, PVBOXGUESTCTRLHOSTCALLBACK pSvcCb);
     99    uint32_t    i_getAdditionsVersion(void) { return mData.mAdditionsVersionFull; }
     100    int         i_sessionRemove(GuestSession *pSession);
     101    int         i_sessionCreate(const GuestSessionStartupInfo &ssInfo, const GuestCredentials &guestCreds,
     102                                ComObjPtr<GuestSession> &pGuestSession);
     103    inline bool i_sessionExists(uint32_t uSessionID);
     104
    138105#endif
    139106    /** @}  */
    140107
    141108private:
     109
     110     // wrapped IGuest properties
     111     HRESULT getOSTypeId(com::Utf8Str &aOSTypeId);
     112     HRESULT getAdditionsRunLevel(AdditionsRunLevelType_T *aAdditionsRunLevel);
     113     HRESULT getAdditionsVersion(com::Utf8Str &aAdditionsVersion);
     114     HRESULT getAdditionsRevision(ULONG *aAdditionsRevision);
     115     HRESULT getDnDSource(ComPtr<IGuestDnDSource> &aDnDSource);
     116     HRESULT getDnDTarget(ComPtr<IGuestDnDTarget> &aDnDTarget);
     117     HRESULT getEventSource(ComPtr<IEventSource> &aEventSource);
     118     HRESULT getFacilities(std::vector<ComPtr<IAdditionsFacility> > &aFacilities);
     119     HRESULT getSessions(std::vector<ComPtr<IGuestSession> > &aSessions);
     120     HRESULT getMemoryBalloonSize(ULONG *aMemoryBalloonSize);
     121     HRESULT setMemoryBalloonSize(ULONG aMemoryBalloonSize);
     122     HRESULT getStatisticsUpdateInterval(ULONG *aStatisticsUpdateInterval);
     123     HRESULT setStatisticsUpdateInterval(ULONG aStatisticsUpdateInterval);
     124     HRESULT internalGetStatistics(ULONG *aCpuUser,
     125                                   ULONG *aCpuKernel,
     126                                   ULONG *aCpuIdle,
     127                                   ULONG *aMemTotal,
     128                                   ULONG *aMemFree,
     129                                   ULONG *aMemBalloon,
     130                                   ULONG *aMemShared,
     131                                   ULONG *aMemCache,
     132                                   ULONG *aPagedTotal,
     133                                   ULONG *aMemAllocTotal,
     134                                   ULONG *aMemFreeTotal,
     135                                   ULONG *aMemBalloonTotal,
     136                                   ULONG *aMemSharedTotal);
     137     HRESULT getFacilityStatus(AdditionsFacilityType_T aFacility,
     138                               LONG64 *aTimestamp,
     139                               AdditionsFacilityStatus_T *aStatus);
     140     HRESULT getAdditionsStatus(AdditionsRunLevelType_T aLevel,
     141                                BOOL *aActive);
     142     HRESULT setCredentials(const com::Utf8Str &aUserName,
     143                            const com::Utf8Str &aPassword,
     144                            const com::Utf8Str &aDomain,
     145                            BOOL aAllowInteractiveLogon);
     146
     147     // wrapped IGuest methods
     148     HRESULT createSession(const com::Utf8Str &aUser,
     149                           const com::Utf8Str &aPassword,
     150                           const com::Utf8Str &aDomain,
     151                           const com::Utf8Str &aSessionName,
     152                           ComPtr<IGuestSession> &aGuestSession);
     153
     154     HRESULT findSession(const com::Utf8Str &aSessionName,
     155                         std::vector<ComPtr<IGuestSession> > &aSessions);
     156     HRESULT updateGuestAdditions(const com::Utf8Str &aSource,
     157                                  const std::vector<com::Utf8Str> &aArguments,
     158                                  const std::vector<AdditionsUpdateFlag_T> &aFlags,
     159                                  ComPtr<IProgress> &aProgress);
     160
     161
    142162    /** @name Private internal methods.
    143163     * @{ */
    144     void updateStats(uint64_t iTick);
    145     static int staticEnumStatsCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,
    146                                        STAMVISIBILITY enmVisiblity, const char *pszDesc, void *pvUser);
     164    void i_updateStats(uint64_t iTick);
     165    static int i_staticEnumStatsCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,
     166                                         STAMVISIBILITY enmVisiblity, const char *pszDesc, void *pvUser);
     167
    147168    /** @}  */
    148169
     
    160181        { }
    161182
    162         Bstr                        mOSTypeId;
     183        Utf8Str                     mOSTypeId;
    163184        FacilityMap                 mFacilityMap;
    164185        AdditionsRunLevelType_T     mAdditionsRunLevel;
    165186        uint32_t                    mAdditionsVersionFull;
    166         Bstr                        mAdditionsVersionNew;
     187        Utf8Str                     mAdditionsVersionNew;
    167188        uint32_t                    mAdditionsRevision;
    168189        uint32_t                    mAdditionsFeatures;
    169         Bstr                        mInterfaceVersion;
     190        Utf8Str                     mInterfaceVersion;
    170191        GuestSessions               mGuestSessions;
    171192        uint32_t                    mNextSessionID;
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette