VirtualBox

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


Ignore:
Timestamp:
May 17, 2012 10:40:43 PM (13 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
78026
Message:

FE/VBoxManage: Don't open the medium with read/write access if it is not required (showhdinfo and the source disk when cloning)

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h

    r41232 r41347  
    229229                   ComPtr<IMedium> &pMedium);
    230230HRESULT findOrOpenMedium(HandlerArg *a, const char *pszFilenameOrUuid,
    231                          DeviceType_T enmDevType, ComPtr<IMedium> &pMedium,
    232                          bool fForceNewUuidOnOpen, bool *pfWasUnknown);
     231                         DeviceType_T enmDevType, AccessMode_T enmAccessMode,
     232                         ComPtr<IMedium> &pMedium, bool fForceNewUuidOnOpen,
     233                         bool *pfWasUnknown);
    233234int handleCreateHardDisk(HandlerArg *a);
    234235int handleModifyHardDisk(HandlerArg *a);
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp

    r41242 r41347  
    186186
    187187HRESULT findOrOpenMedium(HandlerArg *a, const char *pszFilenameOrUuid,
    188                          DeviceType_T enmDevType, ComPtr<IMedium> &pMedium,
    189                          bool fForceNewUuidOnOpen, bool *pfWasUnknown)
     188                         DeviceType_T enmDevType, AccessMode_T enmAccessMode,
     189                         ComPtr<IMedium> &pMedium, bool fForceNewUuidOnOpen,
     190                         bool *pfWasUnknown)
    190191{
    191192    HRESULT rc;
     
    208209    rc = a->virtualBox->OpenMedium(Bstr(pszFilenameOrUuid).raw(),
    209210                                   enmDevType,
    210                                    AccessMode_ReadWrite,
     211                                   enmAccessMode,
    211212                                   /*fForceNewUidOnOpen */ false,
    212213                                   pMedium.asOutParam());
     
    215216    {
    216217        CHECK_ERROR(a->virtualBox, OpenMedium(Bstr(pszFilenameOrUuid).raw(),
    217                                               enmDevType, AccessMode_ReadWrite,
     218                                              enmDevType, enmAccessMode,
    218219                                              fForceNewUuidOnOpen,
    219220                                              pMedium.asOutParam()));
     
    372373                format = pszExt;
    373374        }
    374         rc = findOrOpenMedium(a, diffparent, DeviceType_HardDisk,
     375        rc = findOrOpenMedium(a, diffparent, DeviceType_HardDisk, AccessMode_ReadWrite,
    375376                              parentHardDisk, false /* fForceNewUuidOnOpen */,
    376377                              &fUnknownParent);
     
    537538        rc = findMedium(a, FilenameOrUuid, DeviceType_HardDisk, false /* fSilent */, hardDisk);
    538539    else
    539         rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk,
     540        rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, AccessMode_ReadWrite,
    540541                              hardDisk, false /* fForceNewUuidOnOpen */, &unknown);
    541542    if (FAILED(rc))
     
    564565    {
    565566        ComPtr<IProgress> progress;
    566         CHECK_ERROR(hardDisk, Compact(progress.asOutParam()));
     567        CHECK_ERROR(hardDisk, Compact(FALSE, progress.asOutParam()));
    567568        if (SUCCEEDED(rc))
    568569            rc = showProgress(progress);
     
    694695    bool fDstUnknown = false;
    695696
    696     rc = findOrOpenMedium(a, pszSrc, DeviceType_HardDisk, srcDisk,
    697                           false /* fForceNewUuidOnOpen */, &fSrcUnknown);
     697    rc = findOrOpenMedium(a, pszSrc, DeviceType_HardDisk, AccessMode_ReadOnly,
     698                          srcDisk, false /* fForceNewUuidOnOpen */, &fSrcUnknown);
    698699    if (FAILED(rc))
    699700        return 1;
     
    704705        if (fExisting)
    705706        {
    706             rc = findOrOpenMedium(a, pszDst, DeviceType_HardDisk, dstDisk,
    707                                   false /* fForceNewUuidOnOpen */, &fDstUnknown);
     707            rc = findOrOpenMedium(a, pszDst, DeviceType_HardDisk, AccessMode_ReadWrite,
     708                                  dstDisk, false /* fForceNewUuidOnOpen */, &fDstUnknown);
    708709            if (FAILED(rc))
    709710                break;
     
    986987    bool unknown = false;
    987988
    988     rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, hardDisk,
    989                           false /* fForceNewUuidOnOpen */, &unknown);
     989    rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, AccessMode_ReadOnly,
     990                          hardDisk, false /* fForceNewUuidOnOpen */, &unknown);
    990991    if (FAILED(rc))
    991992        return 1;
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp

    r40729 r41347  
    723723                    ComPtr<IMedium> hardDisk;
    724724                    rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_HardDisk,
    725                                           hardDisk, false /* fForceNewUuidOnOpen */,
    726                                           NULL);
     725                                          AccessMode_ReadWrite, hardDisk,
     726                                          false /* fForceNewUuidOnOpen */, NULL);
    727727                    if (FAILED(rc))
    728728                        break;
     
    819819                    ComPtr<IMedium> hardDisk;
    820820                    rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_HardDisk,
    821                                           hardDisk, false /* fForceNewUuidOnOpen */,
    822                                           NULL);
     821                                          AccessMode_ReadWrite, hardDisk,
     822                                          false /* fForceNewUuidOnOpen */, NULL);
    823823                    if (FAILED(rc))
    824824                        break;
     
    947947                {
    948948                    rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_DVD,
    949                                           dvdMedium, false /* fForceNewUuidOnOpen */,
    950                                           NULL);
     949                                          AccessMode_ReadOnly, dvdMedium,
     950                                          false /* fForceNewUuidOnOpen */, NULL);
    951951                    if (FAILED(rc))
    952952                        break;
     
    10111011                    {
    10121012                        rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_Floppy,
    1013                                               floppyMedium, false /* fForceNewUuidOnOpen */,
    1014                                               NULL);
     1013                                              AccessMode_ReadWrite, floppyMedium,
     1014                                              false /* fForceNewUuidOnOpen */, NULL);
    10151015                        if (FAILED(rc))
    10161016                            break;
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp

    r38887 r41347  
    636636                    Bstr bstrMedium(pszMedium);
    637637                    rc = findOrOpenMedium(a, pszMedium, devTypeRequested,
    638                                           pMedium2Mount, fSetNewUuid, NULL);
     638                                          AccessMode_ReadWrite, pMedium2Mount,
     639                                          fSetNewUuid, NULL);
    639640                    if (FAILED(rc) || !pMedium2Mount)
    640641                        throw Utf8StrFmt("Invalid UUID or filename \"%s\"", pszMedium);
Note: See TracChangeset for help on using the changeset viewer.

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