/** * Set the new patch manager enabled flag. * * @returns COM status code * @param aEnable new patch manager enabled flag */ HRESULT MachineDebugger::setPATMEnabled(BOOL aPATMEnabled) { LogFlowThisFunc(("enable=%d\n", aPATMEnabled)); #ifdef VBOX_WITH_RAW_MODE AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); if (i_queueSettings()) { // queue the request mPatmEnabledQueued = aPATMEnabled; return S_OK; } Console::SafeVMPtr ptrVM(mParent); if (FAILED(ptrVM.rc())) return ptrVM.rc(); int vrc = PATMR3AllowPatching(ptrVM.rawUVM(), RT_BOOL(aPATMEnabled)); if (RT_FAILURE(vrc)) return setError(VBOX_E_VM_ERROR, tr("PATMR3AllowPatching returned %Rrc"), vrc); #else /* !VBOX_WITH_RAW_MODE */ if (aPATMEnabled) return setError(VBOX_E_VM_ERROR, tr("PATM not present"), VERR_NOT_SUPPORTED); #endif /* !VBOX_WITH_RAW_MODE */ return S_OK; }
/** * Set the new patch manager enabled flag. * * @returns COM status code * @param new patch manager enabled flag */ STDMETHODIMP MachineDebugger::COMSETTER(PATMEnabled)(BOOL enable) { LogFlow(("MachineDebugger::SetPATMEnabled: %d\n", enable)); if (!fFlushMode) { // check if the machine is running if (machineState != VMSTATE_RUNNING) { // queue the request patmEnabledQueued = enable; return S_OK; } } if (!gpVM) return E_FAIL; PATMR3AllowPatching(gpVM, enable); return E_NOTIMPL; }
/** * Set the new patch manager enabled flag. * * @returns COM status code * @param aEnable new patch manager enabled flag */ STDMETHODIMP MachineDebugger::COMSETTER(PATMEnabled) (BOOL aEnable) { LogFlowThisFunc(("enable=%d\n", aEnable)); AutoCaller autoCaller(this); if (FAILED(autoCaller.rc())) return autoCaller.rc(); AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS); if (queueSettings()) { // queue the request mPatmEnabledQueued = aEnable; return S_OK; } Console::SafeVMPtr pVM(mParent); if (FAILED(pVM.rc())) return pVM.rc(); PATMR3AllowPatching (pVM, aEnable); return S_OK; }