VirtualBox

Changeset 24504 in vbox for trunk/src/VBox/Frontends


Ignore:
Timestamp:
Nov 9, 2009 1:35:37 PM (15 years ago)
Author:
vboxsync
Message:

VBoxManage: Implemented the --forceunmount option

Location:
trunk/src/VBox/Frontends/VBoxManage
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageHelp.cpp

    r24404 r24504  
    361361                 "                             --medium <none|emptydrive|uuid|filename|host:<drive>>]\n"
    362362                 "                            [--passthrough <on|off>]\n"
     363                 "                            [--forceunmount <on|off>]\n"
    363364                 "\n");
    364365    }
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp

    r24493 r24504  
    5555    { "--type",           't', RTGETOPT_REQ_STRING },
    5656    { "--passthrough",    'h', RTGETOPT_REQ_STRING },
     57    { "--forceunmount",   'f', RTGETOPT_REQ_BOOL_ONOFF },
    5758};
    5859
     
    6465    ULONG device = ~0U;
    6566    bool fRunTime = false;
     67    bool fForceUnmount = false;
    6668    const char *pszCtl  = NULL;
    6769    const char *pszType = NULL;
     
    136138            }
    137139
     140            case 'f':   // force unmount medium during runtime <on|off>
     141            {
     142                fForceUnmount = ValueUnion.f;
     143                break;
     144            }
     145
    138146            default:
    139147            {
     
    228236        {
    229237            ComPtr<IMediumAttachment> mediumAttachment;
     238            DeviceType_T deviceType = DeviceType_Null;
    230239            rc = machine->GetMediumAttachment(Bstr(pszCtl), port, device, mediumAttachment.asOutParam());
    231240            if (SUCCEEDED(rc))
    232241            {
    233                 DeviceType_T deviceType;
    234242                mediumAttachment->COMGETTER(Type)(&deviceType);
    235243
     
    238246                {
    239247                    /* just unmount the floppy/dvd */
    240                     CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, Bstr(""), FALSE /* aForce */));
    241                 }
    242                 else
    243                 {
    244                     errorArgument("No DVD/Floppy Drive attached to the controller '%s'"
    245                                   "at the port: %u, device: %u", pszCtl, port, device);
    246                     goto leave;
    247                 }
    248             }
    249             else
     248                    CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, Bstr(""), fForceUnmount));
     249                }
     250            }
     251
     252            if (   FAILED(rc)
     253                || !(   deviceType == DeviceType_DVD
     254                     || deviceType == DeviceType_Floppy))
    250255            {
    251256                errorArgument("No DVD/Floppy Drive attached to the controller '%s'"
     
    493498            {
    494499                dvdMedium->COMGETTER(Id)(uuid.asOutParam());
    495                 CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, uuid, FALSE /* aForce */));
     500                CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, uuid, fForceUnmount));
    496501            }
    497502        }
     
    588593            {
    589594                floppyMedium->COMGETTER(Id)(uuid.asOutParam());
    590                 CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, uuid, FALSE /* aForce */));
     595                CHECK_ERROR(machine, MountMedium(Bstr(pszCtl), port, device, uuid, fForceUnmount));
    591596            }
    592597        }
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