Changeset 71560 in vbox
- Timestamp:
- Mar 29, 2018 11:00:30 AM (7 years ago)
- Location:
- trunk/src/VBox/Main/src-client
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Main/src-client/GuestCtrlImpl.cpp
r71406 r71560 372 372 #else /* VBOX_WITH_GUEST_CONTROL */ 373 373 374 LogFlowFuncEnter(); 374 AutoCaller autoCaller(this); 375 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 375 376 376 377 /* Do not allow anonymous sessions (with system rights) with public API. */ 377 378 if (RT_UNLIKELY(!aUser.length())) 378 379 return setError(E_INVALIDARG, tr("No user name specified")); 380 381 LogFlowFuncEnter(); 379 382 380 383 GuestSessionStartupInfo startupInfo; -
trunk/src/VBox/Main/src-client/GuestDirectoryImpl.cpp
r71406 r71560 334 334 HRESULT GuestDirectory::close() 335 335 { 336 LogFlowThisFuncEnter();337 338 336 AutoCaller autoCaller(this); 339 337 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 338 339 LogFlowThisFuncEnter(); 340 340 341 341 HRESULT hr = S_OK; … … 369 369 HRESULT GuestDirectory::read(ComPtr<IFsObjInfo> &aObjInfo) 370 370 { 371 LogFlowThisFuncEnter();372 373 371 AutoCaller autoCaller(this); 374 372 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 373 374 LogFlowThisFuncEnter(); 375 375 376 376 HRESULT hr = S_OK; -
trunk/src/VBox/Main/src-client/GuestFileImpl.cpp
r71406 r71560 1177 1177 HRESULT GuestFile::close() 1178 1178 { 1179 AutoCaller autoCaller(this); 1180 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1181 1179 1182 LogFlowThisFuncEnter(); 1180 1183 … … 1217 1220 HRESULT GuestFile::read(ULONG aToRead, ULONG aTimeoutMS, std::vector<BYTE> &aData) 1218 1221 { 1222 AutoCaller autoCaller(this); 1223 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1224 1219 1225 if (aToRead == 0) 1220 1226 return setError(E_INVALIDARG, tr("The size to read is zero")); 1227 1228 LogFlowThisFuncEnter(); 1221 1229 1222 1230 aData.resize(aToRead); … … 1253 1261 1254 1262 { 1263 AutoCaller autoCaller(this); 1264 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1265 1255 1266 if (aToRead == 0) 1256 1267 return setError(E_INVALIDARG, tr("The size to read is zero")); 1268 1269 LogFlowThisFuncEnter(); 1257 1270 1258 1271 aData.resize(aToRead); … … 1288 1301 HRESULT GuestFile::seek(LONG64 aOffset, FileSeekOrigin_T aWhence, LONG64 *aNewOffset) 1289 1302 { 1290 LogFlowThisFuncEnter(); 1303 AutoCaller autoCaller(this); 1304 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1291 1305 1292 1306 HRESULT hr = S_OK; … … 1311 1325 break; /* Never reached. */ 1312 1326 } 1327 1328 LogFlowThisFuncEnter(); 1313 1329 1314 1330 uint64_t uNewOffset; … … 1347 1363 HRESULT GuestFile::write(const std::vector<BYTE> &aData, ULONG aTimeoutMS, ULONG *aWritten) 1348 1364 { 1365 AutoCaller autoCaller(this); 1366 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1367 1349 1368 LogFlowThisFuncEnter(); 1350 1369 … … 1353 1372 uint32_t cbData = (uint32_t)aData.size(); 1354 1373 void *pvData = cbData > 0? (void *)&aData.front(): NULL; 1355 int vrc = i_writeData(aTimeoutMS, pvData, cbData, 1356 (uint32_t*)aWritten); 1374 int vrc = i_writeData(aTimeoutMS, pvData, cbData, (uint32_t*)aWritten); 1357 1375 if (RT_FAILURE(vrc)) 1358 1376 { … … 1374 1392 1375 1393 { 1394 AutoCaller autoCaller(this); 1395 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1396 1376 1397 LogFlowThisFuncEnter(); 1377 1398 … … 1380 1401 uint32_t cbData = (uint32_t)aData.size(); 1381 1402 void *pvData = cbData > 0? (void *)&aData.front(): NULL; 1382 int vrc = i_writeData(aTimeoutMS, pvData, cbData, 1383 (uint32_t*)aWritten); 1403 int vrc = i_writeData(aTimeoutMS, pvData, cbData, (uint32_t*)aWritten); 1384 1404 if (RT_FAILURE(vrc)) 1385 1405 { -
trunk/src/VBox/Main/src-client/GuestProcessImpl.cpp
r71518 r71560 1758 1758 HRESULT GuestProcess::read(ULONG aHandle, ULONG aToRead, ULONG aTimeoutMS, std::vector<BYTE> &aData) 1759 1759 { 1760 LogFlowThisFuncEnter(); 1760 AutoCaller autoCaller(this); 1761 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1761 1762 1762 1763 if (aToRead == 0) 1763 1764 return setError(E_INVALIDARG, tr("The size to read is zero")); 1765 1766 LogFlowThisFuncEnter(); 1764 1767 1765 1768 aData.resize(aToRead); … … 1800 1803 HRESULT GuestProcess::terminate() 1801 1804 { 1805 AutoCaller autoCaller(this); 1806 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1807 1808 LogFlowThisFuncEnter(); 1809 1802 1810 HRESULT hr = S_OK; 1803 1811 … … 1837 1845 } 1838 1846 1839 HRESULT GuestProcess::waitFor(ULONG aWaitFor, 1840 ULONG aTimeoutMS, 1841 ProcessWaitResult_T *aReason) 1842 { 1847 HRESULT GuestProcess::waitFor(ULONG aWaitFor, ULONG aTimeoutMS, ProcessWaitResult_T *aReason) 1848 { 1849 AutoCaller autoCaller(this); 1850 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1851 1852 LogFlowThisFuncEnter(); 1853 1843 1854 /* 1844 1855 * Note: Do not hold any locks here while waiting! … … 1880 1891 ULONG aTimeoutMS, ProcessWaitResult_T *aReason) 1881 1892 { 1882 /*1883 * Note: Do not hold any locks here while waiting!1884 */1885 1893 uint32_t fWaitFor = ProcessWaitForFlag_None; 1886 1894 for (size_t i = 0; i < aWaitFor.size(); i++) … … 1893 1901 ULONG aTimeoutMS, ULONG *aWritten) 1894 1902 { 1903 AutoCaller autoCaller(this); 1904 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 1905 1895 1906 LogFlowThisFuncEnter(); 1896 1907 … … 1930 1941 LogFlowThisFuncEnter(); 1931 1942 1932 /*1933 * Note: Do not hold any locks here while writing!1934 */1935 1943 ULONG fWrite = ProcessInputFlag_None; 1936 1944 for (size_t i = 0; i < aFlags.size(); i++) -
trunk/src/VBox/Main/src-client/GuestSessionImpl.cpp
r71542 r71560 2518 2518 HRESULT GuestSession::close() 2519 2519 { 2520 LogFlowThisFuncEnter();2521 2522 2520 AutoCaller autoCaller(this); 2523 2521 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2522 2523 LogFlowThisFuncEnter(); 2524 2524 2525 2525 HRESULT hr = i_isReadyExternal(); … … 2566 2566 ComPtr<IProgress> &aProgress) 2567 2567 { 2568 LogFlowThisFuncEnter(); 2568 AutoCaller autoCaller(this); 2569 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2569 2570 2570 2571 if (RT_UNLIKELY((aSource.c_str()) == NULL || *(aSource.c_str()) == '\0')) … … 2587 2588 return hrc; 2588 2589 2590 LogFlowThisFuncEnter(); 2591 2589 2592 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 2590 2593 … … 2643 2646 const std::vector<FileCopyFlag_T> &aFlags, ComPtr<IProgress> &aProgress) 2644 2647 { 2645 LogFlowThisFuncEnter(); 2648 AutoCaller autoCaller(this); 2649 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2646 2650 2647 2651 if (RT_UNLIKELY((aSource.c_str()) == NULL || *(aSource.c_str()) == '\0')) … … 2664 2668 return hrc; 2665 2669 2670 LogFlowThisFuncEnter(); 2671 2666 2672 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 2667 2673 … … 2725 2731 const std::vector<DirectoryCopyFlag_T> &aFlags, ComPtr<IProgress> &aProgress) 2726 2732 { 2727 LogFlowThisFuncEnter(); 2733 AutoCaller autoCaller(this); 2734 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2728 2735 2729 2736 if (RT_UNLIKELY((aSource.c_str()) == NULL || *(aSource.c_str()) == '\0')) … … 2749 2756 if (FAILED(hrc)) 2750 2757 return hrc; 2758 2759 LogFlowThisFuncEnter(); 2751 2760 2752 2761 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2806 2815 const std::vector<DirectoryCopyFlag_T> &aFlags, ComPtr<IProgress> &aProgress) 2807 2816 { 2808 LogFlowThisFuncEnter(); 2817 AutoCaller autoCaller(this); 2818 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2809 2819 2810 2820 if (RT_UNLIKELY((aSource.c_str()) == NULL || *(aSource.c_str()) == '\0')) … … 2833 2843 if (FAILED(hrc)) 2834 2844 return hrc; 2845 2846 LogFlowThisFuncEnter(); 2835 2847 2836 2848 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 2890 2902 const std::vector<DirectoryCreateFlag_T> &aFlags) 2891 2903 { 2892 LogFlowThisFuncEnter(); 2904 AutoCaller autoCaller(this); 2905 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2893 2906 2894 2907 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 2909 2922 if (FAILED(hrc)) 2910 2923 return hrc; 2924 2925 LogFlowThisFuncEnter(); 2911 2926 2912 2927 ComObjPtr <GuestDirectory> pDirectory; int rcGuest; … … 2945 2960 { 2946 2961 RT_NOREF(aMode, aSecure); 2947 LogFlowThisFuncEnter(); 2962 2963 AutoCaller autoCaller(this); 2964 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2948 2965 2949 2966 if (RT_UNLIKELY((aTemplateName.c_str()) == NULL || *(aTemplateName.c_str()) == '\0')) … … 2956 2973 return hrc; 2957 2974 2975 LogFlowThisFuncEnter(); 2976 2958 2977 int rcGuest; 2959 2978 int rc = i_fsCreateTemp(aTemplateName, aPath, true /* Directory */, aDirectory, &rcGuest); … … 2978 2997 HRESULT GuestSession::directoryExists(const com::Utf8Str &aPath, BOOL aFollowSymlinks, BOOL *aExists) 2979 2998 { 2980 LogFlowThisFuncEnter(); 2999 AutoCaller autoCaller(this); 3000 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 2981 3001 2982 3002 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 2986 3006 if (FAILED(hrc)) 2987 3007 return hrc; 3008 3009 LogFlowThisFuncEnter(); 2988 3010 2989 3011 GuestFsObjData objData; int rcGuest; … … 3023 3045 const std::vector<DirectoryOpenFlag_T> &aFlags, ComPtr<IGuestDirectory> &aDirectory) 3024 3046 { 3025 LogFlowThisFuncEnter(); 3047 AutoCaller autoCaller(this); 3048 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3026 3049 3027 3050 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 3044 3067 return hrc; 3045 3068 3069 LogFlowThisFuncEnter(); 3070 3046 3071 GuestDirectoryOpenInfo openInfo; 3047 3072 openInfo.mPath = aPath; … … 3081 3106 HRESULT GuestSession::directoryRemove(const com::Utf8Str &aPath) 3082 3107 { 3083 LogFlowThisFuncEnter(); 3108 AutoCaller autoCaller(this); 3109 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3084 3110 3085 3111 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 3089 3115 if (FAILED(hrc)) 3090 3116 return hrc; 3117 3118 LogFlowThisFuncEnter(); 3091 3119 3092 3120 /* No flags; only remove the directory when empty. */ … … 3122 3150 { 3123 3151 RT_NOREF(aFlags); 3124 LogFlowThisFuncEnter(); 3152 3153 AutoCaller autoCaller(this); 3154 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3125 3155 3126 3156 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 3133 3163 if (FAILED(hrc)) 3134 3164 return hrc; 3165 3166 LogFlowThisFuncEnter(); 3135 3167 3136 3168 ComObjPtr<Progress> pProgress; … … 3185 3217 HRESULT GuestSession::environmentScheduleSet(const com::Utf8Str &aName, const com::Utf8Str &aValue) 3186 3218 { 3187 LogFlowThisFuncEnter(); 3219 AutoCaller autoCaller(this); 3220 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3188 3221 3189 3222 HRESULT hrc; … … 3192 3225 if (RT_LIKELY(strchr(aName.c_str(), '=') == NULL)) 3193 3226 { 3227 LogFlowThisFuncEnter(); 3228 3194 3229 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 3195 3230 int vrc = mData.mEnvironmentChanges.setVariable(aName, aValue); … … 3211 3246 HRESULT GuestSession::environmentScheduleUnset(const com::Utf8Str &aName) 3212 3247 { 3213 LogFlowThisFuncEnter(); 3248 AutoCaller autoCaller(this); 3249 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3250 3214 3251 HRESULT hrc; 3215 3252 if (RT_LIKELY(aName.isNotEmpty())) … … 3217 3254 if (RT_LIKELY(strchr(aName.c_str(), '=') == NULL)) 3218 3255 { 3256 LogFlowThisFuncEnter(); 3257 3219 3258 AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); 3220 3259 int vrc = mData.mEnvironmentChanges.unsetVariable(aName); … … 3236 3275 HRESULT GuestSession::environmentGetBaseVariable(const com::Utf8Str &aName, com::Utf8Str &aValue) 3237 3276 { 3238 LogFlowThisFuncEnter(); 3277 AutoCaller autoCaller(this); 3278 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3279 3239 3280 HRESULT hrc; 3240 3281 if (RT_LIKELY(aName.isNotEmpty())) … … 3242 3283 if (RT_LIKELY(strchr(aName.c_str(), '=') == NULL)) 3243 3284 { 3285 LogFlowThisFuncEnter(); 3286 3244 3287 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 3245 3288 if (mData.mpBaseEnvironment) … … 3268 3311 HRESULT GuestSession::environmentDoesBaseVariableExist(const com::Utf8Str &aName, BOOL *aExists) 3269 3312 { 3270 LogFlowThisFuncEnter(); 3313 AutoCaller autoCaller(this); 3314 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3315 3271 3316 *aExists = FALSE; 3317 3272 3318 HRESULT hrc; 3273 3319 if (RT_LIKELY(aName.isNotEmpty())) … … 3275 3321 if (RT_LIKELY(strchr(aName.c_str(), '=') == NULL)) 3276 3322 { 3323 LogFlowThisFuncEnter(); 3324 3277 3325 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); 3278 3326 if (mData.mpBaseEnvironment) … … 3305 3353 HRESULT GuestSession::fileExists(const com::Utf8Str &aPath, BOOL aFollowSymlinks, BOOL *aExists) 3306 3354 { 3307 LogFlowThisFuncEnter(); 3355 AutoCaller autoCaller(this); 3356 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3308 3357 3309 3358 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 3316 3365 if (FAILED(hrc)) 3317 3366 return hrc; 3367 3368 LogFlowThisFuncEnter(); 3318 3369 3319 3370 GuestFsObjData objData; int rcGuest; … … 3350 3401 { 3351 3402 LogFlowThisFuncEnter(); 3403 3352 3404 const std::vector<FileOpenExFlag_T> EmptyFlags; 3353 3405 return fileOpenEx(aPath, aAccessMode, aOpenAction, FileSharingMode_All, aCreationMode, EmptyFlags, aFile); … … 3358 3410 const std::vector<FileOpenExFlag_T> &aFlags, ComPtr<IGuestFile> &aFile) 3359 3411 { 3360 LogFlowThisFuncEnter(); 3412 AutoCaller autoCaller(this); 3413 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3361 3414 3362 3415 if (RT_UNLIKELY((aPath.c_str()) == NULL || *(aPath.c_str()) == '\0')) … … 3366 3419 if (FAILED(hrc)) 3367 3420 return hrc; 3421 3422 LogFlowThisFuncEnter(); 3368 3423 3369 3424 GuestFileOpenInfo openInfo; … … 3458 3513 HRESULT GuestSession::fileQuerySize(const com::Utf8Str &aPath, BOOL aFollowSymlinks, LONG64 *aSize) 3459 3514 { 3515 AutoCaller autoCaller(this); 3516 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3517 3460 3518 if (aPath.isEmpty()) 3461 3519 return setError(E_INVALIDARG, tr("No path specified")); … … 3486 3544 HRESULT GuestSession::fsObjExists(const com::Utf8Str &aPath, BOOL aFollowSymlinks, BOOL *aExists) 3487 3545 { 3546 AutoCaller autoCaller(this); 3547 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3548 3488 3549 if (aPath.isEmpty()) 3489 3550 return setError(E_INVALIDARG, tr("No path specified")); … … 3527 3588 HRESULT GuestSession::fsObjQueryInfo(const com::Utf8Str &aPath, BOOL aFollowSymlinks, ComPtr<IGuestFsObjInfo> &aInfo) 3528 3589 { 3590 AutoCaller autoCaller(this); 3591 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3592 3529 3593 if (aPath.isEmpty()) 3530 3594 return setError(E_INVALIDARG, tr("No path specified")); … … 3566 3630 HRESULT GuestSession::fsObjRemove(const com::Utf8Str &aPath) 3567 3631 { 3632 AutoCaller autoCaller(this); 3633 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3634 3568 3635 if (RT_UNLIKELY(aPath.isEmpty())) 3569 3636 return setError(E_INVALIDARG, tr("No path specified")); … … 3594 3661 const std::vector<FsObjRenameFlag_T> &aFlags) 3595 3662 { 3663 AutoCaller autoCaller(this); 3664 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3665 3596 3666 if (RT_UNLIKELY(aSource.isEmpty())) 3597 3667 return setError(E_INVALIDARG, tr("No source path specified")); … … 3599 3669 if (RT_UNLIKELY(aDestination.isEmpty())) 3600 3670 return setError(E_INVALIDARG, tr("No destination path specified")); 3601 3602 LogFlowThisFunc(("aSource=%s, aDestination=%s\n", aSource.c_str(), aDestination.c_str()));3603 3671 3604 3672 HRESULT hrc = i_isReadyExternal(); … … 3612 3680 if (fApiFlags & ~((uint32_t)FsObjRenameFlag_NoReplace | (uint32_t)FsObjRenameFlag_Replace)) 3613 3681 return setError(E_INVALIDARG, tr("Unknown rename flag: %#x"), fApiFlags); 3682 3683 LogFlowThisFunc(("aSource=%s, aDestination=%s\n", aSource.c_str(), aDestination.c_str())); 3614 3684 3615 3685 AssertCompile(FsObjRenameFlag_NoReplace == 0); … … 3670 3740 3671 3741 std::vector<LONG> affinityIgnored; 3672 3673 3742 return processCreateEx(aExecutable, aArguments, aEnvironment, aFlags, aTimeoutMS, ProcessPriority_Default, 3674 3743 affinityIgnored, aGuestProcess); … … 3681 3750 ComPtr<IGuestProcess> &aGuestProcess) 3682 3751 { 3683 LogFlowThisFuncEnter(); 3752 AutoCaller autoCaller(this); 3753 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3754 3755 HRESULT hr = i_isReadyExternal(); 3756 if (FAILED(hr)) 3757 return hr; 3684 3758 3685 3759 /** @todo r=bird: Check input better? aPriority is passed on to the guest … … 3701 3775 } 3702 3776 3703 /* 3704 * Check the session. 3705 */ 3706 HRESULT hr = i_isReadyExternal(); 3707 if (FAILED(hr)) 3708 return hr; 3777 LogFlowThisFuncEnter(); 3709 3778 3710 3779 /* … … 3784 3853 3785 3854 { 3786 LogFlowThisFunc(("PID=%RU32\n", aPid)); 3855 AutoCaller autoCaller(this); 3856 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3787 3857 3788 3858 if (aPid == 0) 3789 3859 return setError(E_INVALIDARG, tr("No valid process ID (PID) specified")); 3860 3861 LogFlowThisFunc(("PID=%RU32\n", aPid)); 3790 3862 3791 3863 AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); … … 3829 3901 HRESULT GuestSession::waitFor(ULONG aWaitFor, ULONG aTimeoutMS, GuestSessionWaitResult_T *aReason) 3830 3902 { 3903 AutoCaller autoCaller(this); 3904 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3905 3906 /* Note: No call to i_isReadyExternal() needed here, as the session might not has been started (yet). */ 3907 3831 3908 LogFlowThisFuncEnter(); 3832 3909 3833 HRESULT hrc = i_isReadyExternal(); 3834 if (FAILED(hrc)) 3835 return hrc; 3910 HRESULT hrc = S_OK; 3836 3911 3837 3912 /* … … 3872 3947 GuestSessionWaitResult_T *aReason) 3873 3948 { 3949 AutoCaller autoCaller(this); 3950 if (FAILED(autoCaller.rc())) return autoCaller.rc(); 3951 3952 /* Note: No call to i_isReadyExternal() needed here, as the session might not has been started (yet). */ 3953 3874 3954 LogFlowThisFuncEnter(); 3875 3876 HRESULT hrc = i_isReadyExternal();3877 if (FAILED(hrc))3878 return hrc;3879 3955 3880 3956 /* … … 3887 3963 return WaitFor(fWaitFor, aTimeoutMS, aReason); 3888 3964 } 3889
Note:
See TracChangeset
for help on using the changeset viewer.