Changeset 52082 in vbox
- Timestamp:
- Jul 17, 2014 5:18:56 PM (10 years ago)
- Location:
- trunk/src/VBox/Main
- Files:
-
- 10 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; -
trunk/src/VBox/Main/src-client/ConsoleImpl.cpp
r52064 r52082 3260 3260 ComObjPtr<IProgress> iProgress; 3261 3261 MachineState_T machineState = MachineState_Null; 3262 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3262 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), 3263 FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3263 3264 if (FAILED(rc)) return rc; 3264 3265 iProgress.queryInterfaceTo(aProgress.asOutParam()); … … 3280 3281 ComObjPtr<IProgress> iProgress; 3281 3282 MachineState_T machineState = MachineState_Null; 3282 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), TRUE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3283 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aId.toString()).raw(), Bstr(aId.toString()).raw(), 3284 TRUE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3283 3285 if (FAILED(rc)) return rc; 3284 3286 iProgress.queryInterfaceTo(aProgress.asOutParam()); … … 3299 3301 ComObjPtr<IProgress> iProgress; 3300 3302 MachineState_T machineState = MachineState_Null; 3301 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aStartId.toString()).raw(), Bstr(aEndId.toString()).raw(), FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3303 HRESULT rc = mControl->DeleteSnapshot((IConsole *)this, Bstr(aStartId.toString()).raw(), Bstr(aEndId.toString()).raw(), 3304 FALSE /* fDeleteAllChildren */, &machineState, iProgress.asOutParam()); 3302 3305 if (FAILED(rc)) return rc; 3303 3306 iProgress.queryInterfaceTo(aProgress.asOutParam()); … … 5997 6000 { 5998 6001 if (mGuest) 5999 mGuest-> enableVMMStatistics(aEnable);6002 mGuest->i_enableVMMStatistics(aEnable); 6000 6003 } 6001 6004 -
trunk/src/VBox/Main/src-client/ConsoleImpl2.cpp
r52009 r52082 5674 5674 HGCMSVCEXTHANDLE hDummy; 5675 5675 rc = HGCMHostRegisterServiceExtension(&hDummy, "VBoxGuestControlSvc", 5676 &Guest:: notifyCtrlDispatcher,5676 &Guest::i_notifyCtrlDispatcher, 5677 5677 pConsole->i_getGuest()); 5678 5678 if (RT_FAILURE(rc)) -
trunk/src/VBox/Main/src-client/GuestCtrlImpl.cpp
r50727 r52082 5 5 6 6 /* 7 * Copyright (C) 2006-201 3Oracle Corporation7 * Copyright (C) 2006-2014 Oracle Corporation 8 8 * 9 9 * This file is part of VirtualBox Open Source Edition (OSE), as … … 64 64 */ 65 65 /* static */ 66 DECLCALLBACK(int) Guest:: notifyCtrlDispatcher(void *pvExtension,67 uint32_t u32Function,68 void *pvData,69 uint32_t cbData)66 DECLCALLBACK(int) Guest::i_notifyCtrlDispatcher(void *pvExtension, 67 uint32_t u32Function, 68 void *pvData, 69 uint32_t cbData) 70 70 { 71 71 using namespace guestControl; … … 107 107 108 108 VBOXGUESTCTRLHOSTCBCTX ctxCb = { u32Function, uContextID }; 109 rc = pGuest-> dispatchToSession(&ctxCb, pSvcCb);109 rc = pGuest->i_dispatchToSession(&ctxCb, pSvcCb); 110 110 111 111 LogFlowFunc(("Returning rc=%Rrc\n", rc)); … … 114 114 #endif /* VBOX_WITH_GUEST_CONTROL */ 115 115 116 STDMETHODIMP Guest::UpdateGuestAdditions(IN_BSTR aSource, ComSafeArrayIn(IN_BSTR, aArguments),117 ComSafeArrayIn(AdditionsUpdateFlag_T, aFlags), IProgress **aProgress)116 HRESULT Guest::updateGuestAdditions(const com::Utf8Str &aSource, const std::vector<com::Utf8Str> &aArguments, 117 const std::vector<AdditionsUpdateFlag_T> &aFlags, ComPtr<IProgress> &aProgress) 118 118 { 119 119 #ifndef VBOX_WITH_GUEST_CONTROL 120 120 ReturnComNotImplemented(); 121 121 #else /* VBOX_WITH_GUEST_CONTROL */ 122 CheckComArgStrNotEmptyOrNull(aSource);123 CheckComArgOutPointerValid(aProgress);124 125 AutoCaller autoCaller(this);126 if (FAILED(autoCaller.rc())) return autoCaller.rc();127 122 128 123 /* Validate flags. */ 129 124 uint32_t fFlags = AdditionsUpdateFlag_None; 130 if (aFlags) 131 { 132 com::SafeArray<AdditionsUpdateFlag_T> flags(ComSafeArrayInArg(aFlags)); 133 for (size_t i = 0; i < flags.size(); i++) 134 fFlags |= flags[i]; 135 } 136 137 if (fFlags) 138 { 139 if (!(fFlags & AdditionsUpdateFlag_WaitForUpdateStartOnly)) 140 return setError(E_INVALIDARG, tr("Unknown flags (%#x)"), aFlags); 141 } 125 if (aFlags.size()) 126 for (size_t i = 0; i < aFlags.size(); ++i) 127 fFlags |= aFlags[i]; 128 129 com::SafeArray<AdditionsUpdateFlag_T> aaFlags; 130 aaFlags.resize(aFlags.size()); 131 for (size_t i = 0; i < aFlags.size(); ++i) 132 aaFlags[i] = aFlags[i]; 133 134 if (fFlags && !(fFlags & AdditionsUpdateFlag_WaitForUpdateStartOnly)) 135 return setError(E_INVALIDARG, tr("Unknown flags (%#x)"), aaFlags); 142 136 143 137 int rc = VINF_SUCCESS; 144 138 145 139 ProcessArguments aArgs; 146 if (aArguments) 140 aArgs.resize(0); 141 142 if (aArguments.size()) 147 143 { 148 144 try 149 145 { 150 com::SafeArray<IN_BSTR> arguments(ComSafeArrayInArg(aArguments)); 151 for (size_t i = 0; i < arguments.size(); i++) 152 aArgs.push_back(Utf8Str(arguments[i])); 146 for (size_t i = 0; i < aArguments.size(); ++i) 147 aArgs.push_back(aArguments[i]); 153 148 } 154 149 catch(std::bad_alloc &) … … 172 167 ComObjPtr<GuestSession> pSession; 173 168 if (RT_SUCCESS(rc)) 174 rc = sessionCreate(startupInfo, guestCreds, pSession);169 rc = i_sessionCreate(startupInfo, guestCreds, pSession); 175 170 if (RT_FAILURE(rc)) 176 171 { … … 206 201 ComObjPtr<Progress> pProgress; 207 202 SessionTaskUpdateAdditions *pTask = new SessionTaskUpdateAdditions(pSession /* GuestSession */, 208 Utf8Str(aSource), aArgs, fFlags);203 aSource, aArgs, fFlags); 209 204 rc = pSession->i_startTaskAsync(tr("Updating Guest Additions"), pTask, pProgress); 210 205 if (RT_SUCCESS(rc)) 211 206 { 212 207 /* Return progress to the caller. */ 213 hr = pProgress.queryInterfaceTo(aProgress );208 hr = pProgress.queryInterfaceTo(aProgress.asOutParam()); 214 209 } 215 210 else … … 230 225 ///////////////////////////////////////////////////////////////////////////// 231 226 232 int Guest:: dispatchToSession(PVBOXGUESTCTRLHOSTCBCTX pCtxCb, PVBOXGUESTCTRLHOSTCALLBACK pSvcCb)227 int Guest::i_dispatchToSession(PVBOXGUESTCTRLHOSTCBCTX pCtxCb, PVBOXGUESTCTRLHOSTCALLBACK pSvcCb) 233 228 { 234 229 LogFlowFunc(("pCtxCb=%p, pSvcCb=%p\n", pCtxCb, pSvcCb)); … … 345 340 } 346 341 347 int Guest:: sessionRemove(GuestSession *pSession)342 int Guest::i_sessionRemove(GuestSession *pSession) 348 343 { 349 344 AssertPtrReturn(pSession, VERR_INVALID_POINTER); … … 393 388 } 394 389 395 int Guest:: sessionCreate(const GuestSessionStartupInfo &ssInfo,396 const GuestCredentials &guestCreds, ComObjPtr<GuestSession> &pGuestSession)390 int Guest::i_sessionCreate(const GuestSessionStartupInfo &ssInfo, 391 const GuestCredentials &guestCreds, ComObjPtr<GuestSession> &pGuestSession) 397 392 { 398 393 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 411 406 { 412 407 /* Is the context ID already used? */ 413 if (! sessionExists(uNewSessionID))408 if (!i_sessionExists(uNewSessionID)) 414 409 { 415 410 rc = VINF_SUCCESS; … … 474 469 } 475 470 476 inline bool Guest:: sessionExists(uint32_t uSessionID)471 inline bool Guest::i_sessionExists(uint32_t uSessionID) 477 472 { 478 473 GuestSessions::const_iterator itSessions = mData.mGuestSessions.find(uSessionID); … … 482 477 // implementation of public methods 483 478 ///////////////////////////////////////////////////////////////////////////// 484 485 STDMETHODIMP Guest::CreateSession(IN_BSTR aUser, IN_BSTR aPassword, IN_BSTR aDomain, 486 IN_BSTR aSessionName, IGuestSession **aGuestSession) 479 HRESULT Guest::createSession(const com::Utf8Str &aUser, const com::Utf8Str &aPassword, const com::Utf8Str &aDomain, 480 const com::Utf8Str &aSessionName, ComPtr<IGuestSession> &aGuestSession) 481 487 482 { 488 483 #ifndef VBOX_WITH_GUEST_CONTROL … … 493 488 494 489 /* Do not allow anonymous sessions (with system rights) with public API. */ 495 if (RT_UNLIKELY( (aUser) == NULL || *(aUser) == '\0'))490 if (RT_UNLIKELY(!aUser.length())) 496 491 return setError(E_INVALIDARG, tr("No user name specified")); 497 if (RT_UNLIKELY((aPassword) == NULL)) /* Allow empty passwords. */498 return setError(E_INVALIDARG, tr("No password specified"));499 CheckComArgOutPointerValid(aGuestSession);500 /* Rest is optional. */501 502 AutoCaller autoCaller(this);503 if (FAILED(autoCaller.rc())) return autoCaller.rc();504 492 505 493 GuestSessionStartupInfo startupInfo; … … 512 500 513 501 ComObjPtr<GuestSession> pSession; 514 int rc = sessionCreate(startupInfo, guestCreds, pSession);502 int rc = i_sessionCreate(startupInfo, guestCreds, pSession); 515 503 if (RT_SUCCESS(rc)) 516 504 { 517 505 /* Return guest session to the caller. */ 518 HRESULT hr2 = pSession.queryInterfaceTo(aGuestSession );506 HRESULT hr2 = pSession.queryInterfaceTo(aGuestSession.asOutParam()); 519 507 if (FAILED(hr2)) 520 508 rc = VERR_COM_OBJECT_NOT_FOUND; … … 522 510 523 511 if (RT_SUCCESS(rc)) 524 {525 512 /* Start (fork) the session asynchronously 526 513 * on the guest. */ 527 514 rc = pSession->i_startSessionAsync(); 528 }529 515 530 516 HRESULT hr = S_OK; … … 552 538 } 553 539 554 STDMETHODIMP Guest::FindSession(IN_BSTR aSessionName, ComSafeArrayOut(IGuestSession *, aSessions))540 HRESULT Guest::findSession(const com::Utf8Str &aSessionName, std::vector<ComPtr<IGuestSession> > &aSessions) 555 541 { 556 542 #ifndef VBOX_WITH_GUEST_CONTROL … … 558 544 #else /* VBOX_WITH_GUEST_CONTROL */ 559 545 560 CheckComArgOutSafeArrayPointerValid(aSessions);561 562 546 LogFlowFuncEnter(); 563 547 … … 575 559 } 576 560 577 LogFlowFunc(("Sessions with \"% ls\" = %RU32\n",578 aSessionName , listSessions.size()));561 LogFlowFunc(("Sessions with \"%s\" = %RU32\n", 562 aSessionName.c_str(), listSessions.size())); 579 563 580 564 if (listSessions.size()) 581 565 { 582 SafeIfaceArray<IGuestSession> sessionIfacs(listSessions); 583 sessionIfacs.detachTo(ComSafeArrayOutArg(aSessions)); 566 aSessions.resize(listSessions.size()); 567 size_t i = 0; 568 for (std::list < ComObjPtr<GuestSession> >::const_iterator it = listSessions.begin(); it != listSessions.end(); ++it, ++i) 569 (*it).queryInterfaceTo(aSessions[i].asOutParam()); 584 570 585 571 return S_OK; 572 586 573 } 587 574 588 575 return setErrorNoLog(VBOX_E_OBJECT_NOT_FOUND, 589 tr("Could not find sessions with name '% ls'"),590 aSessionName );576 tr("Could not find sessions with name '%s'"), 577 aSessionName.c_str()); 591 578 #endif /* VBOX_WITH_GUEST_CONTROL */ 592 579 } -
trunk/src/VBox/Main/src-client/GuestDnDPrivate.cpp
r52064 r52082 470 470 /* For multi-monitor support we need to add shift values to the coordinates 471 471 * (depending on the screen number). */ 472 ComObjPtr<Console> pConsole = m_pGuest-> getConsole();472 ComObjPtr<Console> pConsole = m_pGuest->i_getConsole(); 473 473 ComPtr<IDisplay> pDisplay; 474 474 HRESULT hr = pConsole->COMGETTER(Display)(pDisplay.asOutParam()); … … 498 498 { 499 499 Assert(!m_pGuest.isNull()); 500 ComObjPtr<Console> pConsole = m_pGuest-> getConsole();500 ComObjPtr<Console> pConsole = m_pGuest->i_getConsole(); 501 501 502 502 /* Forward the information to the VMM device. */ -
trunk/src/VBox/Main/src-client/GuestImpl.cpp
r51612 r52082 106 106 mMagic = GUEST_MAGIC; 107 107 int vrc = RTTimerLRCreate(&mStatTimer, 1000 /* ms */, 108 &Guest:: staticUpdateStats, this);108 &Guest::i_staticUpdateStats, this); 109 109 AssertMsgRC(vrc, ("Failed to create guest statistics update timer (%Rrc)\n", vrc)); 110 110 … … 194 194 195 195 /* static */ 196 DECLCALLBACK(void) Guest:: staticUpdateStats(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick)196 DECLCALLBACK(void) Guest::i_staticUpdateStats(RTTIMERLR hTimerLR, void *pvUser, uint64_t iTick) 197 197 { 198 198 AssertReturnVoid(pvUser != NULL); … … 200 200 Assert(guest->mMagic == GUEST_MAGIC); 201 201 if (guest->mMagic == GUEST_MAGIC) 202 guest-> updateStats(iTick);202 guest->i_updateStats(iTick); 203 203 204 204 NOREF(hTimerLR); … … 206 206 207 207 /* static */ 208 int Guest:: staticEnumStatsCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit,209 STAMVISIBILITY enmVisiblity, const char *pszDesc, void *pvUser)208 int Guest::i_staticEnumStatsCallback(const char *pszName, STAMTYPE enmType, void *pvSample, STAMUNIT enmUnit, 209 STAMVISIBILITY enmVisiblity, const char *pszDesc, void *pvUser) 210 210 { 211 211 AssertLogRelMsgReturn(enmType == STAMTYPE_COUNTER, ("Unexpected sample type %d ('%s')\n", enmType, pszName), VINF_SUCCESS); … … 255 255 } 256 256 257 void Guest:: updateStats(uint64_t iTick)257 void Guest::i_updateStats(uint64_t iTick) 258 258 { 259 259 uint64_t cbFreeTotal = 0; … … 313 313 uint64_t uTxPrev = mNetStatTx; 314 314 mNetStatRx = mNetStatTx = 0; 315 rc = STAMR3Enum(ptrVM.rawUVM(), "/Public/Net/*/Bytes*", staticEnumStatsCallback, this);315 rc = STAMR3Enum(ptrVM.rawUVM(), "/Public/Net/*/Bytes*", i_staticEnumStatsCallback, this); 316 316 AssertRC(rc); 317 317 … … 359 359 ///////////////////////////////////////////////////////////////////////////// 360 360 361 STDMETHODIMP Guest::COMGETTER(OSTypeId)(BSTR *a_pbstrOSTypeId) 362 { 363 CheckComArgOutPointerValid(a_pbstrOSTypeId); 364 365 AutoCaller autoCaller(this); 366 HRESULT hrc = autoCaller.rc(); 367 if (SUCCEEDED(hrc)) 368 { 369 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 370 if (!mData.mInterfaceVersion.isEmpty()) 371 mData.mOSTypeId.cloneTo(a_pbstrOSTypeId); 361 HRESULT Guest::getOSTypeId(com::Utf8Str &aOSTypeId) 362 { 363 HRESULT hrc = S_OK; 364 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 365 if (!mData.mInterfaceVersion.isEmpty()) 366 aOSTypeId = mData.mOSTypeId; 367 else 368 { 369 /* Redirect the call to IMachine if no additions are installed. */ 370 ComPtr<IMachine> ptrMachine(mParent->i_machine()); 371 alock.release(); 372 BSTR bstr; 373 hrc = ptrMachine->COMGETTER(OSTypeId)(&bstr); 374 aOSTypeId = bstr; 375 } 376 return hrc; 377 } 378 379 HRESULT Guest::getAdditionsRunLevel(AdditionsRunLevelType_T *aAdditionsRunLevel) 380 { 381 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 382 383 *aAdditionsRunLevel = mData.mAdditionsRunLevel; 384 385 return S_OK; 386 } 387 388 HRESULT Guest::getAdditionsVersion(com::Utf8Str &aAdditionsVersion) 389 { 390 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 391 HRESULT hrc = S_OK; 392 393 /* 394 * Return the ReportGuestInfo2 version info if available. 395 */ 396 if ( !mData.mAdditionsVersionNew.isEmpty() 397 || mData.mAdditionsRunLevel <= AdditionsRunLevelType_None) 398 aAdditionsVersion = mData.mAdditionsVersionNew; 399 else 400 { 401 /* 402 * If we're running older guest additions (< 3.2.0) try get it from 403 * the guest properties. Detected switched around Version and 404 * Revision in early 3.1.x releases (see r57115). 405 */ 406 ComPtr<IMachine> ptrMachine = mParent->i_machine(); 407 alock.release(); /* No need to hold this during the IPC fun. */ 408 409 Bstr bstr; 410 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Version").raw(), bstr.asOutParam()); 411 if ( SUCCEEDED(hrc) 412 && !bstr.isEmpty()) 413 { 414 Utf8Str str(bstr); 415 if (str.count('.') == 0) 416 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Revision").raw(), bstr.asOutParam()); 417 str = bstr; 418 if (str.count('.') != 2) 419 hrc = E_FAIL; 420 } 421 422 if (SUCCEEDED(hrc)) 423 aAdditionsVersion = bstr; 372 424 else 373 425 { 374 /* Re direct the call to IMachine if no additions are installed. */375 ComPtr<IMachine> ptrMachine(mParent->i_machine());376 a lock.release();377 hrc = ptrMachine->COMGETTER(OSTypeId)(a_pbstrOSTypeId);426 /* Returning 1.4 is better than nothing. */ 427 alock.acquire(); 428 aAdditionsVersion = mData.mInterfaceVersion; 429 hrc = S_OK; 378 430 } 379 431 } … … 381 433 } 382 434 383 STDMETHODIMP Guest::COMGETTER(AdditionsRunLevel)(AdditionsRunLevelType_T *aRunLevel) 384 { 385 AutoCaller autoCaller(this); 386 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 387 388 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 389 390 *aRunLevel = mData.mAdditionsRunLevel; 391 392 return S_OK; 393 } 394 395 STDMETHODIMP Guest::COMGETTER(AdditionsVersion)(BSTR *a_pbstrAdditionsVersion) 396 { 397 CheckComArgOutPointerValid(a_pbstrAdditionsVersion); 398 399 AutoCaller autoCaller(this); 400 HRESULT hrc = autoCaller.rc(); 401 if (SUCCEEDED(hrc)) 402 { 403 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 404 435 HRESULT Guest::getAdditionsRevision(ULONG *aAdditionsRevision) 436 { 437 HRESULT hrc = S_OK; 438 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 439 440 /* 441 * Return the ReportGuestInfo2 version info if available. 442 */ 443 if ( !mData.mAdditionsVersionNew.isEmpty() 444 || mData.mAdditionsRunLevel <= AdditionsRunLevelType_None) 445 *aAdditionsRevision = mData.mAdditionsRevision; 446 else 447 { 405 448 /* 406 * Return the ReportGuestInfo2 version info if available. 449 * If we're running older guest additions (< 3.2.0) try get it from 450 * the guest properties. Detected switched around Version and 451 * Revision in early 3.1.x releases (see r57115). 407 452 */ 408 if ( !mData.mAdditionsVersionNew.isEmpty() 409 || mData.mAdditionsRunLevel <= AdditionsRunLevelType_None) 410 mData.mAdditionsVersionNew.cloneTo(a_pbstrAdditionsVersion); 411 else 412 { 413 /* 414 * If we're running older guest additions (< 3.2.0) try get it from 415 * the guest properties. Detected switched around Version and 416 * Revision in early 3.1.x releases (see r57115). 417 */ 418 ComPtr<IMachine> ptrMachine = mParent->i_machine(); 419 alock.release(); /* No need to hold this during the IPC fun. */ 420 421 Bstr bstr; 422 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Version").raw(), bstr.asOutParam()); 423 if ( SUCCEEDED(hrc) 424 && !bstr.isEmpty()) 453 ComPtr<IMachine> ptrMachine = mParent->i_machine(); 454 alock.release(); /* No need to hold this during the IPC fun. */ 455 456 Bstr bstr; 457 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Revision").raw(), bstr.asOutParam()); 458 if (SUCCEEDED(hrc)) 459 { 460 Utf8Str str(bstr); 461 uint32_t uRevision; 462 int vrc = RTStrToUInt32Full(str.c_str(), 0, &uRevision); 463 if (vrc != VINF_SUCCESS && str.count('.') == 2) 425 464 { 426 Utf8Str str(bstr);427 if ( str.count('.') == 0)428 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Revision").raw(), bstr.asOutParam());429 str = bstr;430 if (str.count('.') != 2)431 hrc = E_FAIL;465 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Version").raw(), bstr.asOutParam()); 466 if (SUCCEEDED(hrc)) 467 { 468 str = bstr; 469 vrc = RTStrToUInt32Full(str.c_str(), 0, &uRevision); 470 } 432 471 } 433 434 if (SUCCEEDED(hrc)) 435 bstr.detachTo(a_pbstrAdditionsVersion); 472 if (vrc == VINF_SUCCESS) 473 *aAdditionsRevision = uRevision; 436 474 else 437 { 438 /* Returning 1.4 is better than nothing. */ 439 alock.acquire(); 440 mData.mInterfaceVersion.cloneTo(a_pbstrAdditionsVersion); 441 hrc = S_OK; 442 } 475 hrc = VBOX_E_IPRT_ERROR; 476 } 477 if (FAILED(hrc)) 478 { 479 /* Return 0 if we don't know. */ 480 *aAdditionsRevision = 0; 481 hrc = S_OK; 443 482 } 444 483 } … … 446 485 } 447 486 448 STDMETHODIMP Guest::COMGETTER(AdditionsRevision)(ULONG *a_puAdditionsRevision) 449 { 450 CheckComArgOutPointerValid(a_puAdditionsRevision); 451 452 AutoCaller autoCaller(this); 453 HRESULT hrc = autoCaller.rc(); 454 if (SUCCEEDED(hrc)) 455 { 456 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 457 458 /* 459 * Return the ReportGuestInfo2 version info if available. 460 */ 461 if ( !mData.mAdditionsVersionNew.isEmpty() 462 || mData.mAdditionsRunLevel <= AdditionsRunLevelType_None) 463 *a_puAdditionsRevision = mData.mAdditionsRevision; 464 else 465 { 466 /* 467 * If we're running older guest additions (< 3.2.0) try get it from 468 * the guest properties. Detected switched around Version and 469 * Revision in early 3.1.x releases (see r57115). 470 */ 471 ComPtr<IMachine> ptrMachine = mParent->i_machine(); 472 alock.release(); /* No need to hold this during the IPC fun. */ 473 474 Bstr bstr; 475 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Revision").raw(), bstr.asOutParam()); 476 if (SUCCEEDED(hrc)) 477 { 478 Utf8Str str(bstr); 479 uint32_t uRevision; 480 int vrc = RTStrToUInt32Full(str.c_str(), 0, &uRevision); 481 if (vrc != VINF_SUCCESS && str.count('.') == 2) 482 { 483 hrc = ptrMachine->GetGuestPropertyValue(Bstr("/VirtualBox/GuestAdd/Version").raw(), bstr.asOutParam()); 484 if (SUCCEEDED(hrc)) 485 { 486 str = bstr; 487 vrc = RTStrToUInt32Full(str.c_str(), 0, &uRevision); 488 } 489 } 490 if (vrc == VINF_SUCCESS) 491 *a_puAdditionsRevision = uRevision; 492 else 493 hrc = VBOX_E_IPRT_ERROR; 494 } 495 if (FAILED(hrc)) 496 { 497 /* Return 0 if we don't know. */ 498 *a_puAdditionsRevision = 0; 499 hrc = S_OK; 500 } 501 } 502 } 503 return hrc; 504 } 505 506 STDMETHODIMP Guest::COMGETTER(DnDSource)(IGuestDnDSource ** aSource) 487 HRESULT Guest::getDnDSource(ComPtr<IGuestDnDSource> &aDnDSource) 507 488 { 508 489 #ifndef VBOX_WITH_DRAG_AND_DROP … … 511 492 LogFlowThisFuncEnter(); 512 493 513 CheckComArgOutPointerValid(aSource);514 515 AutoCaller autoCaller(this);516 if (FAILED(autoCaller.rc())) return autoCaller.rc();517 518 494 /* No need to lock - lifetime constant. */ 519 HRESULT hr = mDnDSource.queryInterfaceTo(a Source);495 HRESULT hr = mDnDSource.queryInterfaceTo(aDnDSource.asOutParam()); 520 496 521 497 LogFlowFuncLeaveRC(hr); … … 524 500 } 525 501 526 STDMETHODIMP Guest::COMGETTER(DnDTarget)(IGuestDnDTarget ** aTarget)502 HRESULT Guest::getDnDTarget(ComPtr<IGuestDnDTarget> &aDnDTarget) 527 503 { 528 504 #ifndef VBOX_WITH_DRAG_AND_DROP … … 531 507 LogFlowThisFuncEnter(); 532 508 533 CheckComArgOutPointerValid(aTarget);534 535 AutoCaller autoCaller(this);536 if (FAILED(autoCaller.rc())) return autoCaller.rc();537 538 509 /* No need to lock - lifetime constant. */ 539 HRESULT hr = mDnDTarget.queryInterfaceTo(a Target);510 HRESULT hr = mDnDTarget.queryInterfaceTo(aDnDTarget.asOutParam()); 540 511 541 512 LogFlowFuncLeaveRC(hr); … … 544 515 } 545 516 546 STDMETHODIMP Guest::COMGETTER(EventSource)(IEventSource **aEventSource)517 HRESULT Guest::getEventSource(ComPtr<IEventSource> &aEventSource) 547 518 { 548 519 #ifndef VBOX_WITH_GUEST_CONTROL … … 551 522 LogFlowThisFuncEnter(); 552 523 553 CheckComArgOutPointerValid(aEventSource);554 555 AutoCaller autoCaller(this);556 if (FAILED(autoCaller.rc())) return autoCaller.rc();557 558 524 /* No need to lock - lifetime constant. */ 559 mEventSource.queryInterfaceTo(aEventSource );525 mEventSource.queryInterfaceTo(aEventSource.asOutParam()); 560 526 561 527 LogFlowFuncLeaveRC(S_OK); … … 564 530 } 565 531 566 STDMETHODIMP Guest::COMGETTER(Facilities)(ComSafeArrayOut(IAdditionsFacility *, aFacilities)) 567 { 568 CheckComArgOutSafeArrayPointerValid(aFacilities); 569 570 AutoCaller autoCaller(this); 571 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 572 573 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 574 575 SafeIfaceArray<IAdditionsFacility> fac(mData.mFacilityMap); 576 fac.detachTo(ComSafeArrayOutArg(aFacilities)); 532 HRESULT Guest::getFacilities(std::vector<ComPtr<IAdditionsFacility> > &aFacilities) 533 { 534 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 535 536 aFacilities.resize(mData.mFacilityMap.size()); 537 size_t i = 0; 538 for (FacilityMapIter it = mData.mFacilityMap.begin(); it != mData.mFacilityMap.end(); ++it, ++i) 539 it->second.queryInterfaceTo(aFacilities[i].asOutParam()); 577 540 578 541 return S_OK; 579 542 } 580 543 581 STDMETHODIMP Guest::COMGETTER(Sessions)(ComSafeArrayOut(IGuestSession *, aSessions)) 582 { 583 CheckComArgOutSafeArrayPointerValid(aSessions); 584 585 AutoCaller autoCaller(this); 586 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 587 588 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 589 590 SafeIfaceArray<IGuestSession> collection(mData.mGuestSessions); 591 collection.detachTo(ComSafeArrayOutArg(aSessions)); 544 HRESULT Guest::getSessions(std::vector<ComPtr<IGuestSession> > &aSessions) 545 { 546 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 547 548 aSessions.resize(mData.mGuestSessions.size()); 549 size_t i = 0; 550 for (GuestSessions::iterator it = mData.mGuestSessions.begin(); it != mData.mGuestSessions.end(); ++it, ++i) 551 it->second.queryInterfaceTo(aSessions[i].asOutParam()); 592 552 593 553 return S_OK; 594 554 } 595 555 596 BOOL Guest::isPageFusionEnabled() 597 { 598 AutoCaller autoCaller(this); 599 if (FAILED(autoCaller.rc())) return false; 600 556 BOOL Guest::i_isPageFusionEnabled() 557 { 601 558 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 602 559 … … 604 561 } 605 562 606 STDMETHODIMP Guest::COMGETTER(MemoryBalloonSize)(ULONG *aMemoryBalloonSize) 607 { 608 CheckComArgOutPointerValid(aMemoryBalloonSize); 609 610 AutoCaller autoCaller(this); 611 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 612 563 HRESULT Guest::getMemoryBalloonSize(ULONG *aMemoryBalloonSize) 564 { 613 565 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 614 566 … … 618 570 } 619 571 620 STDMETHODIMP Guest::COMSETTER(MemoryBalloonSize)(ULONG aMemoryBalloonSize) 621 { 622 AutoCaller autoCaller(this); 623 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 624 572 HRESULT Guest::setMemoryBalloonSize(ULONG aMemoryBalloonSize) 573 { 625 574 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 626 575 … … 647 596 } 648 597 649 STDMETHODIMP Guest::COMGETTER(StatisticsUpdateInterval)(ULONG *aUpdateInterval) 650 { 651 CheckComArgOutPointerValid(aUpdateInterval); 652 653 AutoCaller autoCaller(this); 654 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 655 656 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 657 658 *aUpdateInterval = mStatUpdateInterval; 598 HRESULT Guest::getStatisticsUpdateInterval(ULONG *aStatisticsUpdateInterval) 599 { 600 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 601 602 *aStatisticsUpdateInterval = mStatUpdateInterval; 659 603 return S_OK; 660 604 } 661 605 662 STDMETHODIMP Guest::COMSETTER(StatisticsUpdateInterval)(ULONG aUpdateInterval) 663 { 664 AutoCaller autoCaller(this); 665 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 666 606 HRESULT Guest::setStatisticsUpdateInterval(ULONG aStatisticsUpdateInterval) 607 { 667 608 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 668 609 669 610 if (mStatUpdateInterval) 670 if (a UpdateInterval == 0)611 if (aStatisticsUpdateInterval == 0) 671 612 RTTimerLRStop(mStatTimer); 672 613 else 673 RTTimerLRChangeInterval(mStatTimer, a UpdateInterval);674 else 675 if (a UpdateInterval != 0)676 { 677 RTTimerLRChangeInterval(mStatTimer, a UpdateInterval);614 RTTimerLRChangeInterval(mStatTimer, aStatisticsUpdateInterval); 615 else 616 if (aStatisticsUpdateInterval != 0) 617 { 618 RTTimerLRChangeInterval(mStatTimer, aStatisticsUpdateInterval); 678 619 RTTimerLRStart(mStatTimer, 0); 679 620 } 680 mStatUpdateInterval = a UpdateInterval;621 mStatUpdateInterval = aStatisticsUpdateInterval; 681 622 /* forward the information to the VMM device */ 682 623 VMMDev *pVMMDev = mParent->i_getVMMDev(); … … 688 629 PPDMIVMMDEVPORT pVMMDevPort = pVMMDev->getVMMDevPort(); 689 630 if (pVMMDevPort) 690 pVMMDevPort->pfnSetStatisticsInterval(pVMMDevPort, a UpdateInterval);631 pVMMDevPort->pfnSetStatisticsInterval(pVMMDevPort, aStatisticsUpdateInterval); 691 632 } 692 633 … … 694 635 } 695 636 696 STDMETHODIMP Guest::InternalGetStatistics(ULONG *aCpuUser, ULONG *aCpuKernel, ULONG *aCpuIdle, 697 ULONG *aMemTotal, ULONG *aMemFree, ULONG *aMemBalloon, 698 ULONG *aMemShared, ULONG *aMemCache, ULONG *aPageTotal, 699 ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, 700 ULONG *aMemBalloonTotal, ULONG *aMemSharedTotal) 701 { 702 CheckComArgOutPointerValid(aCpuUser); 703 CheckComArgOutPointerValid(aCpuKernel); 704 CheckComArgOutPointerValid(aCpuIdle); 705 CheckComArgOutPointerValid(aMemTotal); 706 CheckComArgOutPointerValid(aMemFree); 707 CheckComArgOutPointerValid(aMemBalloon); 708 CheckComArgOutPointerValid(aMemShared); 709 CheckComArgOutPointerValid(aMemCache); 710 CheckComArgOutPointerValid(aPageTotal); 711 CheckComArgOutPointerValid(aMemAllocTotal); 712 CheckComArgOutPointerValid(aMemFreeTotal); 713 CheckComArgOutPointerValid(aMemBalloonTotal); 714 CheckComArgOutPointerValid(aMemSharedTotal); 715 716 AutoCaller autoCaller(this); 717 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 718 637 638 HRESULT Guest::internalGetStatistics(ULONG *aCpuUser, ULONG *aCpuKernel, ULONG *aCpuIdle, 639 ULONG *aMemTotal, ULONG *aMemFree, ULONG *aMemBalloon, 640 ULONG *aMemShared, ULONG *aMemCache, ULONG *aPageTotal, 641 ULONG *aMemAllocTotal, ULONG *aMemFreeTotal, 642 ULONG *aMemBalloonTotal, ULONG *aMemSharedTotal) 643 { 719 644 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 720 645 … … 761 686 } 762 687 763 HRESULT Guest:: setStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal)688 HRESULT Guest::i_setStatistic(ULONG aCpuId, GUESTSTATTYPE enmType, ULONG aVal) 764 689 { 765 690 static ULONG indexToPerfMask[] = … … 795 720 * @param aTimestamp Timestamp of last facility status update in ms (optional). 796 721 */ 797 STDMETHODIMP Guest::GetFacilityStatus(AdditionsFacilityType_T aType, LONG64 *aTimestamp, AdditionsFacilityStatus_T *aStatus) 798 { 799 AutoCaller autoCaller(this); 800 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 801 802 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 803 804 CheckComArgNotNull(aStatus); 722 HRESULT Guest::getFacilityStatus(AdditionsFacilityType_T aFacility, LONG64 *aTimestamp, AdditionsFacilityStatus_T *aStatus) 723 { 724 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 725 805 726 /* Not checking for aTimestamp is intentional; it's optional. */ 806 807 FacilityMapIterConst it = mData.mFacilityMap.find(aType); 727 FacilityMapIterConst it = mData.mFacilityMap.find(aFacility); 808 728 if (it != mData.mFacilityMap.end()) 809 729 { … … 827 747 } 828 748 829 STDMETHODIMP Guest::GetAdditionsStatus(AdditionsRunLevelType_T aLevel, BOOL *aActive) 830 { 831 AutoCaller autoCaller(this); 832 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 833 749 HRESULT Guest::getAdditionsStatus(AdditionsRunLevelType_T aLevel, BOOL *aActive) 750 { 834 751 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 835 752 … … 857 774 return rc; 858 775 } 859 860 STDMETHODIMP Guest::SetCredentials(IN_BSTR aUserName, IN_BSTR aPassword, 861 IN_BSTR aDomain, BOOL aAllowInteractiveLogon) 862 { 863 AutoCaller autoCaller(this); 864 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 865 776 HRESULT Guest::setCredentials(const com::Utf8Str &aUserName, const com::Utf8Str &aPassword, 777 const com::Utf8Str &aDomain, BOOL aAllowInteractiveLogon) 778 { 866 779 /* Check for magic domain names which are used to pass encryption keys to the disk. */ 867 780 if (Utf8Str(aDomain) == "@@disk") 868 return mParent->i_setDiskEncryptionKeys( Utf8Str(aPassword));781 return mParent->i_setDiskEncryptionKeys(aPassword); 869 782 else if (Utf8Str(aDomain) == "@@mem") 870 783 { … … 886 799 887 800 pVMMDevPort->pfnSetCredentials(pVMMDevPort, 888 Utf8Str(aUserName).c_str(),889 Utf8Str(aPassword).c_str(),890 Utf8Str(aDomain).c_str(),801 aUserName.c_str(), 802 aPassword.c_str(), 803 aDomain.c_str(), 891 804 u32Flags); 892 805 return S_OK; … … 910 823 * @param aOsType 911 824 */ 912 void Guest:: setAdditionsInfo(Bstr aInterfaceVersion, VBOXOSTYPE aOsType)825 void Guest::i_setAdditionsInfo(com::Utf8Str aInterfaceVersion, VBOXOSTYPE aOsType) 913 826 { 914 827 RTTIMESPEC TimeSpecTS; … … 955 868 * interface version. 956 869 */ 957 facilityUpdate(VBoxGuestFacilityType_Graphics, VBoxGuestFacilityStatus_Active, 0 /*fFlags*/, &TimeSpecTS);870 i_facilityUpdate(VBoxGuestFacilityType_Graphics, VBoxGuestFacilityStatus_Active, 0 /*fFlags*/, &TimeSpecTS); 958 871 } 959 872 } … … 975 888 * should come in pretty quickly after this update, normally. 976 889 */ 977 facilityUpdate(VBoxGuestFacilityType_Graphics,978 facilityIsActive(VBoxGuestFacilityType_VBoxGuestDriver)979 ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive,980 0 /*fFlags*/, &TimeSpecTS); /** @todo the timestamp isn't gonna be right here on saved state restore. */890 i_facilityUpdate(VBoxGuestFacilityType_Graphics, 891 i_facilityIsActive(VBoxGuestFacilityType_VBoxGuestDriver) 892 ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive, 893 0 /*fFlags*/, &TimeSpecTS); /** @todo the timestamp isn't gonna be right here on saved state restore. */ 981 894 982 895 /* … … 1007 920 * @param a_fFeatures See VBoxGuestInfo2::additionsFeatures. 1008 921 */ 1009 void Guest::setAdditionsInfo2(uint32_t a_uFullVersion, const char *a_pszName, uint32_t a_uRevision, uint32_t a_fFeatures) 1010 { 1011 AutoCaller autoCaller(this); 1012 AssertComRCReturnVoid(autoCaller.rc()); 1013 922 void Guest::i_setAdditionsInfo2(uint32_t a_uFullVersion, const char *a_pszName, uint32_t a_uRevision, uint32_t a_fFeatures) 923 { 1014 924 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 1015 925 1016 926 if (a_uFullVersion) 1017 927 { 1018 mData.mAdditionsVersionNew = BstrFmt(*a_pszName ? "%u.%u.%u_%s" : "%u.%u.%u",928 mData.mAdditionsVersionNew = Utf8Str(BstrFmt(*a_pszName ? "%u.%u.%u_%s" : "%u.%u.%u", 1019 929 VBOX_FULL_VERSION_GET_MAJOR(a_uFullVersion), 1020 930 VBOX_FULL_VERSION_GET_MINOR(a_uFullVersion), 1021 931 VBOX_FULL_VERSION_GET_BUILD(a_uFullVersion), 1022 a_pszName) ;932 a_pszName)); 1023 933 mData.mAdditionsVersionFull = a_uFullVersion; 1024 934 mData.mAdditionsRevision = a_uRevision; … … 1035 945 } 1036 946 1037 bool Guest:: facilityIsActive(VBoxGuestFacilityType enmFacility)947 bool Guest::i_facilityIsActive(VBoxGuestFacilityType enmFacility) 1038 948 { 1039 949 Assert(enmFacility < INT32_MAX); … … 1047 957 } 1048 958 1049 void Guest:: facilityUpdate(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus,1050 uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS)959 void Guest::i_facilityUpdate(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus, 960 uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS) 1051 961 { 1052 962 AssertReturnVoid( a_enmFacility < VBoxGuestFacilityType_All … … 1089 999 * @param cbDetails Size (in bytes) of state details. Pass 0 if not used. 1090 1000 */ 1091 void Guest:: onUserStateChange(Bstr aUser, Bstr aDomain, VBoxGuestUserState enmState,1092 const uint8_t *puDetails, uint32_t cbDetails)1001 void Guest::i_onUserStateChange(Bstr aUser, Bstr aDomain, VBoxGuestUserState enmState, 1002 const uint8_t *puDetails, uint32_t cbDetails) 1093 1003 { 1094 1004 LogFlowThisFunc(("\n")); … … 1118 1028 * @thread The emulation thread. 1119 1029 */ 1120 void Guest:: setAdditionsStatus(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus,1121 uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS)1030 void Guest::i_setAdditionsStatus(VBoxGuestFacilityType a_enmFacility, VBoxGuestFacilityStatus a_enmStatus, 1031 uint32_t a_fFlags, PCRTTIMESPEC a_pTimeSpecTS) 1122 1032 { 1123 1033 Assert( a_enmFacility > VBoxGuestFacilityType_Unknown … … 1134 1044 if (a_enmFacility == VBoxGuestFacilityType_All) 1135 1045 for (FacilityMapIter it = mData.mFacilityMap.begin(); it != mData.mFacilityMap.end(); ++it) 1136 facilityUpdate((VBoxGuestFacilityType)it->first, a_enmStatus, a_fFlags, a_pTimeSpecTS);1046 i_facilityUpdate((VBoxGuestFacilityType)it->first, a_enmStatus, a_fFlags, a_pTimeSpecTS); 1137 1047 else /* Update one facility only. */ 1138 facilityUpdate(a_enmFacility, a_enmStatus, a_fFlags, a_pTimeSpecTS);1048 i_facilityUpdate(a_enmFacility, a_enmStatus, a_fFlags, a_pTimeSpecTS); 1139 1049 1140 1050 /* 1141 1051 * Recalc the runlevel. 1142 1052 */ 1143 if ( facilityIsActive(VBoxGuestFacilityType_VBoxTrayClient))1053 if (i_facilityIsActive(VBoxGuestFacilityType_VBoxTrayClient)) 1144 1054 mData.mAdditionsRunLevel = AdditionsRunLevelType_Desktop; 1145 else if ( facilityIsActive(VBoxGuestFacilityType_VBoxService))1055 else if (i_facilityIsActive(VBoxGuestFacilityType_VBoxService)) 1146 1056 mData.mAdditionsRunLevel = AdditionsRunLevelType_Userland; 1147 else if ( facilityIsActive(VBoxGuestFacilityType_VBoxGuestDriver))1057 else if (i_facilityIsActive(VBoxGuestFacilityType_VBoxGuestDriver)) 1148 1058 mData.mAdditionsRunLevel = AdditionsRunLevelType_System; 1149 1059 else … … 1156 1066 * @param fCaps Guest capability bit mask (VMMDEV_GUEST_SUPPORTS_XXX). 1157 1067 */ 1158 void Guest:: setSupportedFeatures(uint32_t aCaps)1068 void Guest::i_setSupportedFeatures(uint32_t aCaps) 1159 1069 { 1160 1070 AutoCaller autoCaller(this); … … 1169 1079 RTTimeNow(&TimeSpecTS); 1170 1080 1171 facilityUpdate(VBoxGuestFacilityType_Seamless,1172 aCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive,1173 0 /*fFlags*/, &TimeSpecTS);1081 i_facilityUpdate(VBoxGuestFacilityType_Seamless, 1082 aCaps & VMMDEV_GUEST_SUPPORTS_SEAMLESS ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive, 1083 0 /*fFlags*/, &TimeSpecTS); 1174 1084 /** @todo Add VMMDEV_GUEST_SUPPORTS_GUEST_HOST_WINDOW_MAPPING */ 1175 facilityUpdate(VBoxGuestFacilityType_Graphics,1176 aCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive,1177 0 /*fFlags*/, &TimeSpecTS);1178 } 1179 1085 i_facilityUpdate(VBoxGuestFacilityType_Graphics, 1086 aCaps & VMMDEV_GUEST_SUPPORTS_GRAPHICS ? VBoxGuestFacilityStatus_Active : VBoxGuestFacilityStatus_Inactive, 1087 0 /*fFlags*/, &TimeSpecTS); 1088 } 1089 -
trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
r51612 r52082 913 913 return VERR_COM_UNEXPECTED; 914 914 915 Console *pConsole = mParent-> getConsole();915 Console *pConsole = mParent->i_getConsole(); 916 916 AssertPtr(pConsole); 917 917 … … 1289 1289 return VERR_COM_UNEXPECTED; 1290 1290 1291 Console *pConsole = mParent-> getConsole();1291 Console *pConsole = mParent->i_getConsole(); 1292 1292 AssertPtr(pConsole); 1293 1293 … … 1929 1929 return VERR_COM_UNEXPECTED; 1930 1930 1931 rc = pProcess->init(mParent-> getConsole() /* Console */, this /* Session */,1931 rc = pProcess->init(mParent->i_getConsole() /* Console */, this /* Session */, 1932 1932 uNewProcessID, procInfo); 1933 1933 if (RT_FAILURE(rc)) … … 2003 2003 2004 2004 #ifndef VBOX_GUESTCTRL_TEST_CASE 2005 ComObjPtr<Console> pConsole = mParent-> getConsole();2005 ComObjPtr<Console> pConsole = mParent->i_getConsole(); 2006 2006 Assert(!pConsole.isNull()); 2007 2007 … … 2131 2131 Assert(!pGuest.isNull()); 2132 2132 2133 uint32_t uVerAdditions = pGuest-> getAdditionsVersion();2133 uint32_t uVerAdditions = pGuest->i_getAdditionsVersion(); 2134 2134 uint32_t uVBoxMajor = VBOX_FULL_VERSION_GET_MAJOR(uVerAdditions); 2135 2135 uint32_t uVBoxMinor = VBOX_FULL_VERSION_GET_MINOR(uVerAdditions); … … 2391 2391 2392 2392 /* Remove ourselves from the session list. */ 2393 int rc2 = mParent-> sessionRemove(this);2393 int rc2 = mParent->i_sessionRemove(this); 2394 2394 if (rc2 == VERR_NOT_FOUND) /* Not finding the session anymore isn't critical. */ 2395 2395 rc2 = VINF_SUCCESS; -
trunk/src/VBox/Main/src-client/GuestSessionImplTasks.cpp
r51612 r52082 76 76 const Utf8Str &strPath, Utf8Str &strValue) 77 77 { 78 ComObjPtr<Console> pConsole = pGuest-> getConsole();78 ComObjPtr<Console> pConsole = pGuest->i_getConsole(); 79 79 const ComPtr<IMachine> pMachine = pConsole->i_machine(); 80 80 -
trunk/src/VBox/Main/src-client/VMMDevInterface.cpp
r52064 r52082 163 163 AssertPtrReturnVoid(guest); 164 164 165 guest-> setAdditionsStatus((VBoxGuestFacilityType)uFacility, (VBoxGuestFacilityStatus)uStatus, fFlags, pTimeSpecTS);165 guest->i_setAdditionsStatus((VBoxGuestFacilityType)uFacility, (VBoxGuestFacilityStatus)uStatus, fFlags, pTimeSpecTS); 166 166 pConsole->i_onAdditionsStateChange(); 167 167 } … … 185 185 AssertPtrReturnVoid(pGuest); 186 186 187 pGuest-> onUserStateChange(Bstr(pszUser), Bstr(pszDomain), (VBoxGuestUserState)uState,188 puDetails, cbDetails);187 pGuest->i_onUserStateChange(Bstr(pszUser), Bstr(pszDomain), (VBoxGuestUserState)uState, 188 puDetails, cbDetails); 189 189 } 190 190 … … 215 215 char version[16]; 216 216 RTStrPrintf(version, sizeof(version), "%d", guestInfo->interfaceVersion); 217 guest-> setAdditionsInfo(Bstr(version), guestInfo->osType);217 guest->i_setAdditionsInfo(Bstr(version), guestInfo->osType); 218 218 219 219 /* … … 232 232 * or driver unload. 233 233 */ 234 guest-> setAdditionsInfo(Bstr(), guestInfo->osType); /* Clear interface version + OS type. */234 guest->i_setAdditionsInfo(Bstr(), guestInfo->osType); /* Clear interface version + OS type. */ 235 235 /** @todo Would be better if GuestImpl.cpp did all this in the above method call 236 236 * while holding down the. */ 237 guest-> setAdditionsInfo2(0, "", 0, 0); /* Clear Guest Additions version. */237 guest->i_setAdditionsInfo2(0, "", 0, 0); /* Clear Guest Additions version. */ 238 238 RTTIMESPEC TimeSpecTS; 239 239 RTTimeNow(&TimeSpecTS); 240 guest-> setAdditionsStatus(VBoxGuestFacilityType_All, VBoxGuestFacilityStatus_Inactive, 0 /*fFlags*/, &TimeSpecTS);240 guest->i_setAdditionsStatus(VBoxGuestFacilityType_All, VBoxGuestFacilityStatus_Inactive, 0 /*fFlags*/, &TimeSpecTS); 241 241 pConsole->i_onAdditionsStateChange(); 242 242 } … … 258 258 259 259 /* Just pass it on... */ 260 pGuest-> setAdditionsInfo2(uFullVersion, pszName, uRevision, fFeatures);260 pGuest->i_setAdditionsInfo2(uFullVersion, pszName, uRevision, fFeatures); 261 261 262 262 /* … … 289 289 * Report our current capabilities (and assume none is active yet). 290 290 */ 291 pGuest-> setSupportedFeatures(newCapabilities);291 pGuest->i_setSupportedFeatures(newCapabilities); 292 292 293 293 /* … … 540 540 AssertPtrReturn(guest, VERR_GENERAL_FAILURE); 541 541 542 *pfPageFusionEnabled = !!guest->i sPageFusionEnabled();542 *pfPageFusionEnabled = !!guest->i_isPageFusionEnabled(); 543 543 return VINF_SUCCESS; 544 544 } … … 564 564 565 565 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_IDLE) 566 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUIDLE, pGuestStats->u32CpuLoad_Idle);566 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUIDLE, pGuestStats->u32CpuLoad_Idle); 567 567 568 568 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_KERNEL) 569 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUKERNEL, pGuestStats->u32CpuLoad_Kernel);569 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUKERNEL, pGuestStats->u32CpuLoad_Kernel); 570 570 571 571 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_CPU_LOAD_USER) 572 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUUSER, pGuestStats->u32CpuLoad_User);572 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_CPUUSER, pGuestStats->u32CpuLoad_User); 573 573 574 574 … … 577 577 * preCollect(). I might be wrong ofc, this is convoluted code... */ 578 578 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_TOTAL) 579 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMTOTAL, pGuestStats->u32PhysMemTotal);579 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMTOTAL, pGuestStats->u32PhysMemTotal); 580 580 581 581 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_AVAIL) 582 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMFREE, pGuestStats->u32PhysMemAvail);582 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMFREE, pGuestStats->u32PhysMemAvail); 583 583 584 584 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PHYS_MEM_BALLOON) 585 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMBALLOON, pGuestStats->u32PhysMemBalloon);585 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMBALLOON, pGuestStats->u32PhysMemBalloon); 586 586 587 587 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_MEM_SYSTEM_CACHE) 588 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMCACHE, pGuestStats->u32MemSystemCache);588 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_MEMCACHE, pGuestStats->u32MemSystemCache); 589 589 590 590 if (pGuestStats->u32StatCaps & VBOX_GUEST_STAT_PAGE_FILE_SIZE) 591 guest-> setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_PAGETOTAL, pGuestStats->u32PageFileSize);591 guest->i_setStatistic(pGuestStats->u32CpuId, GUESTSTATTYPE_PAGETOTAL, pGuestStats->u32PageFileSize); 592 592 593 593 return VINF_SUCCESS; -
trunk/src/VBox/Main/src-client/xpcom/module.cpp
r52064 r52082 66 66 67 67 #ifndef VBOX_COM_INPROC_API_CLIENT 68 NS_DECL_CLASSINFO(Guest)69 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Guest, IGuest)70 68 NS_DECL_CLASSINFO(Keyboard) 71 69 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Keyboard, IKeyboard)
Note:
See TracChangeset
for help on using the changeset viewer.