Changeset 26323 in vbox for trunk/src/VBox
- Timestamp:
- Feb 8, 2010 11:13:28 AM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 57404
- Location:
- trunk/src/VBox
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Frontends/VBoxManage/VBoxManageMisc.cpp
r25377 r26323 378 378 CHECK_ERROR_RET(a->virtualBox, OpenRemoteSession(a->session, uuid, sessionType, 379 379 env, progress.asOutParam()), rc); 380 RTPrintf("Waiting for the remote session to open...\n");381 CHECK_ERROR_RET(progress, WaitForCompletion 380 RTPrintf("Waiting for the VM to power on...\n"); 381 CHECK_ERROR_RET(progress, WaitForCompletion(-1), 1); 382 382 383 383 BOOL completed; … … 396 396 else 397 397 { 398 RTPrintf(" Remote session has been successfully opened.\n");398 RTPrintf("VM has been successfully started.\n"); 399 399 } 400 400 } -
trunk/src/VBox/Main/ConsoleImpl.cpp
r26313 r26323 49 49 50 50 #include "Global.h" 51 #include "VirtualBoxErrorInfoImpl.h" 51 52 #include "GuestImpl.h" 52 53 #include "KeyboardImpl.h" … … 7406 7407 /* Notify the progress object of the success */ 7407 7408 task->mProgress->notifyComplete(S_OK); 7409 console->mControl->SetPowerUpInfo(NULL); 7408 7410 } 7409 7411 else … … 7411 7413 /* The progress object will fetch the current error info */ 7412 7414 task->mProgress->notifyComplete(rc); 7415 ProgressErrorInfo info(task->mProgress); 7416 ComObjPtr<VirtualBoxErrorInfo> errorInfo; 7417 rc = errorInfo.createObject(); 7418 if (SUCCEEDED(rc)) 7419 { 7420 errorInfo->init(info.getResultCode(), 7421 info.getInterfaceID(), 7422 info.getComponent(), 7423 info.getText()); 7424 console->mControl->SetPowerUpInfo(errorInfo); 7425 } 7426 else 7427 { 7428 /* If it's not possible to create an IVirtualBoxErrorInfo object 7429 * signal success, as not signalling anything will cause a stuck 7430 * progress object in VBoxSVC. */ 7431 console->mControl->SetPowerUpInfo(NULL); 7432 } 7413 7433 7414 7434 LogRel(("Power up failed (vrc=%Rrc, rc=%Rhrc (%#08X))\n", vrc, rc, rc)); -
trunk/src/VBox/Main/MachineImpl.cpp
r26295 r26323 267 267 { 268 268 LogFlowThisFuncEnter(); 269 LogFlowThisFunc 270 271 AssertReturn 272 AssertReturn 269 LogFlowThisFunc(("aConfigFile='%s', aMode=%d\n", strConfigFile.raw(), aMode)); 270 271 AssertReturn(aParent, E_INVALIDARG); 272 AssertReturn(!strConfigFile.isEmpty(), E_INVALIDARG); 273 273 AssertReturn(aMode != Init_New || (aName != NULL && *aName != '\0'), 274 274 E_INVALIDARG); … … 389 389 390 390 /* Apply BIOS defaults */ 391 mBIOSSettings->applyDefaults 391 mBIOSSettings->applyDefaults(aOsType); 392 392 393 393 /* Apply network adapters defaults */ … … 545 545 LogWarningThisFunc(("Setting state to Aborted!\n")); 546 546 /* set machine state using SessionMachine reimplementation */ 547 static_cast<Machine*>(mData->mSession.mMachine)->setMachineState 547 static_cast<Machine*>(mData->mSession.mMachine)->setMachineState(MachineState_Aborted); 548 548 } 549 549 … … 579 579 ///////////////////////////////////////////////////////////////////////////// 580 580 581 STDMETHODIMP Machine::COMGETTER(Parent) 581 STDMETHODIMP Machine::COMGETTER(Parent)(IVirtualBox **aParent) 582 582 { 583 583 CheckComArgOutPointerValid(aParent); … … 592 592 } 593 593 594 STDMETHODIMP Machine::COMGETTER(Accessible) 594 STDMETHODIMP Machine::COMGETTER(Accessible)(BOOL *aAccessible) 595 595 { 596 596 CheckComArgOutPointerValid(aAccessible); … … 646 646 } 647 647 648 STDMETHODIMP Machine::COMGETTER(AccessError) 648 STDMETHODIMP Machine::COMGETTER(AccessError)(IVirtualBoxErrorInfo **aAccessError) 649 649 { 650 650 CheckComArgOutPointerValid(aAccessError); … … 668 668 if (SUCCEEDED(rc)) 669 669 { 670 errorInfo->init 671 672 673 670 errorInfo->init(mData->mAccessError.getResultCode(), 671 mData->mAccessError.getInterfaceID(), 672 mData->mAccessError.getComponent(), 673 mData->mAccessError.getText()); 674 674 rc = errorInfo.queryInterfaceTo(aAccessError); 675 675 } … … 678 678 } 679 679 680 STDMETHODIMP Machine::COMGETTER(Name) 680 STDMETHODIMP Machine::COMGETTER(Name)(BSTR *aName) 681 681 { 682 682 CheckComArgOutPointerValid(aName); … … 692 692 } 693 693 694 STDMETHODIMP Machine::COMSETTER(Name) 695 { 696 CheckComArgNotNull 694 STDMETHODIMP Machine::COMSETTER(Name)(IN_BSTR aName) 695 { 696 CheckComArgNotNull(aName); 697 697 698 698 if (!*aName) … … 715 715 } 716 716 717 STDMETHODIMP Machine::COMGETTER(Description) 717 STDMETHODIMP Machine::COMGETTER(Description)(BSTR *aDescription) 718 718 { 719 719 CheckComArgOutPointerValid(aDescription); … … 729 729 } 730 730 731 STDMETHODIMP Machine::COMSETTER(Description) 731 STDMETHODIMP Machine::COMSETTER(Description)(IN_BSTR aDescription) 732 732 { 733 733 AutoCaller autoCaller(this); … … 746 746 } 747 747 748 STDMETHODIMP Machine::COMGETTER(Id) 748 STDMETHODIMP Machine::COMGETTER(Id)(BSTR *aId) 749 749 { 750 750 CheckComArgOutPointerValid(aId); … … 760 760 } 761 761 762 STDMETHODIMP Machine::COMGETTER(OSTypeId) 762 STDMETHODIMP Machine::COMGETTER(OSTypeId)(BSTR *aOSTypeId) 763 763 { 764 764 CheckComArgOutPointerValid(aOSTypeId); … … 774 774 } 775 775 776 STDMETHODIMP Machine::COMSETTER(OSTypeId) 777 { 778 CheckComArgNotNull 776 STDMETHODIMP Machine::COMSETTER(OSTypeId)(IN_BSTR aOSTypeId) 777 { 778 CheckComArgNotNull(aOSTypeId); 779 779 780 780 AutoCaller autoCaller(this); … … 783 783 /* look up the object by Id to check it is valid */ 784 784 ComPtr<IGuestOSType> guestOSType; 785 HRESULT rc = mParent->GetGuestOSType (aOSTypeId, 786 guestOSType.asOutParam()); 785 HRESULT rc = mParent->GetGuestOSType(aOSTypeId, guestOSType.asOutParam()); 787 786 if (FAILED(rc)) return rc; 788 787 … … 790 789 * by ID is case-insensitive and the input value may have different case */ 791 790 Bstr osTypeId; 792 rc = guestOSType->COMGETTER(Id) 791 rc = guestOSType->COMGETTER(Id)(osTypeId.asOutParam()); 793 792 if (FAILED(rc)) return rc; 794 793 … … 806 805 807 806 808 STDMETHODIMP Machine::COMGETTER(FirmwareType) 807 STDMETHODIMP Machine::COMGETTER(FirmwareType)(FirmwareType_T *aFirmwareType) 809 808 { 810 809 CheckComArgOutPointerValid(aFirmwareType); … … 820 819 } 821 820 822 STDMETHODIMP Machine::COMSETTER(FirmwareType) 821 STDMETHODIMP Machine::COMSETTER(FirmwareType)(FirmwareType_T aFirmwareType) 823 822 { 824 823 AutoCaller autoCaller(this); … … 836 835 } 837 836 838 STDMETHODIMP Machine::COMGETTER(HardwareVersion) 837 STDMETHODIMP Machine::COMGETTER(HardwareVersion)(BSTR *aHWVersion) 839 838 { 840 839 if (!aHWVersion) … … 851 850 } 852 851 853 STDMETHODIMP Machine::COMSETTER(HardwareVersion) 852 STDMETHODIMP Machine::COMSETTER(HardwareVersion)(IN_BSTR aHWVersion) 854 853 { 855 854 /* check known version */ 856 855 Utf8Str hwVersion = aHWVersion; 857 if ( hwVersion.compare 858 && hwVersion.compare 856 if ( hwVersion.compare("1") != 0 857 && hwVersion.compare("2") != 0) 859 858 return setError(E_INVALIDARG, 860 859 tr("Invalid hardware version: %ls\n"), aHWVersion); … … 892 891 } 893 892 894 STDMETHODIMP Machine::COMSETTER(HardwareUUID) 893 STDMETHODIMP Machine::COMSETTER(HardwareUUID)(IN_BSTR aUUID) 895 894 { 896 895 Guid hardwareUUID(aUUID); … … 916 915 } 917 916 918 STDMETHODIMP Machine::COMGETTER(MemorySize) 917 STDMETHODIMP Machine::COMGETTER(MemorySize)(ULONG *memorySize) 919 918 { 920 919 if (!memorySize) … … 931 930 } 932 931 933 STDMETHODIMP Machine::COMSETTER(MemorySize) 932 STDMETHODIMP Machine::COMSETTER(MemorySize)(ULONG memorySize) 934 933 { 935 934 /* check RAM limits */ … … 956 955 } 957 956 958 STDMETHODIMP Machine::COMGETTER(CPUCount) 957 STDMETHODIMP Machine::COMGETTER(CPUCount)(ULONG *CPUCount) 959 958 { 960 959 if (!CPUCount) … … 971 970 } 972 971 973 STDMETHODIMP Machine::COMSETTER(CPUCount) 972 STDMETHODIMP Machine::COMSETTER(CPUCount)(ULONG CPUCount) 974 973 { 975 974 /* check CPU limits */ … … 1008 1007 } 1009 1008 1010 STDMETHODIMP Machine::COMGETTER(CPUHotPlugEnabled) 1009 STDMETHODIMP Machine::COMGETTER(CPUHotPlugEnabled)(BOOL *enabled) 1011 1010 { 1012 1011 if (!enabled) … … 1023 1022 } 1024 1023 1025 STDMETHODIMP Machine::COMSETTER(CPUHotPlugEnabled) 1024 STDMETHODIMP Machine::COMSETTER(CPUHotPlugEnabled)(BOOL enabled) 1026 1025 { 1027 1026 HRESULT rc = S_OK; … … 1081 1080 } 1082 1081 1083 STDMETHODIMP Machine::COMGETTER(VRAMSize) 1082 STDMETHODIMP Machine::COMGETTER(VRAMSize)(ULONG *memorySize) 1084 1083 { 1085 1084 if (!memorySize) … … 1096 1095 } 1097 1096 1098 STDMETHODIMP Machine::COMSETTER(VRAMSize) 1097 STDMETHODIMP Machine::COMSETTER(VRAMSize)(ULONG memorySize) 1099 1098 { 1100 1099 /* check VRAM limits */ … … 1121 1120 1122 1121 /** @todo this method should not be public */ 1123 STDMETHODIMP Machine::COMGETTER(MemoryBalloonSize) 1122 STDMETHODIMP Machine::COMGETTER(MemoryBalloonSize)(ULONG *memoryBalloonSize) 1124 1123 { 1125 1124 if (!memoryBalloonSize) … … 1137 1136 1138 1137 /** @todo this method should not be public */ 1139 STDMETHODIMP Machine::COMSETTER(MemoryBalloonSize) 1138 STDMETHODIMP Machine::COMSETTER(MemoryBalloonSize)(ULONG memoryBalloonSize) 1140 1139 { 1141 1140 /* check limits */ 1142 if (memoryBalloonSize >= VMMDEV_MAX_MEMORY_BALLOON 1141 if (memoryBalloonSize >= VMMDEV_MAX_MEMORY_BALLOON(mHWData->mMemorySize)) 1143 1142 return setError(E_INVALIDARG, 1144 1143 tr("Invalid memory balloon size: %lu MB (must be in range [%lu, %lu] MB)"), 1145 memoryBalloonSize, 0, VMMDEV_MAX_MEMORY_BALLOON 1144 memoryBalloonSize, 0, VMMDEV_MAX_MEMORY_BALLOON(mHWData->mMemorySize)); 1146 1145 1147 1146 AutoCaller autoCaller(this); … … 1161 1160 1162 1161 /** @todo this method should not be public */ 1163 STDMETHODIMP Machine::COMGETTER(StatisticsUpdateInterval) 1162 STDMETHODIMP Machine::COMGETTER(StatisticsUpdateInterval)(ULONG *statisticsUpdateInterval) 1164 1163 { 1165 1164 if (!statisticsUpdateInterval) … … 1177 1176 1178 1177 /** @todo this method should not be public */ 1179 STDMETHODIMP Machine::COMSETTER(StatisticsUpdateInterval) 1178 STDMETHODIMP Machine::COMSETTER(StatisticsUpdateInterval)(ULONG statisticsUpdateInterval) 1180 1179 { 1181 1180 AutoCaller autoCaller(this); … … 1264 1263 } 1265 1264 1266 STDMETHODIMP Machine::COMGETTER(MonitorCount) 1265 STDMETHODIMP Machine::COMGETTER(MonitorCount)(ULONG *monitorCount) 1267 1266 { 1268 1267 if (!monitorCount) … … 1279 1278 } 1280 1279 1281 STDMETHODIMP Machine::COMSETTER(MonitorCount) 1280 STDMETHODIMP Machine::COMSETTER(MonitorCount)(ULONG monitorCount) 1282 1281 { 1283 1282 /* make sure monitor count is a sensible number */ … … 1636 1635 } 1637 1636 1638 STDMETHODIMP Machine::COMGETTER(SnapshotFolder) 1637 STDMETHODIMP Machine::COMGETTER(SnapshotFolder)(BSTR *aSnapshotFolder) 1639 1638 { 1640 1639 CheckComArgOutPointerValid(aSnapshotFolder); … … 1650 1649 } 1651 1650 1652 STDMETHODIMP Machine::COMSETTER(SnapshotFolder) 1651 STDMETHODIMP Machine::COMSETTER(SnapshotFolder)(IN_BSTR aSnapshotFolder) 1653 1652 { 1654 1653 /* @todo (r=dmik): … … 1754 1753 } 1755 1754 1756 STDMETHODIMP Machine::COMGETTER(USBController) 1755 STDMETHODIMP Machine::COMGETTER(USBController)(IUSBController **aUSBController) 1757 1756 { 1758 1757 #ifdef VBOX_WITH_USB … … 1777 1776 } 1778 1777 1779 STDMETHODIMP Machine::COMGETTER(SettingsFilePath) 1778 STDMETHODIMP Machine::COMGETTER(SettingsFilePath)(BSTR *aFilePath) 1780 1779 { 1781 1780 CheckComArgOutPointerValid(aFilePath); … … 1790 1789 } 1791 1790 1792 STDMETHODIMP Machine::COMGETTER(SettingsModified) 1791 STDMETHODIMP Machine::COMGETTER(SettingsModified)(BOOL *aModified) 1793 1792 { 1794 1793 CheckComArgOutPointerValid(aModified); … … 1813 1812 } 1814 1813 1815 STDMETHODIMP Machine::COMGETTER(SessionState) 1814 STDMETHODIMP Machine::COMGETTER(SessionState)(SessionState_T *aSessionState) 1816 1815 { 1817 1816 CheckComArgOutPointerValid(aSessionState); … … 1827 1826 } 1828 1827 1829 STDMETHODIMP Machine::COMGETTER(SessionType) 1828 STDMETHODIMP Machine::COMGETTER(SessionType)(BSTR *aSessionType) 1830 1829 { 1831 1830 CheckComArgOutPointerValid(aSessionType); … … 1844 1843 } 1845 1844 1846 STDMETHODIMP Machine::COMGETTER(SessionPid) 1845 STDMETHODIMP Machine::COMGETTER(SessionPid)(ULONG *aSessionPid) 1847 1846 { 1848 1847 CheckComArgOutPointerValid(aSessionPid); … … 1858 1857 } 1859 1858 1860 STDMETHODIMP Machine::COMGETTER(State) 1859 STDMETHODIMP Machine::COMGETTER(State)(MachineState_T *machineState) 1861 1860 { 1862 1861 if (!machineState) … … 1873 1872 } 1874 1873 1875 STDMETHODIMP Machine::COMGETTER(LastStateChange) 1874 STDMETHODIMP Machine::COMGETTER(LastStateChange)(LONG64 *aLastStateChange) 1876 1875 { 1877 1876 CheckComArgOutPointerValid(aLastStateChange); … … 1882 1881 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 1883 1882 1884 *aLastStateChange = RTTimeSpecGetMilli 1885 1886 return S_OK; 1887 } 1888 1889 STDMETHODIMP Machine::COMGETTER(StateFilePath) 1883 *aLastStateChange = RTTimeSpecGetMilli(&mData->mLastStateChange); 1884 1885 return S_OK; 1886 } 1887 1888 STDMETHODIMP Machine::COMGETTER(StateFilePath)(BSTR *aStateFilePath) 1890 1889 { 1891 1890 CheckComArgOutPointerValid(aStateFilePath); … … 1904 1903 } 1905 1904 1906 STDMETHODIMP Machine::COMGETTER(LogFolder) 1905 STDMETHODIMP Machine::COMGETTER(LogFolder)(BSTR *aLogFolder) 1907 1906 { 1908 1907 CheckComArgOutPointerValid(aLogFolder); … … 1914 1913 1915 1914 Utf8Str logFolder; 1916 getLogFolder 1915 getLogFolder(logFolder); 1917 1916 1918 1917 Bstr (logFolder).cloneTo(aLogFolder); … … 1951 1950 } 1952 1951 1953 STDMETHODIMP Machine::COMGETTER(CurrentStateModified) 1952 STDMETHODIMP Machine::COMGETTER(CurrentStateModified)(BOOL *aCurrentStateModified) 1954 1953 { 1955 1954 CheckComArgOutPointerValid(aCurrentStateModified); … … 1971 1970 } 1972 1971 1973 STDMETHODIMP Machine::COMGETTER(SharedFolders) 1972 STDMETHODIMP Machine::COMGETTER(SharedFolders)(ComSafeArrayOut(ISharedFolder *, aSharedFolders)) 1974 1973 { 1975 1974 CheckComArgOutSafeArrayPointerValid(aSharedFolders); … … 1986 1985 } 1987 1986 1988 STDMETHODIMP Machine::COMGETTER(ClipboardMode) 1987 STDMETHODIMP Machine::COMGETTER(ClipboardMode)(ClipboardMode_T *aClipboardMode) 1989 1988 { 1990 1989 CheckComArgOutPointerValid(aClipboardMode); … … 2001 2000 2002 2001 STDMETHODIMP 2003 Machine::COMSETTER(ClipboardMode) 2002 Machine::COMSETTER(ClipboardMode)(ClipboardMode_T aClipboardMode) 2004 2003 { 2005 2004 AutoCaller autoCaller(this); … … 2059 2058 2060 2059 STDMETHODIMP 2061 Machine::COMGETTER(StorageControllers) 2060 Machine::COMGETTER(StorageControllers)(ComSafeArrayOut(IStorageController *, aStorageControllers)) 2062 2061 { 2063 2062 CheckComArgOutSafeArrayPointerValid(aStorageControllers); … … 2068 2067 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 2069 2068 2070 SafeIfaceArray<IStorageController> ctrls 2069 SafeIfaceArray<IStorageController> ctrls(*mStorageControllers.data()); 2071 2070 ctrls.detachTo(ComSafeArrayOutArg(aStorageControllers)); 2072 2071 … … 2261 2260 if (aPosition < 1 || aPosition > SchemaDefs::MaxBootPosition) 2262 2261 return setError(E_INVALIDARG, 2263 tr 2262 tr("Invalid boot position: %lu (must be in range [1, %lu])"), 2264 2263 aPosition, SchemaDefs::MaxBootPosition); 2265 2264 … … 2283 2282 } 2284 2283 2285 STDMETHODIMP Machine::GetBootOrder 2284 STDMETHODIMP Machine::GetBootOrder(ULONG aPosition, DeviceType_T *aDevice) 2286 2285 { 2287 2286 if (aPosition < 1 || aPosition > SchemaDefs::MaxBootPosition) … … 3329 3328 } 3330 3329 3331 STDMETHODIMP Machine::GetSnapshot 3330 STDMETHODIMP Machine::GetSnapshot(IN_BSTR aId, ISnapshot **aSnapshot) 3332 3331 { 3333 3332 CheckComArgOutPointerValid(aSnapshot); … … 3360 3359 } 3361 3360 3362 STDMETHODIMP Machine::FindSnapshot 3363 { 3364 CheckComArgNotNull 3361 STDMETHODIMP Machine::FindSnapshot(IN_BSTR aName, ISnapshot **aSnapshot) 3362 { 3363 CheckComArgNotNull(aName); 3365 3364 CheckComArgOutPointerValid(aSnapshot); 3366 3365 … … 3378 3377 } 3379 3378 3380 STDMETHODIMP Machine::SetCurrentSnapshot 3379 STDMETHODIMP Machine::SetCurrentSnapshot(IN_BSTR /* aId */) 3381 3380 { 3382 3381 /// @todo (dmik) don't forget to set … … 3386 3385 } 3387 3386 3388 STDMETHODIMP Machine::CreateSharedFolder 3387 STDMETHODIMP Machine::CreateSharedFolder(IN_BSTR aName, IN_BSTR aHostPath, BOOL aWritable) 3389 3388 { 3390 3389 CheckComArgNotNull(aName); … … 3400 3399 3401 3400 ComObjPtr<SharedFolder> sharedFolder; 3402 rc = findSharedFolder 3401 rc = findSharedFolder(aName, sharedFolder, false /* aSetError */); 3403 3402 if (SUCCEEDED(rc)) 3404 3403 return setError(VBOX_E_OBJECT_IN_USE, … … 3412 3411 setModified(IsModified_SharedFolders); 3413 3412 mHWData.backup(); 3414 mHWData->mSharedFolders.push_back 3413 mHWData->mSharedFolders.push_back(sharedFolder); 3415 3414 3416 3415 /* inform the direct session if any */ … … 3421 3420 } 3422 3421 3423 STDMETHODIMP Machine::RemoveSharedFolder 3424 { 3425 CheckComArgNotNull 3422 STDMETHODIMP Machine::RemoveSharedFolder(IN_BSTR aName) 3423 { 3424 CheckComArgNotNull(aName); 3426 3425 3427 3426 AutoCaller autoCaller(this); … … 3434 3433 3435 3434 ComObjPtr<SharedFolder> sharedFolder; 3436 rc = findSharedFolder 3435 rc = findSharedFolder(aName, sharedFolder, true /* aSetError */); 3437 3436 if (FAILED(rc)) return rc; 3438 3437 3439 3438 setModified(IsModified_SharedFolders); 3440 3439 mHWData.backup(); 3441 mHWData->mSharedFolders.remove 3440 mHWData->mSharedFolders.remove(sharedFolder); 3442 3441 3443 3442 /* inform the direct session if any */ … … 3448 3447 } 3449 3448 3450 STDMETHODIMP Machine::CanShowConsoleWindow 3449 STDMETHODIMP Machine::CanShowConsoleWindow(BOOL *aCanShow) 3451 3450 { 3452 3451 CheckComArgOutPointerValid(aCanShow); … … 3475 3474 3476 3475 ULONG64 dummy; 3477 return directControl->OnShowWindow 3478 } 3479 3480 STDMETHODIMP Machine::ShowConsoleWindow 3476 return directControl->OnShowWindow(TRUE /* aCheck */, aCanShow, &dummy); 3477 } 3478 3479 STDMETHODIMP Machine::ShowConsoleWindow(ULONG64 *aWinId) 3481 3480 { 3482 3481 CheckComArgOutPointerValid(aWinId); 3483 3482 3484 3483 AutoCaller autoCaller(this); 3485 AssertComRCReturn 3484 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 3486 3485 3487 3486 ComPtr<IInternalSessionControl> directControl; … … 3502 3501 3503 3502 BOOL dummy; 3504 return directControl->OnShowWindow 3503 return directControl->OnShowWindow(FALSE /* aCheck */, &dummy, aWinId); 3505 3504 } 3506 3505 … … 3510 3509 BSTR *aFlags) 3511 3510 { 3512 #if !defined (VBOX_WITH_GUEST_PROPS)3511 #ifndef VBOX_WITH_GUEST_PROPS 3513 3512 ReturnComNotImplemented(); 3514 #else 3513 #else // VBOX_WITH_GUEST_PROPS 3515 3514 CheckComArgNotNull(aName); 3516 3515 CheckComArgOutPointerValid(aValue); … … 3561 3560 rc = E_FAIL; 3562 3561 else 3563 rc = directControl->AccessGuestProperty 3564 3565 3562 rc = directControl->AccessGuestProperty(aName, NULL, NULL, 3563 false /* isSetter */, 3564 aValue, aTimestamp, aFlags); 3566 3565 } 3567 3566 return rc; 3568 #endif / * else !defined (VBOX_WITH_GUEST_PROPS) */3569 } 3570 3571 STDMETHODIMP Machine::GetGuestPropertyValue 3567 #endif // VBOX_WITH_GUEST_PROPS 3568 } 3569 3570 STDMETHODIMP Machine::GetGuestPropertyValue(IN_BSTR aName, BSTR *aValue) 3572 3571 { 3573 3572 ULONG64 dummyTimestamp; 3574 3573 BSTR dummyFlags; 3575 return GetGuestProperty 3576 } 3577 3578 STDMETHODIMP Machine::GetGuestPropertyTimestamp 3574 return GetGuestProperty(aName, aValue, &dummyTimestamp, &dummyFlags); 3575 } 3576 3577 STDMETHODIMP Machine::GetGuestPropertyTimestamp(IN_BSTR aName, ULONG64 *aTimestamp) 3579 3578 { 3580 3579 BSTR dummyValue; 3581 3580 BSTR dummyFlags; 3582 return GetGuestProperty 3581 return GetGuestProperty(aName, &dummyValue, aTimestamp, &dummyFlags); 3583 3582 } 3584 3583 … … 3587 3586 IN_BSTR aFlags) 3588 3587 { 3589 #if !defined (VBOX_WITH_GUEST_PROPS)3588 #ifndef VBOX_WITH_GUEST_PROPS 3590 3589 ReturnComNotImplemented(); 3591 #else 3590 #else // VBOX_WITH_GUEST_PROPS 3592 3591 using namespace guestProp; 3593 3592 3594 3593 CheckComArgNotNull(aName); 3595 3594 CheckComArgNotNull(aValue); 3596 if ((aFlags != NULL) && !VALID_PTR 3595 if ((aFlags != NULL) && !VALID_PTR(aFlags)) 3597 3596 return E_INVALIDARG; 3598 3597 … … 3615 3614 uint32_t fFlags = NILFLAG; 3616 3615 if ( (aFlags != NULL) 3617 && RT_FAILURE(validateFlags 3616 && RT_FAILURE(validateFlags(utf8Flags.raw(), &fFlags)) 3618 3617 ) 3619 3618 return setError(E_INVALIDARG, … … 3664 3663 if (aFlags != NULL) 3665 3664 property.mFlags = fFlags; 3666 mHWData->mGuestProperties.push_back 3665 mHWData->mGuestProperties.push_back(property); 3667 3666 } 3668 3667 } … … 3676 3675 property.mTimestamp = RTTimeSpecGetNano(RTTimeNow(&time)); 3677 3676 property.mFlags = fFlags; 3678 mHWData->mGuestProperties.push_back 3677 mHWData->mGuestProperties.push_back(property); 3679 3678 } 3680 3679 if ( SUCCEEDED(rc) … … 3715 3714 3716 3715 return rc; 3717 #endif / * else !defined (VBOX_WITH_GUEST_PROPS) */3718 } 3719 3720 STDMETHODIMP Machine::SetGuestPropertyValue 3721 { 3722 return SetGuestProperty 3716 #endif // VBOX_WITH_GUEST_PROPS 3717 } 3718 3719 STDMETHODIMP Machine::SetGuestPropertyValue(IN_BSTR aName, IN_BSTR aValue) 3720 { 3721 return SetGuestProperty(aName, aValue, NULL); 3723 3722 } 3724 3723 … … 3729 3728 ComSafeArrayOut(BSTR, aFlags)) 3730 3729 { 3731 #if !defined (VBOX_WITH_GUEST_PROPS)3730 #ifndef VBOX_WITH_GUEST_PROPS 3732 3731 ReturnComNotImplemented(); 3733 #else 3734 if (!VALID_PTR 3732 #else // VBOX_WITH_GUEST_PROPS 3733 if (!VALID_PTR(aPatterns) && (aPatterns != NULL)) 3735 3734 return E_POINTER; 3736 3735 … … 3772 3771 */ 3773 3772 size_t cEntries = propList.size(); 3774 SafeArray<BSTR> names 3775 SafeArray<BSTR> values 3776 SafeArray<ULONG64> timestamps 3777 SafeArray<BSTR> flags 3773 SafeArray<BSTR> names(cEntries); 3774 SafeArray<BSTR> values(cEntries); 3775 SafeArray<ULONG64> timestamps(cEntries); 3776 SafeArray<BSTR> flags(cEntries); 3778 3777 size_t iProp = 0; 3779 3778 for (HWData::GuestPropertyList::iterator it = propList.begin(); … … 3812 3811 } 3813 3812 return rc; 3814 #endif / * else !defined (VBOX_WITH_GUEST_PROPS) */3813 #endif // VBOX_WITH_GUEST_PROPS 3815 3814 } 3816 3815 … … 3884 3883 ComObjPtr<StorageController> ctrl; 3885 3884 3886 rc = getStorageControllerByName 3885 rc = getStorageControllerByName(aName, ctrl, false /* aSetError */); 3887 3886 if (SUCCEEDED(rc)) 3888 3887 return setError(VBOX_E_OBJECT_IN_USE, … … 3912 3911 setModified(IsModified_Storage); 3913 3912 mStorageControllers.backup(); 3914 mStorageControllers->push_back 3913 mStorageControllers->push_back(ctrl); 3915 3914 3916 3915 ctrl.queryInterfaceTo(controller); … … 3935 3934 ComObjPtr<StorageController> ctrl; 3936 3935 3937 HRESULT rc = getStorageControllerByName 3936 HRESULT rc = getStorageControllerByName(aName, ctrl, true /* aSetError */); 3938 3937 if (SUCCEEDED(rc)) 3939 3938 ctrl.queryInterfaceTo(aStorageController); … … 3979 3978 3980 3979 ComObjPtr<StorageController> ctrl; 3981 rc = getStorageControllerByName 3980 rc = getStorageControllerByName(aName, ctrl, true /* aSetError */); 3982 3981 if (FAILED(rc)) return rc; 3983 3982 … … 4000 3999 ctrl->unshare(); 4001 4000 4002 mStorageControllers->remove 4001 mStorageControllers->remove(ctrl); 4003 4002 4004 4003 /* inform the direct session if any */ … … 4056 4055 if (typeOfBlock == u32Type) 4057 4056 { 4058 if (cbBlock > 2 * sizeof 4057 if (cbBlock > 2 * sizeof(uint32_t)) 4059 4058 { 4060 cbData = cbBlock - 2 * sizeof 4059 cbData = cbBlock - 2 * sizeof(uint32_t); 4061 4060 pu8Data = (uint8_t *)RTMemAlloc(cbData); 4062 4061 if (pu8Data == NULL) … … 4444 4443 { 4445 4444 AutoCaller autoCaller(this); 4446 AssertComRCReturn 4445 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 4447 4446 4448 4447 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 4449 4448 4450 AssertReturn 4449 AssertReturn(!mData->m_strConfigFileFull.isEmpty(), VERR_GENERAL_FAILURE); 4451 4450 4452 4451 Utf8Str strSettingsDir = mData->m_strConfigFileFull; … … 4475 4474 { 4476 4475 AutoCaller autoCaller(this); 4477 AssertComRCReturn (autoCaller.rc(), (void)0);4476 AssertComRCReturn(autoCaller.rc(), (void)0); 4478 4477 4479 4478 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 4480 4479 4481 AssertReturnVoid 4480 AssertReturnVoid(!mData->m_strConfigFileFull.isEmpty()); 4482 4481 4483 4482 Utf8Str settingsDir = mData->m_strConfigFileFull; … … 4499 4498 * \a aLogFolder argument. 4500 4499 */ 4501 void Machine::getLogFolder 4502 { 4503 AutoCaller autoCaller(this); 4504 AssertComRCReturnVoid 4500 void Machine::getLogFolder(Utf8Str &aLogFolder) 4501 { 4502 AutoCaller autoCaller(this); 4503 AssertComRCReturnVoid(autoCaller.rc()); 4505 4504 4506 4505 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 4507 4506 4508 4507 Utf8Str settingsDir; 4509 if (isInOwnDir 4508 if (isInOwnDir(&settingsDir)) 4510 4509 { 4511 4510 /* Log folder is <Machines>/<VM_Name>/Logs */ 4512 aLogFolder = Utf8StrFmt 4511 aLogFolder = Utf8StrFmt("%s%cLogs", settingsDir.raw(), RTPATH_DELIMITER); 4513 4512 } 4514 4513 else … … 4727 4726 } 4728 4727 4729 if (mData->mSession.mProgress)4730 {4731 /* finalize the progress after setting the state, for consistency */4732 mData->mSession.mProgress->notifyComplete(rc);4733 mData->mSession.mProgress.setNull();4734 }4735 4736 4728 /* Leave the lock since SessionMachine::uninit() locks VirtualBox which 4737 4729 * would break the lock order */ … … 4781 4773 4782 4774 /* may not be busy */ 4783 AssertReturn(!Global::IsOnlineOrTransient 4775 AssertReturn(!Global::IsOnlineOrTransient(mData->mMachineState), E_FAIL); 4784 4776 4785 4777 /* get the path to the executable */ … … 4821 4813 if (*var) 4822 4814 { 4823 char *val = strchr 4815 char *val = strchr(var, '='); 4824 4816 if (val) 4825 4817 { 4826 4818 *val++ = '\0'; 4827 vrc2 = RTEnvSetEx 4819 vrc2 = RTEnvSetEx(env, var, val); 4828 4820 } 4829 4821 else 4830 vrc2 = RTEnvUnsetEx 4822 vrc2 = RTEnvUnsetEx(env, var); 4831 4823 if (RT_FAILURE(vrc2)) 4832 4824 break; … … 4836 4828 } 4837 4829 if (RT_SUCCESS(vrc2) && *var) 4838 vrc2 = RTEnvPutEx 4839 4840 AssertRCBreakStmt 4830 vrc2 = RTEnvPutEx(env, var); 4831 4832 AssertRCBreakStmt(vrc2, vrc = vrc2); 4841 4833 } 4842 4834 while (0); … … 4857 4849 const char VirtualBox_exe[] = "VirtualBox" HOSTSUFF_EXE; 4858 4850 # endif 4859 Assert(sz >= sizeof 4860 strcpy 4851 Assert(sz >= sizeof(VirtualBox_exe)); 4852 strcpy(cmd, VirtualBox_exe); 4861 4853 4862 4854 Utf8Str idStr = mData->mUuid.toString(); … … 4880 4872 { 4881 4873 const char VBoxSDL_exe[] = "VBoxSDL" HOSTSUFF_EXE; 4882 Assert(sz >= sizeof 4883 strcpy 4874 Assert(sz >= sizeof(VBoxSDL_exe)); 4875 strcpy(cmd, VBoxSDL_exe); 4884 4876 4885 4877 Utf8Str idStr = mData->mUuid.toString(); … … 4908 4900 { 4909 4901 const char VBoxHeadless_exe[] = "VBoxHeadless" HOSTSUFF_EXE; 4910 Assert(sz >= sizeof 4911 strcpy 4902 Assert(sz >= sizeof(VBoxHeadless_exe)); 4903 strcpy(cmd, VBoxHeadless_exe); 4912 4904 4913 4905 Utf8Str idStr = mData->mUuid.toString(); … … 4917 4909 # else 4918 4910 Utf8Str strName = mUserData->mName; 4919 const char * args[] = {szPath, "--comment", strName.c_str(), "--startvm", idStr.c_str(), 0, 0, 0 };4911 const char * args[] = {szPath, "--comment", strName.c_str(), "--startvm", idStr.c_str(), 0, 0, 0 }; 4920 4912 # endif 4921 4913 #ifdef VBOX_WITH_VRDP … … 4940 4932 else 4941 4933 { 4942 RTEnvDestroy 4934 RTEnvDestroy(env); 4943 4935 return setError(E_INVALIDARG, 4944 4936 tr("Invalid session type: '%s'"), … … 4946 4938 } 4947 4939 4948 RTEnvDestroy 4940 RTEnvDestroy(env); 4949 4941 4950 4942 if (RT_FAILURE(vrc)) … … 4966 4958 /* inform the session that it will be a remote one */ 4967 4959 LogFlowThisFunc(("Calling AssignMachine (NULL)...\n")); 4968 HRESULT rc = aControl->AssignMachine 4960 HRESULT rc = aControl->AssignMachine(NULL); 4969 4961 LogFlowThisFunc(("AssignMachine (NULL) returned %08X\n", rc)); 4970 4962 … … 4994 4986 * (outside the lock). 4995 4987 */ 4996 HRESULT Machine::openExistingSession 4988 HRESULT Machine::openExistingSession(IInternalSessionControl *aControl) 4997 4989 { 4998 4990 LogFlowThisFuncEnter(); … … 5087 5079 * @note locks this object for reading. 5088 5080 */ 5089 #if defined 5090 bool Machine::isSessionOpen 5091 5092 5093 5094 #elif defined 5095 bool Machine::isSessionOpen 5096 5097 5098 5081 #if defined(RT_OS_WINDOWS) 5082 bool Machine::isSessionOpen(ComObjPtr<SessionMachine> &aMachine, 5083 ComPtr<IInternalSessionControl> *aControl /*= NULL*/, 5084 HANDLE *aIPCSem /*= NULL*/, 5085 bool aAllowClosing /*= false*/) 5086 #elif defined(RT_OS_OS2) 5087 bool Machine::isSessionOpen(ComObjPtr<SessionMachine> &aMachine, 5088 ComPtr<IInternalSessionControl> *aControl /*= NULL*/, 5089 HMTX *aIPCSem /*= NULL*/, 5090 bool aAllowClosing /*= false*/) 5099 5091 #else 5100 bool Machine::isSessionOpen 5101 5102 5092 bool Machine::isSessionOpen(ComObjPtr<SessionMachine> &aMachine, 5093 ComPtr<IInternalSessionControl> *aControl /*= NULL*/, 5094 bool aAllowClosing /*= false*/) 5103 5095 #endif 5104 5096 { 5105 5097 AutoLimitedCaller autoCaller(this); 5106 AssertComRCReturn 5098 AssertComRCReturn(autoCaller.rc(), false); 5107 5099 5108 5100 /* just return false for inaccessible machines */ … … 5122 5114 *aControl = mData->mSession.mDirectControl; 5123 5115 5124 #if defined (RT_OS_WINDOWS) || defined(RT_OS_OS2)5116 #if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) 5125 5117 /* Additional session data */ 5126 5118 if (aIPCSem != NULL) … … 5143 5135 * @note locks this object for reading. 5144 5136 */ 5145 #if defined (RT_OS_WINDOWS) || defined(RT_OS_OS2)5146 bool Machine::isSessionSpawning 5137 #if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) 5138 bool Machine::isSessionSpawning(RTPROCESS *aPID /*= NULL*/) 5147 5139 #else 5148 5140 bool Machine::isSessionSpawning() … … 5150 5142 { 5151 5143 AutoLimitedCaller autoCaller(this); 5152 AssertComRCReturn 5144 AssertComRCReturn(autoCaller.rc(), false); 5153 5145 5154 5146 /* just return false for inaccessible machines */ … … 5160 5152 if (mData->mSession.mState == SessionState_Spawning) 5161 5153 { 5162 #if defined (RT_OS_WINDOWS) || defined(RT_OS_OS2)5154 #if defined(RT_OS_WINDOWS) || defined(RT_OS_OS2) 5163 5155 /* Additional session data */ 5164 5156 if (aPID != NULL) … … 5249 5241 mData->mSession.mState = SessionState_Closed; 5250 5242 5251 /* finalize the progress after setting the state , for consistency*/5243 /* finalize the progress after setting the state */ 5252 5244 if (!mData->mSession.mProgress.isNull()) 5253 5245 { … … 5380 5372 { 5381 5373 /* we may have had implicit modifications we want to cancel on failure*/ 5382 rollback 5374 rollback(false /* aNotify */); 5383 5375 } 5384 5376 … … 5405 5397 * @note Locks this object for writing. 5406 5398 */ 5407 HRESULT Machine::addStateDependency 5408 5409 5399 HRESULT Machine::addStateDependency(StateDependency aDepType /* = AnyStateDep */, 5400 MachineState_T *aState /* = NULL */, 5401 BOOL *aRegistered /* = NULL */) 5410 5402 { 5411 5403 AutoCaller autoCaller(this); … … 5452 5444 { 5453 5445 AutoCaller autoCaller(this); 5454 AssertComRCReturnVoid 5446 AssertComRCReturnVoid(autoCaller.rc()); 5455 5447 5456 5448 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 5457 5449 5458 AssertReturnVoid (mData->mMachineStateDeps != 05459 /* releaseStateDependency() w/o addStateDependency()? */);5450 /* releaseStateDependency() w/o addStateDependency()? */ 5451 AssertReturnVoid(mData->mMachineStateDeps != 0); 5460 5452 -- mData->mMachineStateDeps; 5461 5453 … … 5563 5555 AutoCaller autoCaller(this); 5564 5556 AssertComRCReturnRC(autoCaller.rc()); 5565 AssertComRCReturn 5566 5557 AssertComRCReturn(autoCaller.state() == InInit || 5558 autoCaller.state() == Limited, E_FAIL); 5567 5559 5568 5560 AssertReturn(!mData->mAccessible, E_FAIL); … … 5716 5708 continue; 5717 5709 HRESULT rc = hd->detachFrom(mData->mUuid, getSnapshotId()); 5718 AssertComRC 5710 AssertComRC(rc); 5719 5711 } 5720 5712 } … … 5760 5752 void Machine::ensureNoStateDependencies() 5761 5753 { 5762 AssertReturnVoid 5754 AssertReturnVoid(isWriteLockOnCurrentThread()); 5763 5755 5764 5756 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 5769 5761 /* lazy semaphore creation */ 5770 5762 if (mData->mMachineStateDepsSem == NIL_RTSEMEVENTMULTI) 5771 RTSemEventMultiCreate 5763 RTSemEventMultiCreate(&mData->mMachineStateDepsSem); 5772 5764 5773 5765 LogFlowThisFunc(("Waiting for state deps (%d) to drop to zero...\n", … … 5778 5770 /* reset the semaphore before waiting, the last dependant will signal 5779 5771 * it */ 5780 RTSemEventMultiReset 5772 RTSemEventMultiReset(mData->mMachineStateDepsSem); 5781 5773 5782 5774 alock.leave(); 5783 5775 5784 RTSemEventMultiWait 5776 RTSemEventMultiWait(mData->mMachineStateDepsSem, RT_INDEFINITE_WAIT); 5785 5777 5786 5778 alock.enter(); … … 5798 5790 * @note Locks this object for writing. 5799 5791 */ 5800 HRESULT Machine::setMachineState 5792 HRESULT Machine::setMachineState(MachineState_T aMachineState) 5801 5793 { 5802 5794 LogFlowThisFuncEnter(); … … 5804 5796 5805 5797 AutoCaller autoCaller(this); 5806 AssertComRCReturn 5798 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 5807 5799 5808 5800 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 5815 5807 mData->mMachineState = aMachineState; 5816 5808 5817 RTTimeNow 5809 RTTimeNow(&mData->mLastStateChange); 5818 5810 5819 5811 mParent->onMachineStateChange(mData->mUuid, aMachineState); … … 5838 5830 * must be called from under the object's lock! 5839 5831 */ 5840 HRESULT Machine::findSharedFolder 5841 5842 5832 HRESULT Machine::findSharedFolder(CBSTR aName, 5833 ComObjPtr<SharedFolder> &aSharedFolder, 5834 bool aSetError /* = false */) 5843 5835 { 5844 5836 bool found = false; … … 5905 5897 } 5906 5898 else 5907 unconst 5899 unconst(mData->mUuid) = mData->m_pMachineConfigFile->uuid; 5908 5900 5909 5901 /* name (required) */ … … 6365 6357 * @param aNode <HardDiskAttachments> node. 6366 6358 * @param aRegistered true when the machine is being loaded on VirtualBox 6367 * startup, or when a snapshot is being loaded (w chich6359 * startup, or when a snapshot is being loaded (which 6368 6360 * currently can happen on startup only) 6369 6361 * @param aSnapshotId pointer to the snapshot ID if this is a snapshot machine … … 6649 6641 } 6650 6642 6651 aSnapshot = mData->mFirstSnapshot->findChildOrSelf 6643 aSnapshot = mData->mFirstSnapshot->findChildOrSelf(aName); 6652 6644 6653 6645 if (!aSnapshot) … … 6673 6665 bool aSetError /* = false */) 6674 6666 { 6675 AssertReturn 6667 AssertReturn(!aName.isEmpty(), E_INVALIDARG); 6676 6668 6677 6669 for (StorageControllerList::const_iterator it = mStorageControllers->begin(); … … 6772 6764 { 6773 6765 newConfigDir.stripFilename(); 6774 newConfigDir = Utf8StrFmt 6766 newConfigDir = Utf8StrFmt("%s%c%s", 6775 6767 newConfigDir.raw(), RTPATH_DELIMITER, newName.raw()); 6776 6768 /* new dir and old dir cannot be equal here because of 'if' … … 6780 6772 { 6781 6773 /* perform real rename only if the machine is not new */ 6782 vrc = RTPathRename 6774 vrc = RTPathRename(configDir.raw(), newConfigDir.raw(), 0); 6783 6775 if (RT_FAILURE(vrc)) 6784 6776 { … … 6794 6786 } 6795 6787 6796 newConfigFile = Utf8StrFmt 6788 newConfigFile = Utf8StrFmt("%s%c%s.xml", 6797 6789 newConfigDir.raw(), RTPATH_DELIMITER, newName.raw()); 6798 6790 … … 6808 6800 { 6809 6801 /* perform real rename only if the machine is not new */ 6810 vrc = RTFileRename 6802 vrc = RTFileRename(configFile.raw(), newConfigFile.raw(), 0); 6811 6803 if (RT_FAILURE(vrc)) 6812 6804 { … … 6828 6820 /* try to get the relative path for mConfigFile */ 6829 6821 Utf8Str path = newConfigFile; 6830 mParent->calculateRelativePath 6822 mParent->calculateRelativePath(path, path); 6831 6823 mData->m_strConfigFile = path; 6832 6824 … … 6851 6843 path.raw() + configDir.length()); 6852 6844 mUserData->mSnapshotFolderFull = path; 6853 calculateRelativePath 6845 calculateRelativePath(path, path); 6854 6846 mUserData->mSnapshotFolder = path; 6855 6847 } … … 7082 7074 catch (...) 7083 7075 { 7084 rc = VirtualBox::handleUnexpectedExceptions 7076 rc = VirtualBox::handleUnexpectedExceptions(RT_SRC_POS); 7085 7077 } 7086 7078 … … 7109 7101 HRESULT Machine::saveAllSnapshots() 7110 7102 { 7111 AssertReturn 7103 AssertReturn(isWriteLockOnCurrentThread(), E_FAIL); 7112 7104 7113 7105 HRESULT rc = S_OK; … … 7141 7133 catch (...) 7142 7134 { 7143 rc = VirtualBox::handleUnexpectedExceptions 7135 rc = VirtualBox::handleUnexpectedExceptions(RT_SRC_POS); 7144 7136 } 7145 7137 … … 7485 7477 catch (...) 7486 7478 { 7487 rc = VirtualBox::handleUnexpectedExceptions 7479 rc = VirtualBox::handleUnexpectedExceptions(RT_SRC_POS); 7488 7480 } 7489 7481 … … 7535 7527 7536 7528 AutoCaller autoCaller(this); 7537 AssertComRCReturn 7529 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 7538 7530 7539 7531 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 7565 7557 Medium* pHD = pAtt->getMedium(); 7566 7558 Assert(pHD); 7567 rc = pHD->LockRead 7559 rc = pHD->LockRead(NULL); 7568 7560 if (FAILED(rc)) throw rc; 7569 7561 lockedMedia.push_back(pHD); … … 7691 7683 if (FAILED(rc)) 7692 7684 { 7693 MultiResultRef mrc 7685 MultiResultRef mrc(rc); 7694 7686 7695 7687 mrc = deleteImplicitDiffs(pfNeedsSaveSettings); … … 7714 7706 { 7715 7707 AutoCaller autoCaller(this); 7716 AssertComRCReturn 7708 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 7717 7709 7718 7710 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 7742 7734 rc = hd->detachFrom(mData->mUuid); 7743 7735 AssertComRC(rc); 7744 implicitAtts.push_back 7736 implicitAtts.push_back(*it); 7745 7737 continue; 7746 7738 } … … 7761 7753 mMediaData.rollback(); 7762 7754 7763 MultiResult mrc 7755 MultiResult mrc(S_OK); 7764 7756 7765 7757 /* delete unused implicit diffs */ … … 7775 7767 && oldState != MachineState_DeletingSnapshot 7776 7768 ) 7777 setMachineState 7769 setMachineState(MachineState_SettingUp); 7778 7770 7779 7771 alock.leave(); … … 7803 7795 if (mData->mMachineState == MachineState_SettingUp) 7804 7796 { 7805 setMachineState 7797 setMachineState(oldState); 7806 7798 } 7807 7799 } … … 7909 7901 { 7910 7902 AutoCaller autoCaller(this); 7911 AssertComRCReturnVoid 7903 AssertComRCReturnVoid(autoCaller.rc()); 7912 7904 7913 7905 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 8137 8129 *aSettingsDir = settingsDir; 8138 8130 8139 return Bstr 8131 return Bstr(dirName) == mUserData->mName; 8140 8132 } 8141 8133 … … 8150 8142 { 8151 8143 AutoCaller autoCaller(this); 8152 AssertComRCReturn (autoCaller.rc(), (void)0);8144 AssertComRCReturn(autoCaller.rc(), (void)0); 8153 8145 8154 8146 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 8281 8273 { 8282 8274 AutoCaller autoCaller(this); 8283 AssertComRCReturnVoid 8284 8285 AutoCaller peerCaller 8286 AssertComRCReturnVoid 8275 AssertComRCReturnVoid(autoCaller.rc()); 8276 8277 AutoCaller peerCaller(mPeer); 8278 AssertComRCReturnVoid(peerCaller.rc()); 8287 8279 8288 8280 AutoMultiWriteLock2 alock(mPeer, this COMMA_LOCKVAL_SRC_POS); … … 8912 8904 Assert(mData->mSession.mState == SessionState_Closing); 8913 8905 Assert(!mData->mSession.mProgress.isNull()); 8914 8915 mData->mSession.mProgress->notifyComplete (S_OK); 8906 } 8907 if (mData->mSession.mProgress) 8908 { 8909 if (aReason == Uninit::Normal) 8910 mData->mSession.mProgress->notifyComplete(S_OK); 8911 else 8912 mData->mSession.mProgress->notifyComplete(E_FAIL, 8913 COM_IIDOF(ISession), 8914 getComponentName(), 8915 tr("The VM session was aborted")); 8916 8916 mData->mSession.mProgress.setNull(); 8917 8917 } … … 8929 8929 #if defined(RT_OS_WINDOWS) 8930 8930 if (mIPCSem) 8931 ::CloseHandle 8931 ::CloseHandle(mIPCSem); 8932 8932 mIPCSem = NULL; 8933 8933 #elif defined(RT_OS_OS2) 8934 8934 if (mIPCSem != NULLHANDLE) 8935 ::DosCloseMutexSem 8935 ::DosCloseMutexSem(mIPCSem); 8936 8936 mIPCSem = NULLHANDLE; 8937 8937 #elif defined(VBOX_WITH_SYS_V_IPC_SESSION_WATCHER) 8938 8938 if (mIPCSem >= 0) 8939 ::semctl 8939 ::semctl(mIPCSem, 0, IPC_RMID); 8940 8940 mIPCSem = -1; 8941 8941 # ifdef VBOX_WITH_NEW_SYS_V_KEYGEN … … 8947 8947 8948 8948 /* fire an event */ 8949 mParent->onSessionStateChange 8949 mParent->onSessionStateChange(mData->mUuid, SessionState_Closed); 8950 8950 8951 8951 uninitDataAndChildObjects(); … … 8985 8985 { 8986 8986 AutoCaller autoCaller(this); 8987 AssertComRCReturn 8987 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 8988 8988 8989 8989 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 8997 8997 * @note Locks the same as #setMachineState() does. 8998 8998 */ 8999 STDMETHODIMP SessionMachine::UpdateState 9000 { 9001 return setMachineState 8999 STDMETHODIMP SessionMachine::UpdateState(MachineState_T aMachineState) 9000 { 9001 return setMachineState(aMachineState); 9002 9002 } 9003 9003 … … 9005 9005 * @note Locks this object for reading. 9006 9006 */ 9007 STDMETHODIMP SessionMachine::GetIPCId 9008 { 9009 AutoCaller autoCaller(this); 9010 AssertComRCReturn 9007 STDMETHODIMP SessionMachine::GetIPCId(BSTR *aId) 9008 { 9009 AutoCaller autoCaller(this); 9010 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9011 9011 9012 9012 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 9028 9028 9029 9029 /** 9030 * @note Locks this object for writing. 9031 */ 9032 STDMETHODIMP SessionMachine::SetPowerUpInfo(IVirtualBoxErrorInfo *aError) 9033 { 9034 AutoCaller autoCaller(this); 9035 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9036 9037 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 9038 9039 if ( mData->mSession.mState == SessionState_Open 9040 && mData->mSession.mProgress) 9041 { 9042 /* Finalize the progress, since the remote session has completed 9043 * power on (successful or not). */ 9044 if (aError) 9045 { 9046 /* Transfer error information immediately, as the 9047 * IVirtualBoxErrorInfo object is most likely transient. */ 9048 HRESULT rc; 9049 LONG rRc = S_OK; 9050 rc = aError->COMGETTER(ResultCode)(&rRc); 9051 AssertComRCReturnRC(rc); 9052 Bstr rIID; 9053 rc = aError->COMGETTER(InterfaceID)(rIID.asOutParam()); 9054 AssertComRCReturnRC(rc); 9055 Bstr rComponent; 9056 rc = aError->COMGETTER(Component)(rComponent.asOutParam()); 9057 AssertComRCReturnRC(rc); 9058 Bstr rText; 9059 rc = aError->COMGETTER(Text)(rText.asOutParam()); 9060 AssertComRCReturnRC(rc); 9061 mData->mSession.mProgress->notifyComplete(rRc, Guid(rIID), rComponent, Utf8Str(rText).raw()); 9062 } 9063 else 9064 mData->mSession.mProgress->notifyComplete(S_OK); 9065 mData->mSession.mProgress.setNull(); 9066 9067 return S_OK; 9068 } 9069 else 9070 return VBOX_E_INVALID_OBJECT_STATE; 9071 } 9072 9073 /** 9030 9074 * Goes through the USB filters of the given machine to see if the given 9031 9075 * device matches any filter or not. … … 9033 9077 * @note Locks the same as USBController::hasMatchingFilter() does. 9034 9078 */ 9035 STDMETHODIMP SessionMachine::RunUSBDeviceFilters 9036 9037 9079 STDMETHODIMP SessionMachine::RunUSBDeviceFilters(IUSBDevice *aUSBDevice, 9080 BOOL *aMatched, 9081 ULONG *aMaskedIfs) 9038 9082 { 9039 9083 LogFlowThisFunc(("\n")); 9040 9084 9041 CheckComArgNotNull 9085 CheckComArgNotNull(aUSBDevice); 9042 9086 CheckComArgOutPointerValid(aMatched); 9043 9087 9044 9088 AutoCaller autoCaller(this); 9045 AssertComRCReturn 9089 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9046 9090 9047 9091 #ifdef VBOX_WITH_USB 9048 *aMatched = mUSBController->hasMatchingFilter 9092 *aMatched = mUSBController->hasMatchingFilter(aUSBDevice, aMaskedIfs); 9049 9093 #else 9050 9094 NOREF(aUSBDevice); … … 9059 9103 * @note Locks the same as Host::captureUSBDevice() does. 9060 9104 */ 9061 STDMETHODIMP SessionMachine::CaptureUSBDevice 9105 STDMETHODIMP SessionMachine::CaptureUSBDevice(IN_BSTR aId) 9062 9106 { 9063 9107 LogFlowThisFunc(("\n")); … … 9073 9117 USBProxyService *service = mParent->host()->usbProxyService(); 9074 9118 AssertReturn(service, E_FAIL); 9075 return service->captureDeviceForVM 9119 return service->captureDeviceForVM(this, Guid(aId)); 9076 9120 #else 9077 9121 NOREF(aId); … … 9083 9127 * @note Locks the same as Host::detachUSBDevice() does. 9084 9128 */ 9085 STDMETHODIMP SessionMachine::DetachUSBDevice 9129 STDMETHODIMP SessionMachine::DetachUSBDevice(IN_BSTR aId, BOOL aDone) 9086 9130 { 9087 9131 LogFlowThisFunc(("\n")); 9088 9132 9089 9133 AutoCaller autoCaller(this); 9090 AssertComRCReturn 9134 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9091 9135 9092 9136 #ifdef VBOX_WITH_USB 9093 9137 USBProxyService *service = mParent->host()->usbProxyService(); 9094 9138 AssertReturn(service, E_FAIL); 9095 return service->detachDeviceFromVM 9139 return service->detachDeviceFromVM(this, Guid(aId), !!aDone); 9096 9140 #else 9097 9141 NOREF(aId); … … 9114 9158 9115 9159 AutoCaller autoCaller(this); 9116 AssertComRCReturn 9160 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9117 9161 9118 9162 #ifdef VBOX_WITH_USB 9119 HRESULT rc = mUSBController->notifyProxy 9163 HRESULT rc = mUSBController->notifyProxy(true /* aInsertFilters */); 9120 9164 AssertComRC(rc); 9121 NOREF 9165 NOREF(rc); 9122 9166 9123 9167 USBProxyService *service = mParent->host()->usbProxyService(); 9124 9168 AssertReturn(service, E_FAIL); 9125 return service->autoCaptureDevicesForVM 9169 return service->autoCaptureDevicesForVM(this); 9126 9170 #else 9127 9171 return S_OK; … … 9139 9183 * @note Locks what called methods lock. 9140 9184 */ 9141 STDMETHODIMP SessionMachine::DetachAllUSBDevices 9185 STDMETHODIMP SessionMachine::DetachAllUSBDevices(BOOL aDone) 9142 9186 { 9143 9187 LogFlowThisFunc(("\n")); 9144 9188 9145 9189 AutoCaller autoCaller(this); 9146 AssertComRCReturn 9190 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9147 9191 9148 9192 #ifdef VBOX_WITH_USB 9149 HRESULT rc = mUSBController->notifyProxy 9193 HRESULT rc = mUSBController->notifyProxy(false /* aInsertFilters */); 9150 9194 AssertComRC(rc); 9151 NOREF 9195 NOREF(rc); 9152 9196 9153 9197 USBProxyService *service = mParent->host()->usbProxyService(); 9154 9198 AssertReturn(service, E_FAIL); 9155 return service->detachAllDevicesFromVM 9199 return service->detachAllDevicesFromVM(this, !!aDone, false /* aAbnormal */); 9156 9200 #else 9157 9201 NOREF(aDone); … … 9163 9207 * @note Locks this object for writing. 9164 9208 */ 9165 STDMETHODIMP SessionMachine::OnSessionEnd 9166 9209 STDMETHODIMP SessionMachine::OnSessionEnd(ISession *aSession, 9210 IProgress **aProgress) 9167 9211 { 9168 9212 LogFlowThisFuncEnter(); … … 9181 9225 9182 9226 /* get IInternalSessionControl interface */ 9183 ComPtr<IInternalSessionControl> control 9227 ComPtr<IInternalSessionControl> control(aSession); 9184 9228 9185 9229 ComAssertRet(!control.isNull(), E_INVALIDARG); … … 9205 9249 LogFlowThisFunc(("Direct control is set to NULL\n")); 9206 9250 9251 if (mData->mSession.mProgress) 9252 { 9253 /* finalize the progress, someone might wait if a frontend 9254 * closes the session before powering on the VM. */ 9255 mData->mSession.mProgress->notifyComplete(E_FAIL, 9256 COM_IIDOF(ISession), 9257 getComponentName(), 9258 tr("The VM session was closed before any attempt to power it on")); 9259 mData->mSession.mProgress.setNull(); 9260 } 9261 9207 9262 /* Create the progress object the client will use to wait until 9208 9263 * #checkForDeath() is called to uninitialize this session object after 9209 9264 * it releases the IPC semaphore. */ 9265 Assert(mData->mSession.mProgress.isNull()); 9210 9266 ComObjPtr<Progress> progress; 9211 9267 progress.createObject(); 9212 progress->init (mParent, static_cast <IMachine *>(mPeer),9213 Bstr (tr("Closing session")), FALSE /* aCancelable */);9268 progress->init(mParent, static_cast<IMachine *>(mPeer), 9269 Bstr(tr("Closing session")), FALSE /* aCancelable */); 9214 9270 progress.queryInterfaceTo(aProgress); 9215 9271 mData->mSession.mProgress = progress; … … 9222 9278 while (it != mData->mSession.mRemoteControls.end()) 9223 9279 { 9224 if (control.equalsTo 9280 if (control.equalsTo(*it)) 9225 9281 break; 9226 9282 ++it; 9227 9283 } 9228 9284 BOOL found = it != mData->mSession.mRemoteControls.end(); 9229 ComAssertMsgRet 9285 ComAssertMsgRet(found, ("The session is not found in the session list!"), 9230 9286 E_INVALIDARG); 9231 mData->mSession.mRemoteControls.remove 9287 mData->mSession.mRemoteControls.remove(*it); 9232 9288 } 9233 9289 … … 9239 9295 * @note Locks this object for writing. 9240 9296 */ 9241 STDMETHODIMP SessionMachine::BeginSavingState 9297 STDMETHODIMP SessionMachine::BeginSavingState(IProgress *aProgress, BSTR *aStateFilePath) 9242 9298 { 9243 9299 LogFlowThisFuncEnter(); … … 9247 9303 9248 9304 AutoCaller autoCaller(this); 9249 AssertComRCReturn 9305 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9250 9306 9251 9307 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 9259 9315 /* memorize the progress ID and add it to the global collection */ 9260 9316 Bstr progressId; 9261 HRESULT rc = aProgress->COMGETTER(Id) 9262 AssertComRCReturn 9263 rc = mParent->addProgress 9264 AssertComRCReturn 9317 HRESULT rc = aProgress->COMGETTER(Id)(progressId.asOutParam()); 9318 AssertComRCReturn(rc, rc); 9319 rc = mParent->addProgress(aProgress); 9320 AssertComRCReturn(rc, rc); 9265 9321 9266 9322 Bstr stateFilePath; … … 9268 9324 if (mData->mMachineState == MachineState_Paused) 9269 9325 { 9270 stateFilePath = Utf8StrFmt 9271 9272 9326 stateFilePath = Utf8StrFmt("%ls%c{%RTuuid}.sav", 9327 mUserData->mSnapshotFolderFull.raw(), 9328 RTPATH_DELIMITER, mData->mUuid.raw()); 9273 9329 } 9274 9330 … … 9279 9335 9280 9336 /* set the state to Saving (this is expected by Console::SaveState()) */ 9281 setMachineState 9337 setMachineState(MachineState_Saving); 9282 9338 9283 9339 stateFilePath.cloneTo(aStateFilePath); … … 9289 9345 * @note Locks mParent + this object for writing. 9290 9346 */ 9291 STDMETHODIMP SessionMachine::EndSavingState 9347 STDMETHODIMP SessionMachine::EndSavingState(BOOL aSuccess) 9292 9348 { 9293 9349 LogFlowThisFunc(("\n")); 9294 9350 9295 9351 AutoCaller autoCaller(this); 9296 AssertComRCReturn 9352 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9297 9353 9298 9354 /* endSavingState() need mParent lock */ … … 9312 9368 */ 9313 9369 if (aSuccess) 9314 setMachineState 9370 setMachineState(MachineState_Saved); 9315 9371 else 9316 setMachineState 9317 9318 return endSavingState 9372 setMachineState(mSnapshotData.mLastState); 9373 9374 return endSavingState(aSuccess); 9319 9375 } 9320 9376 … … 9322 9378 * @note Locks this object for writing. 9323 9379 */ 9324 STDMETHODIMP SessionMachine::AdoptSavedState 9380 STDMETHODIMP SessionMachine::AdoptSavedState(IN_BSTR aSavedStateFile) 9325 9381 { 9326 9382 LogFlowThisFunc(("\n")); … … 9329 9385 9330 9386 AutoCaller autoCaller(this); 9331 AssertComRCReturn 9387 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9332 9388 9333 9389 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 9351 9407 * update the settings file */ 9352 9408 9353 return setMachineState 9409 return setMachineState(MachineState_Saved); 9354 9410 } 9355 9411 … … 9365 9421 9366 9422 AutoCaller autoCaller(this); 9367 AssertComRCReturn 9423 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9368 9424 9369 9425 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 9375 9431 9376 9432 size_t cEntries = mHWData->mGuestProperties.size(); 9377 com::SafeArray<BSTR> names 9378 com::SafeArray<BSTR> values 9379 com::SafeArray<ULONG64> timestamps 9380 com::SafeArray<BSTR> flags 9433 com::SafeArray<BSTR> names(cEntries); 9434 com::SafeArray<BSTR> values(cEntries); 9435 com::SafeArray<ULONG64> timestamps(cEntries); 9436 com::SafeArray<BSTR> flags(cEntries); 9381 9437 unsigned i = 0; 9382 9438 for (HWData::GuestPropertyList::iterator it = mHWData->mGuestProperties.begin(); … … 9638 9694 #if defined(RT_OS_WINDOWS) 9639 9695 9640 AssertMsg 9696 AssertMsg(mIPCSem, ("semaphore must be created")); 9641 9697 9642 9698 /* release the IPC mutex */ 9643 ::ReleaseMutex 9699 ::ReleaseMutex(mIPCSem); 9644 9700 9645 9701 terminated = true; … … 9647 9703 #elif defined(RT_OS_OS2) 9648 9704 9649 AssertMsg 9705 AssertMsg(mIPCSem, ("semaphore must be created")); 9650 9706 9651 9707 /* release the IPC mutex */ 9652 ::DosReleaseMutexSem 9708 ::DosReleaseMutexSem(mIPCSem); 9653 9709 9654 9710 terminated = true; … … 9656 9712 #elif defined(VBOX_WITH_SYS_V_IPC_SESSION_WATCHER) 9657 9713 9658 AssertMsg 9659 9660 int val = ::semctl 9714 AssertMsg(mIPCSem >= 0, ("semaphore must be created")); 9715 9716 int val = ::semctl(mIPCSem, 0, GETVAL); 9661 9717 if (val > 0) 9662 9718 { … … 9672 9728 9673 9729 if (terminated) 9674 uninit 9730 uninit(reason); 9675 9731 9676 9732 return terminated; … … 9680 9736 * @note Locks this object for reading. 9681 9737 */ 9682 HRESULT SessionMachine::onNetworkAdapterChange 9738 HRESULT SessionMachine::onNetworkAdapterChange(INetworkAdapter *networkAdapter, BOOL changeAdapter) 9683 9739 { 9684 9740 LogFlowThisFunc(("\n")); 9685 9741 9686 9742 AutoCaller autoCaller(this); 9687 AssertComRCReturn 9743 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9688 9744 9689 9745 ComPtr<IInternalSessionControl> directControl; … … 9697 9753 return S_OK; 9698 9754 9699 return directControl->OnNetworkAdapterChange 9755 return directControl->OnNetworkAdapterChange(networkAdapter, changeAdapter); 9700 9756 } 9701 9757 … … 9703 9759 * @note Locks this object for reading. 9704 9760 */ 9705 HRESULT SessionMachine::onSerialPortChange 9761 HRESULT SessionMachine::onSerialPortChange(ISerialPort *serialPort) 9706 9762 { 9707 9763 LogFlowThisFunc(("\n")); 9708 9764 9709 9765 AutoCaller autoCaller(this); 9710 AssertComRCReturn 9766 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9711 9767 9712 9768 ComPtr<IInternalSessionControl> directControl; … … 9720 9776 return S_OK; 9721 9777 9722 return directControl->OnSerialPortChange 9778 return directControl->OnSerialPortChange(serialPort); 9723 9779 } 9724 9780 … … 9726 9782 * @note Locks this object for reading. 9727 9783 */ 9728 HRESULT SessionMachine::onParallelPortChange 9784 HRESULT SessionMachine::onParallelPortChange(IParallelPort *parallelPort) 9729 9785 { 9730 9786 LogFlowThisFunc(("\n")); … … 9749 9805 * @note Locks this object for reading. 9750 9806 */ 9751 HRESULT SessionMachine::onStorageControllerChange 9807 HRESULT SessionMachine::onStorageControllerChange() 9752 9808 { 9753 9809 LogFlowThisFunc(("\n")); 9754 9810 9755 9811 AutoCaller autoCaller(this); 9756 AssertComRCReturn 9812 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9757 9813 9758 9814 ComPtr<IInternalSessionControl> directControl; … … 9766 9822 return S_OK; 9767 9823 9768 return directControl->OnStorageControllerChange 9824 return directControl->OnStorageControllerChange(); 9769 9825 } 9770 9826 … … 9777 9833 9778 9834 AutoCaller autoCaller(this); 9779 AssertComRCReturn 9835 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9780 9836 9781 9837 ComPtr<IInternalSessionControl> directControl; … … 9823 9879 9824 9880 AutoCaller autoCaller(this); 9825 AssertComRCReturn 9881 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9826 9882 9827 9883 ComPtr<IInternalSessionControl> directControl; … … 9846 9902 9847 9903 AutoCaller autoCaller(this); 9848 AssertComRCReturn 9904 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 9849 9905 9850 9906 ComPtr<IInternalSessionControl> directControl; … … 9881 9937 return S_OK; 9882 9938 9883 return directControl->OnSharedFolderChange 9939 return directControl->OnSharedFolderChange(FALSE /* aGlobal */); 9884 9940 } 9885 9941 … … 9890 9946 * @note Caller must have requested machine read lock. 9891 9947 */ 9892 bool SessionMachine::hasMatchingUSBFilter 9948 bool SessionMachine::hasMatchingUSBFilter(const ComObjPtr<HostUSBDevice> &aDevice, ULONG *aMaskedIfs) 9893 9949 { 9894 9950 AutoCaller autoCaller(this); … … 9910 9966 /** @todo Live Migration: snapshoting & teleporting. Need to fend things of 9911 9967 * elsewhere... */ 9912 return mUSBController->hasMatchingFilter 9968 return mUSBController->hasMatchingFilter(aDevice, aMaskedIfs); 9913 9969 default: break; 9914 9970 } … … 9923 9979 * @note The calls shall hold no locks. Will temporarily lock this object for reading. 9924 9980 */ 9925 HRESULT SessionMachine::onUSBDeviceAttach 9926 9927 9981 HRESULT SessionMachine::onUSBDeviceAttach(IUSBDevice *aDevice, 9982 IVirtualBoxErrorInfo *aError, 9983 ULONG aMaskedIfs) 9928 9984 { 9929 9985 LogFlowThisFunc(("\n")); … … 9947 10003 9948 10004 /* No locks should be held at this point. */ 9949 AssertMsg (RTLockValidatorWriteLockGetCount (RTThreadSelf()) == 0, ("%d\n", RTLockValidatorWriteLockGetCount(RTThreadSelf())));9950 AssertMsg (RTLockValidatorReadLockGetCount (RTThreadSelf()) == 0, ("%d\n", RTLockValidatorReadLockGetCount(RTThreadSelf())));9951 9952 return directControl->OnUSBDeviceAttach 10005 AssertMsg(RTLockValidatorWriteLockGetCount(RTThreadSelf()) == 0, ("%d\n", RTLockValidatorWriteLockGetCount(RTThreadSelf()))); 10006 AssertMsg(RTLockValidatorReadLockGetCount(RTThreadSelf()) == 0, ("%d\n", RTLockValidatorReadLockGetCount(RTThreadSelf()))); 10007 10008 return directControl->OnUSBDeviceAttach(aDevice, aError, aMaskedIfs); 9953 10009 } 9954 10010 … … 9956 10012 * @note The calls shall hold no locks. Will temporarily lock this object for reading. 9957 10013 */ 9958 HRESULT SessionMachine::onUSBDeviceDetach 9959 10014 HRESULT SessionMachine::onUSBDeviceDetach(IN_BSTR aId, 10015 IVirtualBoxErrorInfo *aError) 9960 10016 { 9961 10017 LogFlowThisFunc(("\n")); … … 9979 10035 9980 10036 /* No locks should be held at this point. */ 9981 AssertMsg (RTLockValidatorWriteLockGetCount (RTThreadSelf()) == 0, ("%d\n", RTLockValidatorWriteLockGetCount(RTThreadSelf())));9982 AssertMsg (RTLockValidatorReadLockGetCount (RTThreadSelf()) == 0, ("%d\n", RTLockValidatorReadLockGetCount(RTThreadSelf())));9983 9984 return directControl->OnUSBDeviceDetach 10037 AssertMsg(RTLockValidatorWriteLockGetCount(RTThreadSelf()) == 0, ("%d\n", RTLockValidatorWriteLockGetCount(RTThreadSelf()))); 10038 AssertMsg(RTLockValidatorReadLockGetCount(RTThreadSelf()) == 0, ("%d\n", RTLockValidatorReadLockGetCount(RTThreadSelf()))); 10039 10040 return directControl->OnUSBDeviceDetach(aId, aError); 9985 10041 } 9986 10042 … … 9997 10053 * @note Locks mParent + this objects for writing. 9998 10054 */ 9999 HRESULT SessionMachine::endSavingState 10055 HRESULT SessionMachine::endSavingState(BOOL aSuccess) 10000 10056 { 10001 10057 LogFlowThisFuncEnter(); 10002 10058 10003 10059 AutoCaller autoCaller(this); 10004 AssertComRCReturn 10060 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 10005 10061 10006 10062 /* saveSettings() needs mParent lock */ … … 10057 10113 { 10058 10114 AutoCaller autoCaller(this); 10059 AssertComRCReturn 10115 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 10060 10116 10061 10117 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 10180 10236 { 10181 10237 AutoCaller autoCaller(this); 10182 AssertComRCReturnVoid 10238 AssertComRCReturnVoid(autoCaller.rc()); 10183 10239 10184 10240 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 10196 10252 MediumState_T state; 10197 10253 if (it->second) 10198 rc = it->first->UnlockWrite 10254 rc = it->first->UnlockWrite(&state); 10199 10255 else 10200 rc = it->first->UnlockRead 10256 rc = it->first->UnlockRead(&state); 10201 10257 10202 10258 /* The second can happen if an object was re-locked in … … 10214 10270 * @note Locks this object for writing. 10215 10271 */ 10216 HRESULT SessionMachine::setMachineState 10272 HRESULT SessionMachine::setMachineState(MachineState_T aMachineState) 10217 10273 { 10218 10274 LogFlowThisFuncEnter(); … … 10220 10276 10221 10277 AutoCaller autoCaller(this); 10222 AssertComRCReturn 10278 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 10223 10279 10224 10280 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); … … 10358 10414 10359 10415 /* redirect to the underlying peer machine */ 10360 mPeer->setMachineState 10416 mPeer->setMachineState(aMachineState); 10361 10417 10362 10418 if ( aMachineState == MachineState_PoweredOff … … 10381 10437 } 10382 10438 10383 rc = saveStateSettings 10439 rc = saveStateSettings(stsFlags); 10384 10440 10385 10441 if ( ( oldMachineState != MachineState_PoweredOff … … 10410 10466 { 10411 10467 AutoCaller autoCaller(this); 10412 AssertComRCReturn 10468 AssertComRCReturn(autoCaller.rc(), autoCaller.rc()); 10413 10469 10414 10470 ComPtr<IInternalSessionControl> directControl; … … 10433 10489 } 10434 10490 10435 return directControl->UpdateMachineState 10436 } 10491 return directControl->UpdateMachineState(mData->mMachineState); 10492 } -
trunk/src/VBox/Main/idl/VirtualBox.xidl
r26295 r26323 2689 2689 console through it is invalid. It is recommended to use 2690 2690 <link to="IProgress::waitForCompletion" /> or similar calls to wait for 2691 completion. 2691 completion. Completion is signalled when the VM is powered on. Error 2692 messages etc. can be queried via the progress object, if available. 2692 2693 2693 2694 As with all <link to="ISession" /> objects, it is recommended to call … … 3759 3760 </method> 3760 3761 3762 <method name="setPowerUpInfo"> 3763 <desc> 3764 Transfers success (@c null) or error information for this session. 3765 This method updates the progress object to signal completion of the 3766 <link to="IVirtualBox::openRemoteSession"/> method if appropriate, 3767 which means that the progress object returned by 3768 <link to="IConsole::powerUp"/>. 3769 </desc> 3770 <param name="error" type="IVirtualBoxErrorInfo" dir="in"/> 3771 </method> 3772 3761 3773 <method name="runUSBDeviceFilters"> 3762 3774 <desc> -
trunk/src/VBox/Main/include/MachineImpl.h
r26295 r26323 829 829 STDMETHOD(UpdateState)(MachineState_T machineState); 830 830 STDMETHOD(GetIPCId)(BSTR *id); 831 STDMETHOD(SetPowerUpInfo)(IVirtualBoxErrorInfo *aError); 831 832 STDMETHOD(RunUSBDeviceFilters)(IUSBDevice *aUSBDevice, BOOL *aMatched, ULONG *aMaskedIfs); 832 833 STDMETHOD(CaptureUSBDevice)(IN_BSTR aId);
Note:
See TracChangeset
for help on using the changeset viewer.