Changeset 52082 in vbox for trunk/src/VBox/Main/include
- Timestamp:
- Jul 17, 2014 5:18:56 PM (11 years ago)
- svn:sync-xref-src-repo-rev:
- 95088
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/include/GuestImpl.h
r51476 r52082 18 18 #define ____H_GUESTIMPL 19 19 20 #include "GuestWrap.h" 20 21 #include "VirtualBoxBase.h" 21 22 #include <iprt/list.h> … … 50 51 51 52 class ATL_NO_VTABLE Guest : 52 public VirtualBoxBase, 53 VBOX_SCRIPTABLE_IMPL(IGuest) 53 public GuestWrap 54 54 { 55 55 public: 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()65 56 66 57 DECLARE_EMPTY_CTOR_DTOR (Guest) 67 58 68 HRESULT FinalConstruct( void);69 void FinalRelease( void);59 HRESULT FinalConstruct(); 60 void FinalRelease(); 70 61 71 62 // Public initializer/uninitializer for internal purposes only. 72 HRESULT init 63 HRESULT init(Console *aParent); 73 64 void uninit(); 74 65 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 stuff98 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);102 66 103 67 public: … … 106 70 #ifdef VBOX_WITH_GUEST_CONTROL 107 71 /** 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); 110 74 #endif 111 75 /** @} */ … … 114 78 /** @name Public internal methods. 115 79 * @{ */ 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) 129 94 { 130 95 return setErrorInternal(aResultCode, getStaticClassIID(), getStaticComponentName(), aText, false, true); 131 96 } 132 97 #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 138 105 #endif 139 106 /** @} */ 140 107 141 108 private: 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 142 162 /** @name Private internal methods. 143 163 * @{ */ 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 147 168 /** @} */ 148 169 … … 160 181 { } 161 182 162 BstrmOSTypeId;183 Utf8Str mOSTypeId; 163 184 FacilityMap mFacilityMap; 164 185 AdditionsRunLevelType_T mAdditionsRunLevel; 165 186 uint32_t mAdditionsVersionFull; 166 BstrmAdditionsVersionNew;187 Utf8Str mAdditionsVersionNew; 167 188 uint32_t mAdditionsRevision; 168 189 uint32_t mAdditionsFeatures; 169 BstrmInterfaceVersion;190 Utf8Str mInterfaceVersion; 170 191 GuestSessions mGuestSessions; 171 192 uint32_t mNextSessionID;
Note:
See TracChangeset
for help on using the changeset viewer.