/** * Generic USB filter field getter; converts the field value to UTF-16. * * @param aIdx The field index. * @param aStr Where to store the value. * * @return COM status. */ HRESULT USBDeviceFilter::usbFilterFieldGetter(USBFILTERIDX aIdx, BSTR *aStr) { CheckComArgOutPointerValid(aStr); AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); Utf8Str str; usbFilterFieldToString(&mData->mUSBFilter, aIdx, str); str.cloneTo(aStr); return S_OK; }
STDMETHODIMP VRDEServer::COMGETTER(VRDEExtPack) (BSTR *aExtPack) { CheckComArgOutPointerValid(aExtPack); AutoCaller autoCaller(this); HRESULT hrc = autoCaller.rc(); if (SUCCEEDED(hrc)) { AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS); Utf8Str strExtPack = mData->mVrdeExtPack; alock.release(); if (strExtPack.isNotEmpty()) { if (strExtPack.equals(VBOXVRDP_KLUDGE_EXTPACK_NAME)) hrc = S_OK; else { #ifdef VBOX_WITH_EXTPACK ExtPackManager *pExtPackMgr = mParent->getVirtualBox()->getExtPackManager(); hrc = pExtPackMgr->checkVrdeExtPack(&strExtPack); #else hrc = setError(E_FAIL, tr("Extension pack '%s' does not exist"), strExtPack.c_str()); #endif } if (SUCCEEDED(hrc)) strExtPack.cloneTo(aExtPack); } else { /* Get the global setting. */ ComPtr<ISystemProperties> systemProperties; hrc = mParent->getVirtualBox()->COMGETTER(SystemProperties)(systemProperties.asOutParam()); if (SUCCEEDED(hrc)) hrc = systemProperties->COMGETTER(DefaultVRDEExtPack)(aExtPack); } } return hrc; }