STDMETHODIMP SharedFolder::COMGETTER(Accessible) (BOOL *aAccessible) { CheckComArgOutPointerValid(aAccessible); AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); /* mName and mHostPath are constant during life time, no need to lock */ /* check whether the host path exists */ Utf8Str hostPath = m->strHostPath; char hostPathFull[RTPATH_MAX]; int vrc = RTPathExists(hostPath.c_str()) ? RTPathReal(hostPath.c_str(), hostPathFull, sizeof(hostPathFull)) : VERR_PATH_NOT_FOUND; if (RT_SUCCESS(vrc)) { *aAccessible = TRUE; return S_OK; } AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); m->strLastAccessError = Utf8StrFmt(tr("'%s' is not accessible (%Rrc)"), m->strHostPath.c_str(), vrc); LogWarningThisFunc(("m.lastAccessError=\"%s\"\n", m->strLastAccessError.c_str())); *aAccessible = FALSE; return S_OK; }
STDMETHODIMP Session::Uninitialize() { LogFlowThisFuncEnter(); AutoCaller autoCaller(this); HRESULT rc = S_OK; if (autoCaller.state() == Ready) { /* close() needs write lock */ AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); LogFlowThisFunc(("mState=%s, mType=%d\n", Global::stringifySessionState(mState), mType)); if (mState == SessionState_Unlocking) { LogFlowThisFunc(("Already being unlocked.\n")); return S_OK; } AssertMsgReturn( mState == SessionState_Locked || mState == SessionState_Spawning, ("Session is in wrong state (%ld), expected locked (%ld) or spawning (%ld)\n", mState, SessionState_Locked, SessionState_Spawning), VBOX_E_INVALID_VM_STATE); /* close ourselves */ rc = unlockMachine(false /* aFinalRelease */, true /* aFromServer */); } else if (autoCaller.state() == InUninit) { /* * We might have already entered Session::uninit() at this point, * return silently */ LogFlowThisFunc(("Already uninitialized.\n")); } else { LogWarningThisFunc(("UNEXPECTED uninitialization!\n")); rc = autoCaller.rc(); } LogFlowThisFunc(("rc=%08X\n", rc)); LogFlowThisFuncLeave(); return rc; }
STDMETHODIMP Session::Uninitialize() { LogFlowThisFuncEnter(); AutoCaller autoCaller(this); HRESULT rc = S_OK; if (autoCaller.state() == Ready) { /* close() needs write lock */ AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); LogFlowThisFunc(("mState=%s, mType=%d\n", Global::stringifySessionState(mState), mType)); if (mState == SessionState_Unlocking) { LogFlowThisFunc(("Already being unlocked.\n")); return S_OK; } #ifndef DEBUG_andy /* Don't bug me -- now time to fix this at the moment. */ AssertReturn(mState == SessionState_Locked || mState == SessionState_Spawning, VBOX_E_INVALID_VM_STATE); #endif /* close ourselves */ rc = unlockMachine(false /* aFinalRelease */, true /* aFromServer */); } else if (autoCaller.state() == InUninit) { /* * We might have already entered Session::uninit() at this point, * return silently */ LogFlowThisFunc(("Already uninitialized.\n")); } else { LogWarningThisFunc(("UNEXPECTED uninitialization!\n")); rc = autoCaller.rc(); } LogFlowThisFunc(("rc=%08X\n", rc)); LogFlowThisFuncLeave(); return rc; }