VirtualBox

Changeset 23880 in vbox


Ignore:
Timestamp:
Oct 19, 2009 5:48:04 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
53660
Message:

Main/MediumAttachment: change return value of Controller getter to return a reference to the StorageController instead of just the name

Location:
trunk/src/VBox
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxMediaManagerDlg.cpp

    r23801 r23880  
    12651265                if (attachment.GetMedium().GetId() == aMedium.id())
    12661266                {
    1267                     machine.DetachDevice (attachment.GetController(), attachment.GetPort(), attachment.GetDevice());
     1267                    CStorageController controller = attachment.GetController();
     1268                    machine.DetachDevice (controller.GetName(), attachment.GetPort(), attachment.GetDevice());
    12681269                    if (!machine.isOk())
    12691270                    {
    1270                         CStorageController controller = machine.GetStorageControllerByName (attachment.GetController());
    12711271                        vboxProblem().cannotDetachDevice (this, machine, VBoxDefs::MediumType_HardDisk, aMedium.location(),
    12721272                                                          controller.GetBus(), attachment.GetPort(), attachment.GetDevice());
     
    12881288                if (medium.id() == aMedium.id())
    12891289                {
    1290                     machine.MountMedium (attachment.GetController(), attachment.GetPort(), attachment.GetDevice(), QString());
     1290                    machine.MountMedium (attachment.GetController().GetName(), attachment.GetPort(), attachment.GetDevice(), QString());
    12911291                    if (!machine.isOk())
    12921292                    {
    1293                         CStorageController controller = machine.GetStorageControllerByName (attachment.GetController());
    12941293                        vboxProblem().cannotUnmountMedium (this, machine, aMedium);
    12951294                        success = false;
     
    13101309                if (medium.id() == aMedium.id())
    13111310                {
    1312                     machine.MountMedium (attachment.GetController(), attachment.GetPort(), attachment.GetDevice(), QString());
     1311                    machine.MountMedium (attachment.GetController().GetName(), attachment.GetPort(), attachment.GetDevice(), QString());
    13131312                    if (!machine.isOk())
    13141313                    {
    1315                         CStorageController controller = machine.GetStorageControllerByName (attachment.GetController());
    13161314                        vboxProblem().cannotUnmountMedium (this, machine, aMedium);
    13171315                        success = false;
  • trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp

    r23585 r23880  
    911911            {
    912912                CMediumAttachment hda = vec [i];
    913                 const QString ctlName = hda.GetController();
    914 
    915                 machine.DetachDevice(ctlName, hda.GetPort(), hda.GetDevice());
     913                CStorageController controller = hda.GetController();
     914                machine.DetachDevice(controller.GetName(), hda.GetPort(), hda.GetDevice());
    916915                if (!machine.isOk())
    917916                {
    918                     CStorageController ctl = machine.GetStorageControllerByName(ctlName);
    919917                    vboxProblem().cannotDetachDevice (this, machine, VBoxDefs::MediumType_HardDisk,
    920918                        vboxGlobal().getMedium (CMedium (hda.GetMedium())).location(),
    921                         ctl.GetBus(), hda.GetPort(), hda.GetDevice());
     919                        controller.GetBus(), hda.GetPort(), hda.GetDevice());
    922920                }
    923921            }
  • trunk/src/VBox/Main/ApplianceImpl.cpp

    r23733 r23880  
    44464446            ComPtr<IMedium> pMedium;
    44474447            ComPtr<IStorageController> ctl;
    4448             Bstr controllerName;
    4449 
    4450             rc = pHDA->COMGETTER(Controller)(controllerName.asOutParam());
    4451             if (FAILED(rc)) throw rc;
    4452 
    4453             rc = GetStorageControllerByName(controllerName, ctl.asOutParam());
     4448
     4449            rc = pHDA->COMGETTER(Controller)(ctl.asOutParam());
    44544450            if (FAILED(rc)) throw rc;
    44554451
  • trunk/src/VBox/Main/ConsoleImpl.cpp

    r23879 r23880  
    27052705    rc = mMachine->COMGETTER(StorageControllers)(ComSafeArrayAsOutParam(ctrls));
    27062706    AssertComRC(rc);
    2707     Bstr attCtrlName;
    2708     rc = aMediumAttachment->COMGETTER(Controller)(attCtrlName.asOutParam());
     2707    ComPtr<IStorageController> ctrl;
     2708    rc = aMediumAttachment->COMGETTER(Controller)(ctrl.asOutParam());
    27092709    AssertComRC(rc);
    2710     ComPtr<IStorageController> ctrl;
    2711     for (size_t i = 0; i < ctrls.size(); ++i)
    2712     {
    2713         Bstr ctrlName;
    2714         rc = ctrls[i]->COMGETTER(Name)(ctrlName.asOutParam());
    2715         AssertComRC(rc);
    2716         if (attCtrlName == ctrlName)
    2717         {
    2718             ctrl = ctrls[i];
    2719             break;
    2720         }
    2721     }
    2722     if (ctrl.isNull())
    2723     {
    2724         return setError(E_FAIL,
    2725                         tr("Could not find storage controller '%ls'"), attCtrlName.raw());
    2726     }
    27272710    StorageControllerType_T enmCtrlType;
    27282711    rc = ctrl->COMGETTER(ControllerType)(&enmCtrlType);
     
    72267209            {
    72277210                ComPtr<IStorageController> controller;
    7228                 BSTR controllerName;
    72297211                ULONG lInstance;
    72307212                StorageControllerType_T enmController;
     
    72357217                * so we have to query needed values here and pass them.
    72367218                */
    7237                 rc = atts[i]->COMGETTER(Controller)(&controllerName);
    7238                 if (FAILED(rc))
    7239                     break;
    7240 
    7241                 rc = that->mMachine->GetStorageControllerByName(controllerName, controller.asOutParam());
     7219                rc = atts[i]->COMGETTER(Controller)(controller.asOutParam());
    72427220                if (FAILED(rc)) throw rc;
    7243 
    72447221                rc = controller->COMGETTER(ControllerType)(&enmController);
     7222                if (FAILED (rc)) throw rc;
    72457223                rc = controller->COMGETTER(Instance)(&lInstance);
     7224                if (FAILED (rc)) throw rc;
    72467225
    72477226                /*
  • trunk/src/VBox/Main/MachineImpl.cpp

    r23879 r23880  
    23582358                         * descendant of medium will be used
    23592359                         */
    2360                         if (    (*it)->device() == aDevice
    2361                              && (*it)->port() == aControllerPort
    2362                              && (*it)->controller() == aControllerName
    2363                            )
     2360                        if (pAttach->matches(aControllerName, aControllerPort, aDevice))
    23642361                        {
    23652362                            foundIt = it;
     
    24362433    ComObjPtr<MediumAttachment> attachment;
    24372434    attachment.createObject();
    2438     rc = attachment->init(this, medium, aControllerName, aControllerPort, aDevice, aType, indirect);
     2435    rc = attachment->init(this, medium, ctl, aControllerPort, aDevice, aType, indirect);
    24392436    CheckComRCReturnRC(rc);
    24402437
     
    35613558         ++it)
    35623559    {
    3563         if ((*it)->controller() == aName)
     3560        if (Bstr((*it)->controller()->name()) == aName)
    35643561            return setError(VBOX_E_OBJECT_IN_USE,
    35653562                            tr("Storage controller named '%ls' has still devices attached"),
     
    56075604            break;
    56085605
    5609         const Bstr controllerName = aStorageController->name();
    56105606        ComObjPtr<MediumAttachment> pAttachment;
    56115607        pAttachment.createObject();
    56125608        rc = pAttachment->init(this,
    56135609                               medium,
    5614                                controllerName,
     5610                               aStorageController,
    56155611                               dev.lPort,
    56165612                               dev.lDevice,
     
    57555751         ++it)
    57565752    {
    5757         if ((*it)->controller() == aName)
     5753        if (Bstr((*it)->controller()->name()) == aName)
    57585754            atts.push_back(*it);
    57595755    }
  • trunk/src/VBox/Main/MediumAttachmentImpl.cpp

    r23397 r23880  
    5858HRESULT MediumAttachment::init(Machine *aParent,
    5959                               Medium *aMedium,
    60                                CBSTR aController,
     60                               StorageController *aController,
    6161                               LONG aPort,
    6262                               LONG aDevice,
     
    180180}
    181181
    182 STDMETHODIMP MediumAttachment::COMGETTER(Controller)(BSTR *aController)
     182STDMETHODIMP MediumAttachment::COMGETTER(Controller)(IStorageController **aController)
    183183{
    184184    LogFlowThisFuncEnter();
     
    190190
    191191    /* m->controller is constant during life time, no need to lock */
    192     m->controller.cloneTo(aController);
     192    m->controller.queryInterfaceTo(aController);
    193193
    194194    LogFlowThisFuncLeave();
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r23879 r23880  
    83638363  <interface
    83648364    name="IMediumAttachment" extends="$unknown"
    8365     uuid="0dcf987b-a024-453f-bace-7eb9f885a413"
     8365    uuid="ff554585-560a-489d-963c-cf6da6a826de"
    83668366    wsmap="struct"
    83678367  >
     
    83848384    </attribute>
    83858385
    8386     <attribute name="controller" type="wstring" readonly="yes">
    8387       <desc>Name of the storage controller of this attachment; this
    8388         refers to one of the controllers in <link to="IMachine::storageControllers" />
    8389         by name.</desc>
     8386    <attribute name="controller" type="IStorageController" readonly="yes">
     8387      <desc>Storage controller object to which this attachment belongs.</desc>
    83908388    </attribute>
    83918389
  • trunk/src/VBox/Main/include/MediumAttachmentImpl.h

    r23394 r23880  
    2626
    2727#include "MediumImpl.h"
     28#include "StorageControllerImpl.h"
    2829
    2930class Machine;
     
    5354    HRESULT init(Machine *aParent,
    5455                 Medium *aMedium,
    55                  CBSTR aController,
     56                 StorageController *aController,
    5657                 LONG aPort,
    5758                 LONG aDevice,
     
    6869    // IMediumAttachment properties
    6970    STDMETHOD(COMGETTER(Medium))(IMedium **aMedium);
    70     STDMETHOD(COMGETTER(Controller))(BSTR *aController);
     71    STDMETHOD(COMGETTER(Controller))(IStorageController **aController);
    7172    STDMETHOD(COMGETTER(Port))(LONG *aPort);
    7273    STDMETHOD(COMGETTER(Device))(LONG *aDevice);
     
    8283
    8384    const ComObjPtr<Medium> &medium() const { return m->medium; }
    84     Bstr controller() const { return m->controller; }
     85    const ComObjPtr<StorageController> &controller() const { return m->controller; }
    8586    LONG port() const { return m->port; }
    8687    LONG device() const { return m->device; }
     
    9091    bool matches(CBSTR aController, LONG aPort, LONG aDevice)
    9192    {
    92         return (    aController == m->controller
     93        return (    aController == m->controller->name()
    9394                 && aPort == m->port
    9495                 && aDevice == m->device);
     
    124125
    125126        ComObjPtr<Medium> medium;
    126         const Bstr controller;
     127        ComObjPtr<StorageController> controller;
    127128        const LONG port;
    128129        const LONG device;
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette