VirtualBox

Changeset 49795 in vbox for trunk/src


Ignore:
Timestamp:
Dec 5, 2013 6:53:18 PM (11 years ago)
Author:
vboxsync
Message:

6813 - stage 3 rev 1

Location:
trunk/src/VBox/Main
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/include/MediumImpl.h

    r48538 r49795  
    2222
    2323#include <VBox/vd.h>
    24 
    25 #include "VirtualBoxBase.h"
    26 #include "MediumLock.h"
    27 
     24#include "MediumWrap.h"
    2825class Progress;
    2926class MediumFormat;
     27class MediumLockList;
    3028
    3129namespace settings
     
    4038 */
    4139class ATL_NO_VTABLE Medium :
    42     public VirtualBoxBase,
    43     VBOX_SCRIPTABLE_IMPL(IMedium)
     40    public MediumWrap
    4441{
    4542public:
    46     VIRTUALBOXBASE_ADD_ERRORINFO_SUPPORT(Medium, IMedium)
    47 
    48     DECLARE_NOT_AGGREGATABLE(Medium)
    49 
    50     DECLARE_PROTECT_FINAL_CONSTRUCT()
    51 
    52     BEGIN_COM_MAP(Medium)
    53         VBOX_DEFAULT_INTERFACE_ENTRIES(IMedium)
    54     END_COM_MAP()
    55 
    5643    DECLARE_EMPTY_CTOR_DTOR(Medium)
    5744
     
    9683    void uninit();
    9784
    98     void deparent();
    99     void setParent(const ComObjPtr<Medium> &pParent);
    100 
    101     // IMedium properties
    102     STDMETHOD(COMGETTER(Id))(BSTR *aId);
    103     STDMETHOD(COMGETTER(Description))(BSTR *aDescription);
    104     STDMETHOD(COMSETTER(Description))(IN_BSTR aDescription);
    105     STDMETHOD(COMGETTER(State))(MediumState_T *aState);
    106     STDMETHOD(COMGETTER(Variant))(ComSafeArrayOut(MediumVariant_T, aVariant));
    107     STDMETHOD(COMGETTER(Location))(BSTR *aLocation);
    108     STDMETHOD(COMGETTER(Name))(BSTR *aName);
    109     STDMETHOD(COMGETTER(DeviceType))(DeviceType_T *aDeviceType);
    110     STDMETHOD(COMGETTER(HostDrive))(BOOL *aHostDrive);
    111     STDMETHOD(COMGETTER(Size))(LONG64 *aSize);
    112     STDMETHOD(COMGETTER(Format))(BSTR *aFormat);
    113     STDMETHOD(COMGETTER(MediumFormat))(IMediumFormat **aMediumFormat);
    114     STDMETHOD(COMGETTER(Type))(MediumType_T *aType);
    115     STDMETHOD(COMSETTER(Type))(MediumType_T aType);
    116     STDMETHOD(COMGETTER(AllowedTypes))(ComSafeArrayOut(MediumType_T, aAllowedTypes));
    117     STDMETHOD(COMGETTER(Parent))(IMedium **aParent);
    118     STDMETHOD(COMGETTER(Children))(ComSafeArrayOut(IMedium *, aChildren));
    119     STDMETHOD(COMGETTER(Base))(IMedium **aBase);
    120     STDMETHOD(COMGETTER(ReadOnly))(BOOL *aReadOnly);
    121     STDMETHOD(COMGETTER(LogicalSize))(LONG64 *aLogicalSize);
    122     STDMETHOD(COMGETTER(AutoReset))(BOOL *aAutoReset);
    123     STDMETHOD(COMSETTER(AutoReset))(BOOL aAutoReset);
    124     STDMETHOD(COMGETTER(LastAccessError))(BSTR *aLastAccessError);
    125     STDMETHOD(COMGETTER(MachineIds))(ComSafeArrayOut(BSTR, aMachineIds));
    126 
    127     // IMedium methods
    128     STDMETHOD(SetIds)(BOOL aSetImageId, IN_BSTR aImageId,
    129                       BOOL aSetParentId, IN_BSTR aParentId);
    130     STDMETHOD(RefreshState)(MediumState_T *aState);
    131     STDMETHOD(GetSnapshotIds)(IN_BSTR aMachineId,
    132                               ComSafeArrayOut(BSTR, aSnapshotIds));
    133     STDMETHOD(LockRead)(IToken **aToken);
    134     STDMETHOD(LockWrite)(IToken **aToken);
    135     STDMETHOD(Close)();
    136     STDMETHOD(GetProperty)(IN_BSTR aName, BSTR *aValue);
    137     STDMETHOD(SetProperty)(IN_BSTR aName, IN_BSTR aValue);
    138     STDMETHOD(GetProperties)(IN_BSTR aNames,
    139                              ComSafeArrayOut(BSTR, aReturnNames),
    140                              ComSafeArrayOut(BSTR, aReturnValues));
    141     STDMETHOD(SetProperties)(ComSafeArrayIn(IN_BSTR, aNames),
    142                              ComSafeArrayIn(IN_BSTR, aValues));
    143     STDMETHOD(CreateBaseStorage)(LONG64 aLogicalSize,
    144                                  ComSafeArrayIn(MediumVariant_T, aVariant),
    145                                  IProgress **aProgress);
    146     STDMETHOD(DeleteStorage)(IProgress **aProgress);
    147     STDMETHOD(CreateDiffStorage)(IMedium *aTarget,
    148                                  ComSafeArrayIn(MediumVariant_T, aVariant),
    149                                  IProgress **aProgress);
    150     STDMETHOD(MergeTo)(IMedium *aTarget, IProgress **aProgress);
    151     STDMETHOD(CloneTo)(IMedium *aTarget, ComSafeArrayIn(MediumVariant_T, aVariant),
    152                         IMedium *aParent, IProgress **aProgress);
    153     STDMETHOD(CloneToBase)(IMedium *aTarget, ComSafeArrayIn(MediumVariant_T, aVariant),
    154                            IProgress **aProgress);
    155     STDMETHOD(SetLocation)(IN_BSTR aLocation, IProgress **aProgress);
    156     STDMETHOD(Compact)(IProgress **aProgress);
    157     STDMETHOD(Resize)(LONG64 aLogicalSize, IProgress **aProgress);
    158     STDMETHOD(Reset)(IProgress **aProgress);
     85    void i_deparent();
     86    void i_setParent(const ComObjPtr<Medium> &pParent);
    15987
    16088    // unsafe methods for internal purposes only (ensure there is
    16189    // a caller and a read lock before calling them!)
    162     const ComObjPtr<Medium>& getParent() const;
    163     const MediaList& getChildren() const;
    164 
    165     const Guid& getId() const;
    166     MediumState_T getState() const;
    167     MediumVariant_T getVariant() const;
    168     bool isHostDrive() const;
    169     const Utf8Str& getLocationFull() const;
    170     const Utf8Str& getFormat() const;
    171     const ComObjPtr<MediumFormat> & getMediumFormat() const;
    172     bool isMediumFormatFile() const;
    173     uint64_t getSize() const;
    174     DeviceType_T getDeviceType() const;
    175     MediumType_T getType() const;
    176     Utf8Str getName();
     90    const ComObjPtr<Medium>& i_getParent() const;
     91    const MediaList& i_getChildren() const;
     92
     93    const Guid& i_getId() const;
     94    MediumState_T i_getState() const;
     95    MediumVariant_T i_getVariant() const;
     96    bool i_isHostDrive() const;
     97    const Utf8Str& i_getLocationFull() const;
     98    const Utf8Str& i_getFormat() const;
     99    const ComObjPtr<MediumFormat> & i_getMediumFormat() const;
     100    bool i_isMediumFormatFile() const;
     101    uint64_t i_getSize() const;
     102    DeviceType_T i_getDeviceType() const;
     103    MediumType_T i_getType() const;
     104    Utf8Str i_getName();
    177105
    178106    /* handles caller/locking itself */
    179     bool addRegistry(const Guid& id, bool fRecurse);
     107    bool i_addRegistry(const Guid& id, bool fRecurse);
    180108    /* handles caller/locking itself */
    181     bool removeRegistry(const Guid& id, bool fRecurse);
    182     bool isInRegistry(const Guid& id);
    183     bool getFirstRegistryMachineId(Guid &uuid) const;
    184     void markRegistriesModified();
    185 
    186     HRESULT setPropertyDirect(const Utf8Str &aName, const Utf8Str &aValue);
    187 
    188     HRESULT addBackReference(const Guid &aMachineId,
    189                              const Guid &aSnapshotId = Guid::Empty);
    190     HRESULT removeBackReference(const Guid &aMachineId,
    191                                 const Guid &aSnapshotId = Guid::Empty);
    192 
    193 
    194     const Guid* getFirstMachineBackrefId() const;
    195     const Guid* getAnyMachineBackref() const;
    196     const Guid* getFirstMachineBackrefSnapshotId() const;
    197     size_t getMachineBackRefCount() const;
     109    bool i_removeRegistry(const Guid& id, bool fRecurse);
     110    bool i_isInRegistry(const Guid& id);
     111    bool i_getFirstRegistryMachineId(Guid &uuid) const;
     112    void i_markRegistriesModified();
     113
     114    HRESULT i_setPropertyDirect(const Utf8Str &aName, const Utf8Str &aValue);
     115
     116    HRESULT i_addBackReference(const Guid &aMachineId,
     117                               const Guid &aSnapshotId = Guid::Empty);
     118    HRESULT i_removeBackReference(const Guid &aMachineId,
     119                                  const Guid &aSnapshotId = Guid::Empty);
     120
     121
     122    const Guid* i_getFirstMachineBackrefId() const;
     123    const Guid* i_getAnyMachineBackref() const;
     124    const Guid* i_getFirstMachineBackrefSnapshotId() const;
     125    size_t i_getMachineBackRefCount() const;
    198126
    199127#ifdef DEBUG
    200     void dumpBackRefs();
     128    void i_dumpBackRefs();
    201129#endif
    202130
    203     HRESULT updatePath(const Utf8Str &strOldPath, const Utf8Str &strNewPath);
    204 
    205     ComObjPtr<Medium> getBase(uint32_t *aLevel = NULL);
    206 
    207     bool isReadOnly();
    208     void updateId(const Guid &id);
    209 
    210     HRESULT saveSettings(settings::Medium &data,
    211                          const Utf8Str &strHardDiskFolder);
    212 
    213     HRESULT createMediumLockList(bool fFailIfInaccessible,
    214                                  bool fMediumLockWrite,
    215                                  Medium *pToBeParent,
    216                                  MediumLockList &mediumLockList);
    217 
    218     HRESULT createDiffStorage(ComObjPtr<Medium> &aTarget,
    219                               MediumVariant_T aVariant,
    220                               MediumLockList *pMediumLockList,
    221                               ComObjPtr<Progress> *aProgress,
    222                               bool aWait);
    223     Utf8Str getPreferredDiffFormat();
    224 
    225     HRESULT close(AutoCaller &autoCaller);
    226     HRESULT unlockRead(MediumState_T *aState);
    227     HRESULT unlockWrite(MediumState_T *aState);
    228     HRESULT deleteStorage(ComObjPtr<Progress> *aProgress, bool aWait);
    229     HRESULT markForDeletion();
    230     HRESULT unmarkForDeletion();
    231     HRESULT markLockedForDeletion();
    232     HRESULT unmarkLockedForDeletion();
    233 
    234     HRESULT queryPreferredMergeDirection(const ComObjPtr<Medium> &pOther,
    235                                          bool &fMergeForward);
    236 
    237     HRESULT prepareMergeTo(const ComObjPtr<Medium> &pTarget,
    238                            const Guid *aMachineId,
    239                            const Guid *aSnapshotId,
    240                            bool fLockMedia,
    241                            bool &fMergeForward,
    242                            ComObjPtr<Medium> &pParentForTarget,
    243                            MediumLockList * &aChildrenToReparent,
    244                            MediumLockList * &aMediumLockList);
    245     HRESULT mergeTo(const ComObjPtr<Medium> &pTarget,
    246                     bool fMergeForward,
    247                     const ComObjPtr<Medium> &pParentForTarget,
    248                     MediumLockList *aChildrenToReparent,
    249                     MediumLockList *aMediumLockList,
    250                     ComObjPtr<Progress> *aProgress,
    251                     bool aWait);
    252     void cancelMergeTo(MediumLockList *aChildrenToReparent,
     131    HRESULT i_updatePath(const Utf8Str &strOldPath, const Utf8Str &strNewPath);
     132
     133    ComObjPtr<Medium> i_getBase(uint32_t *aLevel = NULL);
     134
     135    bool i_isReadOnly();
     136    void i_updateId(const Guid &id);
     137
     138    HRESULT i_saveSettings(settings::Medium &data,
     139                           const Utf8Str &strHardDiskFolder);
     140
     141    HRESULT i_createMediumLockList(bool fFailIfInaccessible,
     142                                   bool fMediumLockWrite,
     143                                   Medium *pToBeParent,
     144                                   MediumLockList &mediumLockList);
     145
     146    HRESULT i_createDiffStorage(ComObjPtr<Medium> &aTarget,
     147                                MediumVariant_T aVariant,
     148                                MediumLockList *pMediumLockList,
     149                                ComObjPtr<Progress> *aProgress,
     150                                bool aWait);
     151    Utf8Str i_getPreferredDiffFormat();
     152
     153    HRESULT i_close(AutoCaller &autoCaller);
     154    HRESULT i_unlockRead(MediumState_T *aState);
     155    HRESULT i_unlockWrite(MediumState_T *aState);
     156    HRESULT i_deleteStorage(ComObjPtr<Progress> *aProgress, bool aWait);
     157    HRESULT i_markForDeletion();
     158    HRESULT i_unmarkForDeletion();
     159    HRESULT i_markLockedForDeletion();
     160    HRESULT i_unmarkLockedForDeletion();
     161
     162    HRESULT i_queryPreferredMergeDirection(const ComObjPtr<Medium> &pOther,
     163                                           bool &fMergeForward);
     164
     165    HRESULT i_prepareMergeTo(const ComObjPtr<Medium> &pTarget,
     166                             const Guid *aMachineId,
     167                             const Guid *aSnapshotId,
     168                             bool fLockMedia,
     169                             bool &fMergeForward,
     170                             ComObjPtr<Medium> &pParentForTarget,
     171                             MediumLockList * &aChildrenToReparent,
     172                             MediumLockList * &aMediumLockList);
     173    HRESULT i_mergeTo(const ComObjPtr<Medium> &pTarget,
     174                      bool fMergeForward,
     175                      const ComObjPtr<Medium> &pParentForTarget,
     176                      MediumLockList *aChildrenToReparent,
     177                      MediumLockList *aMediumLockList,
     178                      ComObjPtr<Progress> *aProgress,
     179                      bool aWait);
     180    void i_cancelMergeTo(MediumLockList *aChildrenToReparent,
    253181                       MediumLockList *aMediumLockList);
    254182
    255     HRESULT fixParentUuidOfChildren(MediumLockList *pChildrenToReparent);
    256 
    257     HRESULT exportFile(const char *aFilename,
    258                        const ComObjPtr<MediumFormat> &aFormat,
    259                        MediumVariant_T aVariant,
    260                        PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
    261                        const ComObjPtr<Progress> &aProgress);
    262     HRESULT importFile(const char *aFilename,
    263                        const ComObjPtr<MediumFormat> &aFormat,
    264                        MediumVariant_T aVariant,
    265                        PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
    266                        const ComObjPtr<Medium> &aParent,
    267                        const ComObjPtr<Progress> &aProgress);
    268 
    269     HRESULT cloneToEx(const ComObjPtr<Medium> &aTarget, ULONG aVariant,
    270                       const ComObjPtr<Medium> &aParent, IProgress **aProgress,
    271                       uint32_t idxSrcImageSame, uint32_t idxDstImageSame);
     183    HRESULT i_fixParentUuidOfChildren(MediumLockList *pChildrenToReparent);
     184
     185    HRESULT i_exportFile(const char *aFilename,
     186                         const ComObjPtr<MediumFormat> &aFormat,
     187                         MediumVariant_T aVariant,
     188                         PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
     189                         const ComObjPtr<Progress> &aProgress);
     190    HRESULT i_importFile(const char *aFilename,
     191                        const ComObjPtr<MediumFormat> &aFormat,
     192                        MediumVariant_T aVariant,
     193                        PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
     194                        const ComObjPtr<Medium> &aParent,
     195                        const ComObjPtr<Progress> &aProgress);
     196
     197    HRESULT i_cloneToEx(const ComObjPtr<Medium> &aTarget, ULONG aVariant,
     198                        const ComObjPtr<Medium> &aParent, IProgress **aProgress,
     199                        uint32_t idxSrcImageSame, uint32_t idxDstImageSame);
    272200
    273201private:
    274202
    275     HRESULT queryInfo(bool fSetImageId, bool fSetParentId);
    276 
    277     HRESULT canClose();
    278     HRESULT unregisterWithVirtualBox();
    279 
    280     HRESULT setStateError();
    281 
    282     HRESULT setLocation(const Utf8Str &aLocation, const Utf8Str &aFormat = Utf8Str::Empty);
    283     HRESULT setFormat(const Utf8Str &aFormat);
    284 
    285     VDTYPE convertDeviceType();
    286     DeviceType_T convertToDeviceType(VDTYPE enmType);
    287 
    288     Utf8Str vdError(int aVRC);
    289 
    290     static DECLCALLBACK(void) vdErrorCall(void *pvUser, int rc, RT_SRC_POS_DECL,
    291                                           const char *pszFormat, va_list va);
    292 
    293     static DECLCALLBACK(bool) vdConfigAreKeysValid(void *pvUser,
    294                                                    const char *pszzValid);
    295     static DECLCALLBACK(int) vdConfigQuerySize(void *pvUser, const char *pszName,
    296                                                size_t *pcbValue);
    297     static DECLCALLBACK(int) vdConfigQuery(void *pvUser, const char *pszName,
    298                                            char *pszValue, size_t cchValue);
    299 
    300     static DECLCALLBACK(int) vdTcpSocketCreate(uint32_t fFlags, PVDSOCKET pSock);
    301     static DECLCALLBACK(int) vdTcpSocketDestroy(VDSOCKET Sock);
    302     static DECLCALLBACK(int) vdTcpClientConnect(VDSOCKET Sock, const char *pszAddress, uint32_t uPort);
    303     static DECLCALLBACK(int) vdTcpClientClose(VDSOCKET Sock);
    304     static DECLCALLBACK(bool) vdTcpIsClientConnected(VDSOCKET Sock);
    305     static DECLCALLBACK(int) vdTcpSelectOne(VDSOCKET Sock, RTMSINTERVAL cMillies);
    306     static DECLCALLBACK(int) vdTcpRead(VDSOCKET Sock, void *pvBuffer, size_t cbBuffer, size_t *pcbRead);
    307     static DECLCALLBACK(int) vdTcpWrite(VDSOCKET Sock, const void *pvBuffer, size_t cbBuffer);
    308     static DECLCALLBACK(int) vdTcpSgWrite(VDSOCKET Sock, PCRTSGBUF pSgBuf);
    309     static DECLCALLBACK(int) vdTcpFlush(VDSOCKET Sock);
    310     static DECLCALLBACK(int) vdTcpSetSendCoalescing(VDSOCKET Sock, bool fEnable);
    311     static DECLCALLBACK(int) vdTcpGetLocalAddress(VDSOCKET Sock, PRTNETADDR pAddr);
    312     static DECLCALLBACK(int) vdTcpGetPeerAddress(VDSOCKET Sock, PRTNETADDR pAddr);
     203    // wrapped IMedium properties
     204    HRESULT getId(com::Guid &aId);
     205    HRESULT getDescription(com::Utf8Str &aDescription);
     206    HRESULT setDescription(const com::Utf8Str &aDescription);
     207    HRESULT getState(MediumState_T *aState);
     208    HRESULT getVariant(std::vector<MediumVariant_T> &aVariant);
     209    HRESULT getLocation(com::Utf8Str &aLocation);
     210    HRESULT getName(com::Utf8Str &aName);
     211    HRESULT getDeviceType(DeviceType_T *aDeviceType);
     212    HRESULT getHostDrive(BOOL *aHostDrive);
     213    HRESULT getSize(LONG64 *aSize);
     214    HRESULT getFormat(com::Utf8Str &aFormat);
     215    HRESULT getMediumFormat(ComPtr<IMediumFormat> &aMediumFormat);
     216    HRESULT getType(MediumType_T *aType);
     217    HRESULT setType(MediumType_T aType);
     218    HRESULT getAllowedTypes(std::vector<MediumType_T> &aAllowedTypes);
     219    HRESULT getParent(ComPtr<IMedium> &aParent);
     220    HRESULT getChildren(std::vector<ComPtr<IMedium> > &aChildren);
     221    HRESULT getBase(ComPtr<IMedium> &aBase);
     222    HRESULT getReadOnly(BOOL *aReadOnly);
     223    HRESULT getLogicalSize(LONG64 *aLogicalSize);
     224    HRESULT getAutoReset(BOOL *aAutoReset);
     225    HRESULT setAutoReset(BOOL aAutoReset);
     226    HRESULT getLastAccessError(com::Utf8Str &aLastAccessError);
     227    HRESULT getMachineIds(std::vector<com::Guid> &aMachineIds);
     228
     229    // wrapped IMedium methods
     230    HRESULT setIds(BOOL aSetImageId,
     231                   const com::Guid &aImageId,
     232                   BOOL aSetParentId,
     233                   const com::Guid &aParentId);
     234    HRESULT refreshState(MediumState_T *aState);
     235    HRESULT getSnapshotIds(const com::Guid &aMachineId,
     236                           std::vector<com::Guid> &aSnapshotIds);
     237    HRESULT lockRead(ComPtr<IToken> &aToken);
     238    HRESULT lockWrite(ComPtr<IToken> &aToken);
     239    HRESULT close();
     240    HRESULT getProperty(const com::Utf8Str &aName,
     241                        com::Utf8Str &aValue);
     242    HRESULT setProperty(const com::Utf8Str &aName,
     243                        const com::Utf8Str &aValue);
     244    HRESULT getProperties(const com::Utf8Str &aNames,
     245                          std::vector<com::Utf8Str> &aReturnNames,
     246                          std::vector<com::Utf8Str> &aReturnValues);
     247    HRESULT setProperties(const std::vector<com::Utf8Str> &aNames,
     248                          const std::vector<com::Utf8Str> &aValues);
     249    HRESULT createBaseStorage(LONG64 aLogicalSize,
     250                              const std::vector<MediumVariant_T> &aVariant,
     251                              ComPtr<IProgress> &aProgress);
     252    HRESULT deleteStorage(ComPtr<IProgress> &aProgress);
     253    HRESULT createDiffStorage(const ComPtr<IMedium> &aTarget,
     254                              const std::vector<MediumVariant_T> &aVariant,
     255                              ComPtr<IProgress> &aProgress);
     256    HRESULT mergeTo(const ComPtr<IMedium> &aTarget,
     257                    ComPtr<IProgress> &aProgress);
     258    HRESULT cloneTo(const ComPtr<IMedium> &aTarget,
     259                    const std::vector<MediumVariant_T> &aVariant,
     260                    const ComPtr<IMedium> &aParent,
     261                    ComPtr<IProgress> &aProgress);
     262    HRESULT cloneToBase(const ComPtr<IMedium> &aTarget,
     263                        const std::vector<MediumVariant_T> &aVariant,
     264                        ComPtr<IProgress> &aProgress);
     265    HRESULT setLocation(const com::Utf8Str &aLocation,
     266                        ComPtr<IProgress> &aProgress);
     267    HRESULT compact(ComPtr<IProgress> &aProgress);
     268    HRESULT resize(LONG64 aLogicalSize,
     269                   ComPtr<IProgress> &aProgress);
     270    HRESULT reset(ComPtr<IProgress> &aProgress);
     271
     272    // Private internal nmethods
     273    HRESULT i_queryInfo(bool fSetImageId, bool fSetParentId);
     274    HRESULT i_canClose();
     275    HRESULT i_unregisterWithVirtualBox();
     276    HRESULT i_setStateError();
     277    HRESULT i_setLocation(const Utf8Str &aLocation, const Utf8Str &aFormat = Utf8Str::Empty);
     278    HRESULT i_setFormat(const Utf8Str &aFormat);
     279    VDTYPE i_convertDeviceType();
     280    DeviceType_T i_convertToDeviceType(VDTYPE enmType);
     281    Utf8Str i_vdError(int aVRC);
     282
     283    static DECLCALLBACK(void) i_vdErrorCall(void *pvUser, int rc, RT_SRC_POS_DECL,
     284                                            const char *pszFormat, va_list va);
     285    static DECLCALLBACK(bool) i_vdConfigAreKeysValid(void *pvUser,
     286                                                     const char *pszzValid);
     287    static DECLCALLBACK(int) i_vdConfigQuerySize(void *pvUser, const char *pszName,
     288                                                 size_t *pcbValue);
     289    static DECLCALLBACK(int) i_vdConfigQuery(void *pvUser, const char *pszName,
     290                                             char *pszValue, size_t cchValue);
     291    static DECLCALLBACK(int) i_vdTcpSocketCreate(uint32_t fFlags, PVDSOCKET pSock);
     292    static DECLCALLBACK(int) i_vdTcpSocketDestroy(VDSOCKET Sock);
     293    static DECLCALLBACK(int) i_vdTcpClientConnect(VDSOCKET Sock, const char *pszAddress, uint32_t uPort);
     294    static DECLCALLBACK(int) i_vdTcpClientClose(VDSOCKET Sock);
     295    static DECLCALLBACK(bool) i_vdTcpIsClientConnected(VDSOCKET Sock);
     296    static DECLCALLBACK(int) i_vdTcpSelectOne(VDSOCKET Sock, RTMSINTERVAL cMillies);
     297    static DECLCALLBACK(int) i_vdTcpRead(VDSOCKET Sock, void *pvBuffer, size_t cbBuffer, size_t *pcbRead);
     298    static DECLCALLBACK(int) i_vdTcpWrite(VDSOCKET Sock, const void *pvBuffer, size_t cbBuffer);
     299    static DECLCALLBACK(int) i_vdTcpSgWrite(VDSOCKET Sock, PCRTSGBUF pSgBuf);
     300    static DECLCALLBACK(int) i_vdTcpFlush(VDSOCKET Sock);
     301    static DECLCALLBACK(int) i_vdTcpSetSendCoalescing(VDSOCKET Sock, bool fEnable);
     302    static DECLCALLBACK(int) i_vdTcpGetLocalAddress(VDSOCKET Sock, PRTNETADDR pAddr);
     303    static DECLCALLBACK(int) i_vdTcpGetPeerAddress(VDSOCKET Sock, PRTNETADDR pAddr);
    313304
    314305    class Task;
     
    335326    friend class ImportTask;
    336327
    337     HRESULT startThread(Medium::Task *pTask);
    338     HRESULT runNow(Medium::Task *pTask);
    339 
    340     HRESULT taskCreateBaseHandler(Medium::CreateBaseTask &task);
    341     HRESULT taskCreateDiffHandler(Medium::CreateDiffTask &task);
    342     HRESULT taskMergeHandler(Medium::MergeTask &task);
    343     HRESULT taskCloneHandler(Medium::CloneTask &task);
    344     HRESULT taskDeleteHandler(Medium::DeleteTask &task);
    345     HRESULT taskResetHandler(Medium::ResetTask &task);
    346     HRESULT taskCompactHandler(Medium::CompactTask &task);
    347     HRESULT taskResizeHandler(Medium::ResizeTask &task);
    348     HRESULT taskExportHandler(Medium::ExportTask &task);
    349     HRESULT taskImportHandler(Medium::ImportTask &task);
     328    HRESULT i_startThread(Medium::Task *pTask);
     329    HRESULT i_runNow(Medium::Task *pTask);
     330
     331    HRESULT i_taskCreateBaseHandler(Medium::CreateBaseTask &task);
     332    HRESULT i_taskCreateDiffHandler(Medium::CreateDiffTask &task);
     333    HRESULT i_taskMergeHandler(Medium::MergeTask &task);
     334    HRESULT i_taskCloneHandler(Medium::CloneTask &task);
     335    HRESULT i_taskDeleteHandler(Medium::DeleteTask &task);
     336    HRESULT i_taskResetHandler(Medium::ResetTask &task);
     337    HRESULT i_taskCompactHandler(Medium::CompactTask &task);
     338    HRESULT i_taskResizeHandler(Medium::ResizeTask &task);
     339    HRESULT i_taskExportHandler(Medium::ExportTask &task);
     340    HRESULT i_taskImportHandler(Medium::ImportTask &task);
    350341
    351342    struct Data;            // opaque data struct, defined in MediumImpl.cpp
  • trunk/src/VBox/Main/src-server/ApplianceImplExport.cpp

    r49747 r49795  
    21352135                    if (FAILED(rc)) throw rc;
    21362136
    2137                     rc = pSourceDisk->exportFile(strTargetFilePath.c_str(),
    2138                                                  format,
    2139                                                  MediumVariant_VmdkStreamOptimized,
    2140                                                  pIfIo,
    2141                                                  pStorage,
    2142                                                  pProgress2);
     2137                    rc = pSourceDisk->i_exportFile(strTargetFilePath.c_str(),
     2138                                                   format,
     2139                                                   MediumVariant_VmdkStreamOptimized,
     2140                                                   pIfIo,
     2141                                                   pStorage,
     2142                                                   pProgress2);
    21432143                    if (FAILED(rc)) throw rc;
    21442144
  • trunk/src/VBox/Main/src-server/ApplianceImplImport.cpp

    r49753 r49795  
    15661566        /*
    15671567         * Restoring original UUID from OVF description file.
    1568          * During import VB creates new UUIDs for imported images and 
     1568         * During import VB creates new UUIDs for imported images and
    15691569         * assigns them to the images. In case of failure we have to restore
    15701570         * the original UUIDs because those new UUIDs are obsolete now and
     
    17921792        /*
    17931793         * Restoring original UUID from OVF description file.
    1794          * During import VB creates new UUIDs for imported images and 
     1794         * During import VB creates new UUIDs for imported images and
    17951795         * assigns them to the images. In case of failure we have to restore
    17961796         * the original UUIDs because those new UUIDs are obsolete now and
     
    24882488                    /* Clone the source disk image */
    24892489                    ComObjPtr<Medium> nullParent;
    2490                     rc = pTargetHD->importFile(strSrcFilePath.c_str(),
    2491                                                srcFormat,
    2492                                                MediumVariant_Standard,
    2493                                                pCallbacks, pRealUsedStorage,
    2494                                                nullParent,
    2495                                                pProgress);
     2490                    rc = pTargetHD->i_importFile(strSrcFilePath.c_str(),
     2491                                                 srcFormat,
     2492                                                 MediumVariant_Standard,
     2493                                                 pCallbacks, pRealUsedStorage,
     2494                                                 nullParent,
     2495                                                 pProgress);
    24962496                    if (FAILED(rc)) throw rc;
    24972497
     
    37643764
    37653765                /*
    3766                  * 1. saving original UUID for restoring in case of failure. 
     3766                 * 1. saving original UUID for restoring in case of failure.
    37673767                 * 2. replacement of original UUID by new UUID in the current VM config (settings::MachineConfigFile).
    37683768                 */
  • trunk/src/VBox/Main/src-server/HostImpl.cpp

    r49778 r49795  
    18571857            {
    18581858                Medium *pCached = *itCached;
    1859                 const Utf8Str strLocationCached = pCached->getLocationFull();
     1859                const Utf8Str strLocationCached = pCached->i_getLocationFull();
    18601860                bool fFound = false;
    18611861                for (MediaList::iterator itNew = llNew.begin();
     
    18641864                {
    18651865                    Medium *pNew = *itNew;
    1866                     const Utf8Str strLocationNew = pNew->getLocationFull();
     1866                    const Utf8Str strLocationNew = pNew->i_getLocationFull();
    18671867                    if (strLocationNew == strLocationCached)
    18681868                    {
     
    18831883            {
    18841884                Medium *pNew = *itNew;
    1885                 const Utf8Str strLocationNew = pNew->getLocationFull();
     1885                const Utf8Str strLocationNew = pNew->i_getLocationFull();
    18861886                bool fFound = false;
    18871887                for (MediaList::iterator itCached = pllCached->begin();
     
    18901890                {
    18911891                    Medium *pCached = *itCached;
    1892                     const Utf8Str strLocationCached = pCached->getLocationFull();
     1892                    const Utf8Str strLocationCached = pCached->i_getLocationFull();
    18931893                    if (strLocationNew == strLocationCached)
    18941894                    {
     
    19391939            AutoCaller mediumCaller(pThis);
    19401940            AutoReadLock mediumLock(pThis COMMA_LOCKVAL_SRC_POS);
    1941             if (pThis->getId() == uuid)
     1941            if (pThis->i_getId() == uuid)
    19421942            {
    19431943                pMedium = pThis;
     
    19791979            AutoCaller mediumCaller(pThis);
    19801980            AutoReadLock mediumLock(pThis COMMA_LOCKVAL_SRC_POS);
    1981             if (pThis->getLocationFull() == strLocationFull)
     1981            if (pThis->i_getLocationFull() == strLocationFull)
    19821982            {
    19831983                pMedium = pThis;
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r49742 r49795  
    40864086            return setError(VBOX_E_OBJECT_IN_USE,
    40874087                            tr("Medium '%s' is already attached to port %d, device %d of controller '%ls' of this virtual machine"),
    4088                             pMedium->getLocationFull().c_str(),
     4088                            pMedium->i_getLocationFull().c_str(),
    40894089                            aControllerPort,
    40904090                            aDevice,
     
    41114111        return setError(VBOX_E_OBJECT_IN_USE,
    41124112                        tr("Medium '%s' is already attached to this virtual machine"),
    4113                         medium->getLocationFull().c_str());
     4113                        medium->i_getLocationFull().c_str());
    41144114
    41154115    if (!medium.isNull())
    41164116    {
    4117         MediumType_T mtype = medium->getType();
     4117        MediumType_T mtype = medium->i_getType();
    41184118        // MediumType_Readonly is also new, but only applies to DVDs and floppies.
    41194119        // For DVDs it's not written to the config file, so needs no global config
     
    41334133            // global registry:
    41344134            const Guid &uuidGlobalRegistry = mParent->getGlobalRegistryId();
    4135             if (    medium->isInRegistry(uuidGlobalRegistry)
     4135            if (    medium->i_isInRegistry(uuidGlobalRegistry)
    41364136                 || !mData->pMachineConfigFile->canHaveOwnMediaRegistry()
    41374137               )
     
    41394139                                tr("Cannot attach medium '%s': the media type 'MultiAttach' can only be attached "
    41404140                                   "to machines that were created with VirtualBox 4.0 or later"),
    4141                                 medium->getLocationFull().c_str());
     4141                                medium->i_getLocationFull().c_str());
    41424142        }
    41434143    }
     
    41454145    bool fIndirect = false;
    41464146    if (!medium.isNull())
    4147         fIndirect = medium->isReadOnly();
     4147        fIndirect = medium->i_isReadOnly();
    41484148    bool associate = true;
    41494149
     
    41784178                        MediumLockList *pMediumLockList(new MediumLockList());
    41794179
    4180                         rc = medium->createMediumLockList(true /* fFailIfInaccessible */,
    4181                                                           true /* fMediumLockWrite */,
    4182                                                           NULL,
    4183                                                           *pMediumLockList);
     4180                        rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
     4181                                                            true /* fMediumLockWrite */,
     4182                                                            NULL,
     4183                                                            *pMediumLockList);
    41844184                        alock.acquire();
    41854185                        if (FAILED(rc))
     
    42264226         * hard disks. */
    42274227
    4228         if (medium->getParent().isNull())
     4228        if (medium->i_getParent().isNull())
    42294229        {
    42304230            /* first, investigate the backup copy of the current hard disk
     
    42494249                        continue;
    42504250
    4251                     if (pMedium->getBase(&level) == medium)
     4251                    if (pMedium->i_getBase(&level) == medium)
    42524252                    {
    42534253                        /* skip the hard disk if its currently attached (we
     
    42774277                                MediumLockList *pMediumLockList(new MediumLockList());
    42784278
    4279                                 rc = medium->createMediumLockList(true /* fFailIfInaccessible */,
    4280                                                                   true /* fMediumLockWrite */,
    4281                                                                   NULL,
    4282                                                                   *pMediumLockList);
     4279                                rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
     4280                                                                    true /* fMediumLockWrite */,
     4281                                                                    NULL,
     4282                                                                    *pMediumLockList);
    42834283                                alock.acquire();
    42844284                                if (FAILED(rc))
     
    43644364
    43654365                    uint32_t level = 0;
    4366                     if (pMedium->getBase(&level) == medium)
     4366                    if (pMedium->i_getBase(&level) == medium)
    43674367                    {
    43684368                        /* matched device, channel and bus (i.e. attached to the
     
    44194419        // store this diff in the same registry as the parent
    44204420        Guid uuidRegistryParent;
    4421         if (!medium->getFirstRegistryMachineId(uuidRegistryParent))
     4421        if (!medium->i_getFirstRegistryMachineId(uuidRegistryParent))
    44224422        {
    44234423            // parent image has no registry: this can happen if we're attaching a new immutable
     
    44324432            treeLock.acquire();
    44334433            mediumLock.acquire();
    4434             medium->getFirstRegistryMachineId(uuidRegistryParent);
     4434            medium->i_getFirstRegistryMachineId(uuidRegistryParent);
    44354435        }
    44364436        rc = diff->init(mParent,
    4437                         medium->getPreferredDiffFormat(),
     4437                        medium->i_getPreferredDiffFormat(),
    44384438                        strFullSnapshotFolder.append(RTPATH_SLASH_STR),
    44394439                        uuidRegistryParent);
     
    44444444        mediumLock.release();
    44454445        treeLock.release();
    4446         rc = diff->createMediumLockList(true /* fFailIfInaccessible */,
    4447                                         true /* fMediumLockWrite */,
    4448                                         medium,
    4449                                         *pMediumLockList);
     4446        rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
     4447                                          true /* fMediumLockWrite */,
     4448                                          medium,
     4449                                          *pMediumLockList);
    44504450        treeLock.acquire();
    44514451        mediumLock.acquire();
     
    44604460                setError(rc,
    44614461                         tr("Could not lock medium when creating diff '%s'"),
    4462                          diff->getLocationFull().c_str());
     4462                         diff->i_getLocationFull().c_str());
    44634463            else
    44644464            {
     
    44724472                alock.release();
    44734473
    4474                 rc = medium->createDiffStorage(diff,
    4475                                                MediumVariant_Standard,
    4476                                                pMediumLockList,
    4477                                                NULL /* aProgress */,
    4478                                                true /* aWait */);
     4474                rc = medium->i_createDiffStorage(diff,
     4475                                                 MediumVariant_Standard,
     4476                                                 pMediumLockList,
     4477                                                 NULL /* aProgress */,
     4478                                                 true /* aWait */);
    44794479
    44804480                alock.acquire();
     
    45194519    {
    45204520        // as the last step, associate the medium to the VM
    4521         rc = medium->addBackReference(mData->mUuid);
     4521        rc = medium->i_addBackReference(mData->mUuid);
    45224522        // here we can fail because of Deleting, or being in process of creating a Diff
    45234523        if (FAILED(rc)) return rc;
     
    45474547            MediumLockList *pMediumLockList(new MediumLockList());
    45484548
    4549             rc = medium->createMediumLockList(true /* fFailIfInaccessible */,
     4549            rc = medium->i_createMediumLockList(true /* fFailIfInaccessible */,
    45504550                                              true /* fMediumLockWrite */,
    45514551                                              NULL,
     
    50905090                                 aDevice);
    50915091        if (!oldmedium.isNull())
    5092             oldmedium->removeBackReference(mData->mUuid);
     5092            oldmedium->i_removeBackReference(mData->mUuid);
    50935093        if (!pMedium.isNull())
    50945094        {
    5095             pMedium->addBackReference(mData->mUuid);
     5095            pMedium->i_addBackReference(mData->mUuid);
    50965096
    50975097            mediumLock.release();
     
    51185118    {
    51195119        if (!pMedium.isNull())
    5120             pMedium->removeBackReference(mData->mUuid);
     5120            pMedium->i_removeBackReference(mData->mUuid);
    51215121        pAttach = findAttachment(mMediaData->mAttachments,
    51225122                                 aControllerName,
     
    51285128        AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
    51295129        if (!oldmedium.isNull())
    5130             oldmedium->addBackReference(mData->mUuid);
     5130            oldmedium->i_addBackReference(mData->mUuid);
    51315131        pAttach->updateMedium(oldmedium);
    51325132    }
     
    56975697                AutoCaller mac(pMedium);
    56985698                if (FAILED(mac.rc())) throw mac.rc();
    5699                 Utf8Str strLocation = pMedium->getLocationFull();
     5699                Utf8Str strLocation = pMedium->i_getLocationFull();
    57005700                rc = task.pProgress->SetNextOperation(BstrFmt(tr("Deleting '%s'"), strLocation.c_str()).raw(), 1);
    57015701                if (FAILED(rc)) throw rc;
     
    57245724                pMedium->Close();
    57255725            }
    5726 
    57275726        }
    57285727        setMachineState(oldState);
     
    88248823            if (pMedium.isNull())
    88258824                continue;
    8826             HRESULT rc = pMedium->removeBackReference(mData->mUuid, getSnapshotId());
     8825            HRESULT rc = pMedium->i_removeBackReference(mData->mUuid, getSnapshotId());
    88278826            AssertComRC(rc);
    88288827        }
     
    97029701                AutoWriteLock hdLock(medium COMMA_LOCKVAL_SRC_POS);
    97039702
    9704                 if (medium->getType() == MediumType_Immutable)
     9703                if (medium->i_getType() == MediumType_Immutable)
    97059704                {
    97069705                    if (isSnapshotMachine())
     
    97089707                                        tr("Immutable hard disk '%s' with UUID {%RTuuid} cannot be directly attached to snapshot with UUID {%RTuuid} "
    97099708                                           "of the virtual machine '%s' ('%s')"),
    9710                                         medium->getLocationFull().c_str(),
     9709                                        medium->i_getLocationFull().c_str(),
    97119710                                        dev.uuid.raw(),
    97129711                                        puuidSnapshot->raw(),
     
    97169715                    return setError(E_FAIL,
    97179716                                    tr("Immutable hard disk '%s' with UUID {%RTuuid} cannot be directly attached to the virtual machine '%s' ('%s')"),
    9718                                     medium->getLocationFull().c_str(),
     9717                                    medium->i_getLocationFull().c_str(),
    97199718                                    dev.uuid.raw(),
    97209719                                    mUserData->s.strName.c_str(),
     
    97229721                }
    97239722
    9724                 if (medium->getType() == MediumType_MultiAttach)
     9723                if (medium->i_getType() == MediumType_MultiAttach)
    97259724                {
    97269725                    if (isSnapshotMachine())
     
    97289727                                        tr("Multi-attach hard disk '%s' with UUID {%RTuuid} cannot be directly attached to snapshot with UUID {%RTuuid} "
    97299728                                           "of the virtual machine '%s' ('%s')"),
    9730                                         medium->getLocationFull().c_str(),
     9729                                        medium->i_getLocationFull().c_str(),
    97319730                                        dev.uuid.raw(),
    97329731                                        puuidSnapshot->raw(),
     
    97369735                    return setError(E_FAIL,
    97379736                                    tr("Multi-attach hard disk '%s' with UUID {%RTuuid} cannot be directly attached to the virtual machine '%s' ('%s')"),
    9738                                     medium->getLocationFull().c_str(),
     9737                                    medium->i_getLocationFull().c_str(),
    97399738                                    dev.uuid.raw(),
    97409739                                    mUserData->s.strName.c_str(),
     
    97439742
    97449743                if (    !isSnapshotMachine()
    9745                      && medium->getChildren().size() != 0
     9744                     && medium->i_getChildren().size() != 0
    97469745                   )
    97479746                    return setError(E_FAIL,
    97489747                                    tr("Hard disk '%s' with UUID {%RTuuid} cannot be directly attached to the virtual machine '%s' ('%s') "
    97499748                                       "because it has %d differencing child hard disks"),
    9750                                     medium->getLocationFull().c_str(),
     9749                                    medium->i_getLocationFull().c_str(),
    97519750                                    dev.uuid.raw(),
    97529751                                    mUserData->s.strName.c_str(),
    97539752                                    mData->m_strConfigFileFull.c_str(),
    9754                                     medium->getChildren().size());
     9753                                    medium->i_getChildren().size());
    97559754
    97569755                if (findAttachment(mMediaData->mAttachments,
     
    97589757                    return setError(E_FAIL,
    97599758                                    tr("Hard disk '%s' with UUID {%RTuuid} is already attached to the virtual machine '%s' ('%s')"),
    9760                                     medium->getLocationFull().c_str(),
     9759                                    medium->i_getLocationFull().c_str(),
    97619760                                    dev.uuid.raw(),
    97629761                                    mUserData->s.strName.c_str(),
     
    97699768                return setError(E_FAIL,
    97709769                                tr("Device '%s' with unknown type is attached to the virtual machine '%s' ('%s')"),
    9771                                 medium->getLocationFull().c_str(),
     9770                                medium->i_getLocationFull().c_str(),
    97729771                                mUserData->s.strName.c_str(),
    97739772                                mData->m_strConfigFileFull.c_str());
     
    97869785                return setError(E_FAIL,
    97879786                                tr("Device '%s' with unknown bandwidth group '%s' is attached to the virtual machine '%s' ('%s')"),
    9788                                 medium->getLocationFull().c_str(),
     9787                                medium->i_getLocationFull().c_str(),
    97899788                                dev.strBwGroup.c_str(),
    97909789                                mUserData->s.strName.c_str(),
     
    98199818
    98209819            if (isSnapshotMachine())
    9821                 rc = medium->addBackReference(mData->mUuid, *puuidSnapshot);
     9820                rc = medium->i_addBackReference(mData->mUuid, *puuidSnapshot);
    98229821            else
    9823                 rc = medium->addBackReference(mData->mUuid);
     9822                rc = medium->i_addBackReference(mData->mUuid);
    98249823            /* If the medium->addBackReference fails it sets an appropriate
    98259824             * error message, so no need to do any guesswork here. */
     
    98279826            if (puuidRegistry)
    98289827                // caller wants registry ID to be set on all attached media (OVF import case)
    9829                 medium->addRegistry(*puuidRegistry, false /* fRecurse */);
     9828                medium->i_addRegistry(*puuidRegistry, false /* fRecurse */);
    98309829        }
    98319830
     
    1040610405 * with it.
    1040710406 *
    10408  * Caller must hold the machine lock!
     10407  Caller must hold the machine lock!
    1040910408 *
    1041010409 * This throws XML errors and HRESULT, so the caller must have a catch block!
     
    1091510914        if (pMedium)
    1091610915        {
    10917             if (pMedium->isHostDrive())
    10918                 dev.strHostDriveSrc = pMedium->getLocationFull();
     10916            if (pMedium->i_isHostDrive())
     10917                dev.strHostDriveSrc = pMedium->i_getLocationFull();
    1091910918            else
    10920                 dev.uuid = pMedium->getId();
     10919                dev.uuid = pMedium->i_getId();
    1092110920            dev.fTempEject = pAttach->getTempEject();
    1092210921            dev.fNonRotational = pAttach->getNonRotational();
     
    1100911008    {
    1101011009        AutoReadLock treeLock(&mParent->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
    11011         pBase = pMedium->getBase();
     11010        pBase = pMedium->i_getBase();
    1101211011    }
    1101311012
     
    1102411023        uuid = mParent->getGlobalRegistryId(); // VirtualBox global registry UUID
    1102511024
    11026     if (pMedium->addRegistry(uuid, false /* fRecurse */))
     11025    if (pMedium->i_addRegistry(uuid, false /* fRecurse */))
    1102711026        mParent->markRegistryModified(uuid);
    1102811027
     
    1103111030    if (pMedium != pBase)
    1103211031    {
    11033         if (pBase->addRegistry(uuid, true /* fRecurse */))
     11032        if (pBase->i_addRegistry(uuid, true /* fRecurse */))
    1103411033            mParent->markRegistryModified(uuid);
    1103511034    }
     
    1111411113                    MediumLockList *pMediumLockList(new MediumLockList());
    1111511114                    alock.release();
    11116                     rc = pMedium->createMediumLockList(true /* fFailIfInaccessible */,
    11117                                                        false /* fMediumLockWrite */,
    11118                                                        NULL,
    11119                                                        *pMediumLockList);
     11115                    rc = pMedium->i_createMediumLockList(true /* fFailIfInaccessible */,
     11116                                                         false /* fMediumLockWrite */,
     11117                                                         NULL,
     11118                                                         *pMediumLockList);
    1112011119                    alock.acquire();
    1112111120                    if (FAILED(rc))
     
    1116411163            if (   devType != DeviceType_HardDisk
    1116511164                || pMedium == NULL
    11166                 || pMedium->getType() != MediumType_Normal)
     11165                || pMedium->i_getType() != MediumType_Normal)
    1116711166            {
    1116811167                /* copy the attachment as is */
     
    1117811177                    else
    1117911178                        aProgress->SetNextOperation(BstrFmt(tr("Skipping medium '%s'"),
    11180                                                             pMedium->getBase()->getName().c_str()).raw(),
     11179                                                            pMedium->i_getBase()->i_getName().c_str()).raw(),
    1118111180                                                    aWeight);        // weight
    1118211181                }
     
    1118811187            /* need a diff */
    1118911188            aProgress->SetNextOperation(BstrFmt(tr("Creating differencing hard disk for '%s'"),
    11190                                                 pMedium->getBase()->getName().c_str()).raw(),
     11189                                                pMedium->i_getBase()->i_getName().c_str()).raw(),
    1119111190                                        aWeight);        // weight
    1119211191
     
    1120011199            // unregistered images)
    1120111200            Guid uuidRegistryParent;
    11202             bool fInRegistry = pMedium->getFirstRegistryMachineId(uuidRegistryParent);
     11201            bool fInRegistry = pMedium->i_getFirstRegistryMachineId(uuidRegistryParent);
    1120311202            Assert(fInRegistry); NOREF(fInRegistry);
    1120411203            rc = diff->init(mParent,
    11205                             pMedium->getPreferredDiffFormat(),
     11204                            pMedium->i_getPreferredDiffFormat(),
    1120611205                            strFullSnapshotFolder.append(RTPATH_SLASH_STR),
    1120711206                            uuidRegistryParent);
     
    1122911228            /* release the locks before the potentially lengthy operation */
    1123011229            alock.release();
    11231             rc = pMedium->createDiffStorage(diff, MediumVariant_Standard,
    11232                                             pMediumLockList,
    11233                                             NULL /* aProgress */,
    11234                                             true /* aWait */);
     11230            rc = pMedium->i_createDiffStorage(diff, MediumVariant_Standard,
     11231                                              pMediumLockList,
     11232                                              NULL /* aProgress */,
     11233                                              true /* aWait */);
    1123511234            alock.acquire();
    1123611235            if (FAILED(rc)) throw rc;
     
    1123811237            /* actual lock list update is done in Medium::commitMedia */
    1123911238
    11240             rc = diff->addBackReference(mData->mUuid);
     11239            rc = diff->i_addBackReference(mData->mUuid);
    1124111240            AssertComRCThrowRC(rc);
    1124211241
     
    1136411363                    MediumLockList *pMediumLockList(new MediumLockList());
    1136511364                    alock.release();
    11366                     rc = pMedium->createMediumLockList(true /* fFailIfInaccessible */,
    11367                                                        false /* fMediumLockWrite */,
    11368                                                        NULL,
    11369                                                        *pMediumLockList);
     11365                    rc = pMedium->i_createMediumLockList(true /* fFailIfInaccessible */,
     11366                                                         false /* fMediumLockWrite */,
     11367                                                         NULL,
     11368                                                         *pMediumLockList);
    1137011369                    alock.acquire();
    1137111370
     
    1140611405                /* Deassociate and mark for deletion */
    1140711406                LogFlowThisFunc(("Detaching '%s', pending deletion\n", pAtt->getLogName()));
    11408                 rc = pMedium->removeBackReference(mData->mUuid);
     11407                rc = pMedium->i_removeBackReference(mData->mUuid);
    1140911408                if (FAILED(rc))
    1141011409                   throw rc;
     
    1141811417                /* no: de-associate */
    1141911418                LogFlowThisFunc(("Detaching '%s', no deletion\n", pAtt->getLogName()));
    11420                 rc = pMedium->removeBackReference(mData->mUuid);
     11419                rc = pMedium->i_removeBackReference(mData->mUuid);
    1142111420                if (FAILED(rc))
    1142211421                    throw rc;
     
    1146111460                Assert(pMedium);
    1146211461
    11463                 rc = pMedium->deleteStorage(NULL /*aProgress*/, true /*aWait*/);
     11462                rc = pMedium->i_deleteStorage(NULL /*aProgress*/, true /*aWait*/);
    1146411463                // continue on delete failure, just collect error messages
    11465                 AssertMsg(SUCCEEDED(rc), ("rc=%Rhrc it=%s hd=%s\n", rc, pAtt->getLogName(), pMedium->getLocationFull().c_str() ));
     11464                AssertMsg(SUCCEEDED(rc), ("rc=%Rhrc it=%s hd=%s\n", rc, pAtt->getLogName(), pMedium->i_getLocationFull().c_str() ));
    1146611465                mrc = rc;
    1146711466            }
     
    1157911578        MediumAttachment *pAttach = *it;
    1158011579        ComObjPtr<Medium> pMediumThis = pAttach->getMedium();
    11581         if (pMediumThis->getId() == id)
     11580        if (pMediumThis->i_getId() == id)
    1158211581            return pAttach;
    1158311582    }
     
    1160211601    DeviceType_T mediumType = pAttach->getType();
    1160311602
    11604     LogFlowThisFunc(("Entering, medium of attachment is %s\n", oldmedium ? oldmedium->getLocationFull().c_str() : "NULL"));
     11603    LogFlowThisFunc(("Entering, medium of attachment is %s\n", oldmedium ? oldmedium->i_getLocationFull().c_str() : "NULL"));
    1160511604
    1160611605    if (pAttach->isImplicit())
     
    1162111620        writeLock.release();
    1162211621
    11623         HRESULT rc = oldmedium->deleteStorage(NULL /*aProgress*/,
    11624                                               true /*aWait*/);
     11622        HRESULT rc = oldmedium->i_deleteStorage(NULL /*aProgress*/,
     11623                                                true /*aWait*/);
    1162511624
    1162611625        writeLock.acquire();
     
    1163911638        // if this is from a snapshot, do not defer detachment to commitMedia()
    1164011639        if (pSnapshot)
    11641             oldmedium->removeBackReference(mData->mUuid, pSnapshot->getId());
     11640            oldmedium->i_removeBackReference(mData->mUuid, pSnapshot->getId());
    1164211641        // else if non-hard disk media, do not defer detachment to commitMedia() either
    1164311642        else if (mediumType != DeviceType_HardDisk)
    11644             oldmedium->removeBackReference(mData->mUuid);
     11643            oldmedium->i_removeBackReference(mData->mUuid);
    1164511644    }
    1164611645
     
    1169711696            if (FAILED(mac.rc())) return mac.rc();
    1169811697            AutoReadLock lock(pMedium COMMA_LOCKVAL_SRC_POS);
    11699             DeviceType_T devType = pMedium->getDeviceType();
     11698            DeviceType_T devType = pMedium->i_getDeviceType();
    1170011699            if (    (    cleanupMode == CleanupMode_DetachAllReturnHardDisksOnly
    1170111700                      && devType == DeviceType_HardDisk)
     
    1170411703            {
    1170511704                llMedia.push_back(pMedium);
    11706                 ComObjPtr<Medium> pParent = pMedium->getParent();
     11705                ComObjPtr<Medium> pParent = pMedium->i_getParent();
    1170711706                /*
    1170811707                 * Search for medias which are not attached to any machine, but
     
    1171811717                    if (FAILED(mac1.rc())) return mac1.rc();
    1171911718                    AutoReadLock lock1(pParent COMMA_LOCKVAL_SRC_POS);
    11720                     if (pParent->getChildren().size() == 1)
     11719                    if (pParent->i_getChildren().size() == 1)
    1172111720                    {
    11722                         if (   pParent->getMachineBackRefCount() == 0
    11723                             && pParent->getType() == MediumType_Normal
     11721                        if (   pParent->i_getMachineBackRefCount() == 0
     11722                            && pParent->i_getType() == MediumType_Normal
    1172411723                            && find(llMedia.begin(), llMedia.end(), pParent) == llMedia.end())
    1172511724                            llMedia.push_back(pParent);
     
    1172711726                    else
    1172811727                        break;
    11729                     pParent = pParent->getParent();
     11728                    pParent = pParent->i_getParent();
    1173011729                }
    1173111730            }
     
    1178711786
    1178811787        LogFlowThisFunc(("Examining current medium '%s' (implicit: %d)\n",
    11789                          (pMedium) ? pMedium->getName().c_str() : "NULL",
     11788                         (pMedium) ? pMedium->i_getName().c_str() : "NULL",
    1179011789                         fImplicit));
    1179111790
     
    1180211801               )
    1180311802            {
    11804                 ComObjPtr<Medium> parent = pMedium->getParent();
     11803                ComObjPtr<Medium> parent = pMedium->i_getParent();
    1180511804                AutoWriteLock parentLock(parent COMMA_LOCKVAL_SRC_POS);
    1180611805
     
    1183811837                if (pOldAttach->getMedium() == pMedium)
    1183911838                {
    11840                     LogFlowThisFunc(("--> medium '%s' was attached before, will not remove\n", pMedium->getName().c_str()));
     11839                    LogFlowThisFunc(("--> medium '%s' was attached before, will not remove\n", pMedium->i_getName().c_str()));
    1184111840
    1184211841                    /* yes: remove from old to avoid de-association */
     
    1186111860        if (pAttach->getType() == DeviceType_HardDisk && pMedium)
    1186211861        {
    11863             LogFlowThisFunc(("detaching medium '%s' from machine\n", pMedium->getName().c_str()));
     11862            LogFlowThisFunc(("detaching medium '%s' from machine\n", pMedium->i_getName().c_str()));
    1186411863
    1186511864            /* now de-associate from the current machine state */
    11866             rc = pMedium->removeBackReference(mData->mUuid);
     11865            rc = pMedium->i_removeBackReference(mData->mUuid);
    1186711866            AssertComRC(rc);
    1186811867
     
    1196411963            if (pMedium)
    1196511964            {
    11966                 rc = pMedium->removeBackReference(mData->mUuid);
     11965                rc = pMedium->i_removeBackReference(mData->mUuid);
    1196711966                AssertComRC(rc);
    1196811967            }
     
    1197811977            if (pMedium)
    1197911978            {
    11980                 rc = pMedium->addBackReference(mData->mUuid);
     11979                rc = pMedium->i_addBackReference(mData->mUuid);
    1198111980                AssertComRC(rc);
    1198211981            }
     
    1399413993            AutoWriteLock attLock(pAttach COMMA_LOCKVAL_SRC_POS);
    1399513994            if (!oldmedium.isNull())
    13996                 oldmedium->removeBackReference(mData->mUuid);
     13995                oldmedium->i_removeBackReference(mData->mUuid);
    1399713996
    1399813997            pAttach->updateMedium(NULL);
     
    1472614725        if (pMedium != NULL)
    1472714726        {
    14728             MediumType_T mediumType = pMedium->getType();
     14727            MediumType_T mediumType = pMedium->i_getType();
    1472914728            bool fIsReadOnlyLock =    mediumType == MediumType_Readonly
    1473014729                                   || mediumType == MediumType_Shareable;
     
    1473214731
    1473314732            alock.release();
    14734             mrc = pMedium->createMediumLockList(fIsVitalImage /* fFailIfInaccessible */,
    14735                                                 !fIsReadOnlyLock /* fMediumLockWrite */,
    14736                                                 NULL,
    14737                                                 *pMediumLockList);
     14733            mrc = pMedium->i_createMediumLockList(fIsVitalImage /* fFailIfInaccessible */,
     14734                                                  !fIsReadOnlyLock /* fMediumLockWrite */,
     14735                                                  NULL,
     14736                                                  *pMediumLockList);
    1473814737            alock.acquire();
    1473914738            if (FAILED(mrc))
  • trunk/src/VBox/Main/src-server/MachineImplCloneVM.cpp

    r49742 r49795  
    659659        diff.createObject();
    660660        rc = diff->init(p->getVirtualBox(),
    661                         pParent->getPreferredDiffFormat(),
     661                        pParent->i_getPreferredDiffFormat(),
    662662                        Utf8StrFmt("%s%c", strSnapshotFolder.c_str(), RTPATH_DELIMITER),
    663663                        Guid::Empty /* empty media registry */);
     
    665665
    666666        MediumLockList *pMediumLockList(new MediumLockList());
    667         rc = diff->createMediumLockList(true /* fFailIfInaccessible */,
    668                                         true /* fMediumLockWrite */,
    669                                         pParent,
    670                                         *pMediumLockList);
     667        rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
     668                                          true /* fMediumLockWrite */,
     669                                          pParent,
     670                                          *pMediumLockList);
    671671        if (FAILED(rc)) throw rc;
    672672        rc = pMediumLockList->Lock();
     
    674674
    675675        /* this already registers the new diff image */
    676         rc = pParent->createDiffStorage(diff, MediumVariant_Standard,
    677                                         pMediumLockList,
    678                                         NULL /* aProgress */,
    679                                         true /* aWait */);
     676        rc = pParent->i_createDiffStorage(diff, MediumVariant_Standard,
     677                                          pMediumLockList,
     678                                          NULL /* aProgress */,
     679                                          true /* aWait */);
    680680        delete pMediumLockList;
    681681        if (FAILED(rc)) throw rc;
     
    10541054                    if (pLMedium.isNull())
    10551055                        throw p->setError(VBOX_E_OBJECT_NOT_FOUND);
    1056                     ComObjPtr<Medium> pBase = pLMedium->getBase();
    1057                     if (pBase->isReadOnly())
     1056                    ComObjPtr<Medium> pBase = pLMedium->i_getBase();
     1057                    if (pBase->i_isReadOnly())
    10581058                    {
    10591059                        ComObjPtr<Medium> pDiff;
     
    11811181
    11821182                        /* Update the new uuid. */
    1183                         pTarget->updateId(newId);
     1183                        pTarget->i_updateId(newId);
    11841184
    11851185                        srcLock.release();
     
    11881188
    11891189                        ComObjPtr<Medium> pLMedium = static_cast<Medium*>((IMedium*)pMedium);
    1190                         rc = pLMedium->cloneToEx(pTarget,
    1191                                                  srcVar,
    1192                                                  pNewParent,
    1193                                                  progress2.asOutParam(),
    1194                                                  uSrcParentIdx,
    1195                                                  uTrgParentIdx);
     1190                        rc = pLMedium->i_cloneToEx(pTarget,
     1191                                                   srcVar,
     1192                                                   pNewParent,
     1193                                                   progress2.asOutParam(),
     1194                                                   uSrcParentIdx,
     1195                                                   uTrgParentIdx);
    11961196                        if (FAILED(rc)) throw rc;
    11971197
     
    12541254                if (pLMedium.isNull())
    12551255                    throw p->setError(VBOX_E_OBJECT_NOT_FOUND);
    1256                 ComObjPtr<Medium> pBase = pLMedium->getBase();
    1257                 if (pBase->isReadOnly())
     1256                ComObjPtr<Medium> pBase = pLMedium->i_getBase();
     1257                if (pBase->i_isReadOnly())
    12581258                {
    12591259                    ComObjPtr<Medium> pDiff;
     
    12921292            if (d->options.contains(CloneOptions_Link))
    12931293            {
    1294                 ComObjPtr<Medium> pParent = pMedium->getParent();
     1294                ComObjPtr<Medium> pParent = pMedium->i_getParent();
    12951295                mlock.release();
    12961296                if (!pParent.isNull())
     
    12991299                    if (FAILED(mac2.rc())) throw mac2.rc();
    13001300                    AutoReadLock mlock2(pParent COMMA_LOCKVAL_SRC_POS);
    1301                     if (pParent->getFirstRegistryMachineId(uuid))
     1301                    if (pParent->i_getFirstRegistryMachineId(uuid))
    13021302                    {
    13031303                        mlock2.release();
     
    13121312                mlock.acquire();
    13131313            }
    1314             pMedium->addRegistry(uuid, false /* fRecurse */);
     1314            pMedium->i_addRegistry(uuid, false /* fRecurse */);
    13151315        }
    13161316        /* Check if a snapshot folder is necessary and if so doesn't already
     
    14071407        {
    14081408            const ComObjPtr<Medium> &pMedium = newMedia.at(i - 1);
    1409             mrc = pMedium->deleteStorage(NULL /* aProgress */,
     1409            mrc = pMedium->i_deleteStorage(NULL /* aProgress */,
    14101410                                         true /* aWait */);
    14111411            pMedium->Close();
  • trunk/src/VBox/Main/src-server/MediumImpl.cpp

    r48967 r49795  
    251251    AutoCaller mMediumCaller;
    252252
    253     friend HRESULT Medium::runNow(Medium::Task*);
     253    friend HRESULT Medium::i_runNow(Medium::Task*);
    254254
    255255protected:
     
    729729HRESULT Medium::CreateBaseTask::handler()
    730730{
    731     return mMedium->taskCreateBaseHandler(*this);
     731    return mMedium->i_taskCreateBaseHandler(*this);
    732732}
    733733
     
    737737HRESULT Medium::CreateDiffTask::handler()
    738738{
    739     return mMedium->taskCreateDiffHandler(*this);
     739    return mMedium->i_taskCreateDiffHandler(*this);
    740740}
    741741
     
    745745HRESULT Medium::CloneTask::handler()
    746746{
    747     return mMedium->taskCloneHandler(*this);
     747    return mMedium->i_taskCloneHandler(*this);
    748748}
    749749
     
    753753HRESULT Medium::CompactTask::handler()
    754754{
    755     return mMedium->taskCompactHandler(*this);
     755    return mMedium->i_taskCompactHandler(*this);
    756756}
    757757
     
    761761HRESULT Medium::ResizeTask::handler()
    762762{
    763     return mMedium->taskResizeHandler(*this);
     763    return mMedium->i_taskResizeHandler(*this);
    764764}
    765765
     
    770770HRESULT Medium::ResetTask::handler()
    771771{
    772     return mMedium->taskResetHandler(*this);
     772    return mMedium->i_taskResetHandler(*this);
    773773}
    774774
     
    778778HRESULT Medium::DeleteTask::handler()
    779779{
    780     return mMedium->taskDeleteHandler(*this);
     780    return mMedium->i_taskDeleteHandler(*this);
    781781}
    782782
     
    786786HRESULT Medium::MergeTask::handler()
    787787{
    788     return mMedium->taskMergeHandler(*this);
     788    return mMedium->i_taskMergeHandler(*this);
    789789}
    790790
     
    794794HRESULT Medium::ExportTask::handler()
    795795{
    796     return mMedium->taskExportHandler(*this);
     796    return mMedium->i_taskExportHandler(*this);
    797797}
    798798
     
    802802HRESULT Medium::ImportTask::handler()
    803803{
    804     return mMedium->taskImportHandler(*this);
     804    return mMedium->i_taskImportHandler(*this);
    805805}
    806806
     
    818818
    819819    /* Initialize the callbacks of the VD error interface */
    820     m->vdIfError.pfnError = vdErrorCall;
     820    m->vdIfError.pfnError = i_vdErrorCall;
    821821    m->vdIfError.pfnMessage = NULL;
    822822
    823823    /* Initialize the callbacks of the VD config interface */
    824     m->vdIfConfig.pfnAreKeysValid = vdConfigAreKeysValid;
    825     m->vdIfConfig.pfnQuerySize = vdConfigQuerySize;
    826     m->vdIfConfig.pfnQuery = vdConfigQuery;
     824    m->vdIfConfig.pfnAreKeysValid = i_vdConfigAreKeysValid;
     825    m->vdIfConfig.pfnQuerySize = i_vdConfigQuerySize;
     826    m->vdIfConfig.pfnQuery = i_vdConfigQuery;
    827827
    828828    /* Initialize the callbacks of the VD TCP interface (we always use the host
    829829     * IP stack for now) */
    830     m->vdIfTcpNet.pfnSocketCreate = vdTcpSocketCreate;
    831     m->vdIfTcpNet.pfnSocketDestroy = vdTcpSocketDestroy;
    832     m->vdIfTcpNet.pfnClientConnect = vdTcpClientConnect;
    833     m->vdIfTcpNet.pfnClientClose = vdTcpClientClose;
    834     m->vdIfTcpNet.pfnIsClientConnected = vdTcpIsClientConnected;
    835     m->vdIfTcpNet.pfnSelectOne = vdTcpSelectOne;
    836     m->vdIfTcpNet.pfnRead = vdTcpRead;
    837     m->vdIfTcpNet.pfnWrite = vdTcpWrite;
    838     m->vdIfTcpNet.pfnSgWrite = vdTcpSgWrite;
    839     m->vdIfTcpNet.pfnFlush = vdTcpFlush;
    840     m->vdIfTcpNet.pfnSetSendCoalescing = vdTcpSetSendCoalescing;
    841     m->vdIfTcpNet.pfnGetLocalAddress = vdTcpGetLocalAddress;
    842     m->vdIfTcpNet.pfnGetPeerAddress = vdTcpGetPeerAddress;
     830    m->vdIfTcpNet.pfnSocketCreate = i_vdTcpSocketCreate;
     831    m->vdIfTcpNet.pfnSocketDestroy = i_vdTcpSocketDestroy;
     832    m->vdIfTcpNet.pfnClientConnect = i_vdTcpClientConnect;
     833    m->vdIfTcpNet.pfnClientClose = i_vdTcpClientClose;
     834    m->vdIfTcpNet.pfnIsClientConnected = i_vdTcpIsClientConnected;
     835    m->vdIfTcpNet.pfnSelectOne = i_vdTcpSelectOne;
     836    m->vdIfTcpNet.pfnRead = i_vdTcpRead;
     837    m->vdIfTcpNet.pfnWrite = i_vdTcpWrite;
     838    m->vdIfTcpNet.pfnSgWrite = i_vdTcpSgWrite;
     839    m->vdIfTcpNet.pfnFlush = i_vdTcpFlush;
     840    m->vdIfTcpNet.pfnSetSendCoalescing = i_vdTcpSetSendCoalescing;
     841    m->vdIfTcpNet.pfnGetLocalAddress = i_vdTcpGetLocalAddress;
     842    m->vdIfTcpNet.pfnGetPeerAddress = i_vdTcpGetPeerAddress;
    843843    m->vdIfTcpNet.pfnSelectOneEx = NULL;
    844844    m->vdIfTcpNet.pfnPoke = NULL;
     
    927927    /* No storage unit is created yet, no need to call Medium::queryInfo */
    928928
    929     rc = setFormat(aFormat);
     929    rc = i_setFormat(aFormat);
    930930    if (FAILED(rc)) return rc;
    931931
    932     rc = setLocation(aLocation);
     932    rc = i_setLocation(aLocation);
    933933    if (FAILED(rc)) return rc;
    934934
     
    10401040            m->type = MediumType_Writethrough;
    10411041
    1042         rc = setLocation(aLocation);
     1042        rc = i_setLocation(aLocation);
    10431043        if (FAILED(rc)) return rc;
    10441044
     
    10651065    /* need to call queryInfo immediately to correctly place the medium in
    10661066     * the respective media tree and update other information such as uuid */
    1067     rc = queryInfo(fForceNewUuid /* fSetImageId */, false /* fSetParentId */);
     1067    rc = i_queryInfo(fForceNewUuid /* fSetImageId */, false /* fSetParentId */);
    10681068    if (SUCCEEDED(rc))
    10691069    {
     
    11681168    {
    11691169        AssertReturn(!data.strFormat.isEmpty(), E_FAIL);
    1170         rc = setFormat(data.strFormat);
     1170        rc = i_setFormat(data.strFormat);
    11711171        if (FAILED(rc)) return rc;
    11721172    }
     
    11751175        /// @todo handle host drive settings here as well?
    11761176        if (!data.strFormat.isEmpty())
    1177             rc = setFormat(data.strFormat);
     1177            rc = i_setFormat(data.strFormat);
    11781178        else
    1179             rc = setFormat("RAW");
     1179            rc = i_setFormat("RAW");
    11801180        if (FAILED(rc)) return rc;
    11811181    }
     
    12371237        strFull = data.strLocation;
    12381238
    1239     rc = setLocation(strFull);
     1239    rc = i_setLocation(strFull);
    12401240    if (FAILED(rc)) return rc;
    12411241
     
    13451345    m->state = MediumState_Created;
    13461346    m->hostDrive = true;
    1347     HRESULT rc = setFormat("RAW");
     1347    HRESULT rc = i_setFormat("RAW");
    13481348    if (FAILED(rc)) return rc;
    1349     rc = setLocation(aLocation);
     1349    rc = i_setLocation(aLocation);
    13501350    if (FAILED(rc)) return rc;
    13511351    m->strDescription = aDescription;
     
    13991399        {
    14001400            // this is a differencing disk: then remove it from the parent's children list
    1401             deparent();
     1401            i_deparent();
    14021402        }
    14031403    }
     
    14121412 * The caller must hold the medium tree lock!
    14131413 */
    1414 void Medium::deparent()
     1414void Medium::i_deparent()
    14151415{
    14161416    MediaList &llParent = m->pParent->m->llChildren;
     
    14351435 * The caller must hold the medium tree lock!
    14361436 */
    1437 void Medium::setParent(const ComObjPtr<Medium> &pParent)
     1437void Medium::i_setParent(const ComObjPtr<Medium> &pParent)
    14381438{
    14391439    m->pParent = pParent;
     
    14491449////////////////////////////////////////////////////////////////////////////////
    14501450
    1451 STDMETHODIMP Medium::COMGETTER(Id)(BSTR *aId)
    1452 {
    1453     CheckComArgOutPointerValid(aId);
    1454 
    1455     AutoCaller autoCaller(this);
    1456     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1457 
     1451HRESULT Medium::getId(com::Guid &aId)
     1452{
    14581453    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    14591454
    1460     m->id.toUtf16().cloneTo(aId);
     1455    aId = m->id;
    14611456
    14621457    return S_OK;
    14631458}
    14641459
    1465 STDMETHODIMP Medium::COMGETTER(Description)(BSTR *aDescription)
    1466 {
    1467     CheckComArgOutPointerValid(aDescription);
    1468 
    1469     AutoCaller autoCaller(this);
    1470     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1471 
     1460HRESULT Medium::getDescription(com::Utf8Str &aDescription)
     1461{
    14721462    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    14731463
    1474     m->strDescription.cloneTo(aDescription);
     1464    aDescription = m->strDescription;
    14751465
    14761466    return S_OK;
    14771467}
    14781468
    1479 STDMETHODIMP Medium::COMSETTER(Description)(IN_BSTR aDescription)
    1480 {
    1481     AutoCaller autoCaller(this);
    1482     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1483 
     1469HRESULT Medium::setDescription(const com::Utf8Str &aDescription)
     1470{
    14841471//     AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    14851472
     
    14881475    /// require to add the mRegistered flag to data
    14891476
    1490     NOREF(aDescription);
    1491 
    14921477    ReturnComNotImplemented();
    14931478}
    14941479
    1495 STDMETHODIMP Medium::COMGETTER(State)(MediumState_T *aState)
    1496 {
    1497     CheckComArgOutPointerValid(aState);
    1498 
    1499     AutoCaller autoCaller(this);
    1500     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1501 
     1480HRESULT Medium::getState(MediumState_T *aState)
     1481{
    15021482    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15031483    *aState = m->state;
     
    15061486}
    15071487
    1508 STDMETHODIMP Medium::COMGETTER(Variant)(ComSafeArrayOut(MediumVariant_T, aVariant))
    1509 {
    1510     CheckComArgOutSafeArrayPointerValid(aVariant);
    1511 
    1512     AutoCaller autoCaller(this);
    1513     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1514 
     1488HRESULT Medium::getVariant(std::vector<MediumVariant_T> &aVariant)
     1489{
    15151490    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15161491
    15171492    SafeArray<MediumVariant_T> variants(sizeof(MediumVariant_T)*8);
    15181493
     1494    aVariant.resize(variants.size());
    15191495    for (ULONG i = 0; i < variants.size(); ++i)
    15201496    {
    15211497        ULONG temp = m->variant;
    15221498        temp &= 1<<i;
    1523         variants [i] = (MediumVariant_T)temp;
    1524     }
    1525 
    1526     variants.detachTo(ComSafeArrayOutArg(aVariant));
     1499        aVariant[i] = (MediumVariant_T)temp;
     1500    }
    15271501
    15281502    return S_OK;
    15291503}
    15301504
    1531 STDMETHODIMP Medium::COMGETTER(Location)(BSTR *aLocation)
    1532 {
    1533     CheckComArgOutPointerValid(aLocation);
    1534 
    1535     AutoCaller autoCaller(this);
    1536     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1537 
     1505HRESULT Medium::getLocation(com::Utf8Str &aLocation)
     1506{
    15381507    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15391508
    1540     m->strLocationFull.cloneTo(aLocation);
     1509    aLocation = m->strLocationFull;
    15411510
    15421511    return S_OK;
    15431512}
    15441513
    1545 STDMETHODIMP Medium::COMGETTER(Name)(BSTR *aName)
    1546 {
    1547     CheckComArgOutPointerValid(aName);
    1548 
    1549     AutoCaller autoCaller(this);
    1550     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1551 
     1514HRESULT Medium::getName(com::Utf8Str &aName)
     1515{
    15521516    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15531517
    1554     getName().cloneTo(aName);
     1518    aName = i_getName();
    15551519
    15561520    return S_OK;
    15571521}
    15581522
    1559 STDMETHODIMP Medium::COMGETTER(DeviceType)(DeviceType_T *aDeviceType)
    1560 {
    1561     CheckComArgOutPointerValid(aDeviceType);
    1562 
    1563     AutoCaller autoCaller(this);
    1564     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1565 
     1523HRESULT Medium::getDeviceType(DeviceType_T *aDeviceType)
     1524{
    15661525    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15671526
     
    15711530}
    15721531
    1573 STDMETHODIMP Medium::COMGETTER(HostDrive)(BOOL *aHostDrive)
    1574 {
    1575     CheckComArgOutPointerValid(aHostDrive);
    1576 
    1577     AutoCaller autoCaller(this);
    1578     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1579 
     1532HRESULT Medium::getHostDrive(BOOL *aHostDrive)
     1533{
    15801534    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15811535
     
    15851539}
    15861540
    1587 STDMETHODIMP Medium::COMGETTER(Size)(LONG64 *aSize)
    1588 {
    1589     CheckComArgOutPointerValid(aSize);
    1590 
    1591     AutoCaller autoCaller(this);
    1592     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1593 
     1541HRESULT Medium::getSize(LONG64 *aSize)
     1542{
    15941543    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    15951544
     
    15991548}
    16001549
    1601 STDMETHODIMP Medium::COMGETTER(Format)(BSTR *aFormat)
    1602 {
    1603     CheckComArgOutPointerValid(aFormat);
    1604 
    1605     AutoCaller autoCaller(this);
    1606     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1607 
     1550HRESULT Medium::getFormat(com::Utf8Str &aFormat)
     1551{
    16081552    /* no need to lock, m->strFormat is const */
    1609     m->strFormat.cloneTo(aFormat);
    1610 
     1553
     1554    aFormat = m->strFormat;
    16111555    return S_OK;
    16121556}
    16131557
    1614 STDMETHODIMP Medium::COMGETTER(MediumFormat)(IMediumFormat **aMediumFormat)
    1615 {
    1616     CheckComArgOutPointerValid(aMediumFormat);
    1617 
    1618     AutoCaller autoCaller(this);
    1619     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1620 
     1558HRESULT Medium::getMediumFormat(ComPtr<IMediumFormat> &aMediumFormat)
     1559{
    16211560    /* no need to lock, m->formatObj is const */
    1622     m->formatObj.queryInterfaceTo(aMediumFormat);
     1561    m->formatObj.queryInterfaceTo(aMediumFormat.asOutParam());
    16231562
    16241563    return S_OK;
    16251564}
    16261565
    1627 STDMETHODIMP Medium::COMGETTER(Type)(MediumType_T *aType)
    1628 {
    1629     CheckComArgOutPointerValid(aType);
    1630 
    1631     AutoCaller autoCaller(this);
    1632     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1633 
     1566HRESULT Medium::getType(MediumType_T *aType)
     1567{
    16341568    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    16351569
     
    16391573}
    16401574
    1641 STDMETHODIMP Medium::COMSETTER(Type)(MediumType_T aType)
    1642 {
    1643     AutoCaller autoCaller(this);
    1644     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1645 
     1575HRESULT Medium::setType(MediumType_T aType)
     1576{
    16461577    // we access mParent and members
    16471578    AutoWriteLock treeLock(m->pVirtualBox->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
     
    16541585            break;
    16551586        default:
    1656             return setStateError();
     1587            return i_setStateError();
    16571588    }
    16581589
     
    16631594    }
    16641595
    1665     DeviceType_T devType = getDeviceType();
     1596    DeviceType_T devType = i_getDeviceType();
    16661597    // DVD media can only be readonly.
    16671598    if (devType == DeviceType_DVD && aType != MediumType_Readonly)
     
    17141645            /* cannot change to writethrough, shareable or readonly
    17151646             * if there are children */
    1716             if (getChildren().size() != 0)
     1647            if (i_getChildren().size() != 0)
    17171648                return setError(VBOX_E_OBJECT_IN_USE,
    17181649                                tr("Cannot change type for medium '%s' since it has %d child media"),
    1719                                 m->strLocationFull.c_str(), getChildren().size());
     1650                                m->strLocationFull.c_str(), i_getChildren().size());
    17201651            if (aType == MediumType_Shareable)
    17211652            {
    1722                 MediumVariant_T variant = getVariant();
     1653                MediumVariant_T variant = i_getVariant();
    17231654                if (!(variant & MediumVariant_Fixed))
    17241655                    return setError(VBOX_E_INVALID_OBJECT_STATE,
     
    17531684        // global registry:
    17541685        const Guid &uuidGlobalRegistry = m->pVirtualBox->getGlobalRegistryId();
    1755         if (isInRegistry(uuidGlobalRegistry))
     1686        if (i_isInRegistry(uuidGlobalRegistry))
    17561687            return setError(VBOX_E_INVALID_OBJECT_STATE,
    17571688                            tr("Cannot change type for medium '%s': the media type 'MultiAttach' can only be used "
     
    17651696    mlock.release();
    17661697    treeLock.release();
    1767     markRegistriesModified();
     1698    i_markRegistriesModified();
    17681699    m->pVirtualBox->saveModifiedRegistries();
    17691700
     
    17711702}
    17721703
    1773 STDMETHODIMP Medium::COMGETTER(AllowedTypes)(ComSafeArrayOut(MediumType_T, aAllowedTypes))
    1774 {
    1775     CheckComArgOutSafeArrayPointerValid(aAllowedTypes);
    1776     NOREF(aAllowedTypes);
    1777 #ifndef RT_OS_WINDOWS
    1778     NOREF(aAllowedTypesSize);
    1779 #endif
    1780 
    1781     AutoCaller autoCaller(this);
    1782     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1783 
     1704HRESULT Medium::getAllowedTypes(std::vector<MediumType_T> &aAllowedTypes)
     1705{
    17841706    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    17851707
     
    17871709}
    17881710
    1789 STDMETHODIMP Medium::COMGETTER(Parent)(IMedium **aParent)
    1790 {
    1791     CheckComArgOutPointerValid(aParent);
    1792 
    1793     AutoCaller autoCaller(this);
    1794     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1795 
     1711HRESULT Medium::getParent(ComPtr<IMedium> &aParent)
     1712{
    17961713    /* we access mParent */
    17971714    AutoReadLock treeLock(m->pVirtualBox->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
    17981715
    1799     m->pParent.queryInterfaceTo(aParent);
     1716    m->pParent.queryInterfaceTo(aParent.asOutParam());
    18001717
    18011718    return S_OK;
    18021719}
    18031720
    1804 STDMETHODIMP Medium::COMGETTER(Children)(ComSafeArrayOut(IMedium *, aChildren))
    1805 {
    1806     CheckComArgOutSafeArrayPointerValid(aChildren);
    1807 
    1808     AutoCaller autoCaller(this);
    1809     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1810 
     1721HRESULT Medium::getChildren(std::vector<ComPtr<IMedium> > &aChildren)
     1722{
    18111723    /* we access children */
    18121724    AutoReadLock treeLock(m->pVirtualBox->getMediaTreeLockHandle() COMMA_LOCKVAL_SRC_POS);
    18131725
    1814     SafeIfaceArray<IMedium> children(this->getChildren());
    1815     children.detachTo(ComSafeArrayOutArg(aChildren));
    1816 
     1726    MediaList children(this->i_getChildren());
     1727    aChildren.resize(children.size());
     1728    size_t i = 0;
     1729    for (MediaList::const_iterator it =  children.begin(); it != children.end(); ++it, ++i)
     1730        (*it).queryInterfaceTo(aChildren[i].asOutParam());
    18171731    return S_OK;
    18181732}
    18191733
    1820 STDMETHODIMP Medium::COMGETTER(Base)(IMedium **aBase)
    1821 {
    1822     CheckComArgOutPointerValid(aBase);
    1823 
    1824     /* base() will do callers/locking */
    1825 
    1826     getBase().queryInterfaceTo(aBase);
     1734HRESULT Medium::getBase(ComPtr<IMedium> &aBase)
     1735{
     1736    /* i_getBase() will do callers/locking */
     1737    i_getBase().queryInterfaceTo(aBase.asOutParam());
    18271738
    18281739    return S_OK;
    18291740}
    18301741
    1831 STDMETHODIMP Medium::COMGETTER(ReadOnly)(BOOL *aReadOnly)
    1832 {
    1833     CheckComArgOutPointerValid(aReadOnly);
    1834 
    1835     AutoCaller autoCaller(this);
    1836     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1837 
     1742HRESULT Medium::getReadOnly(BOOL *aReadOnly)
     1743{
    18381744    /* isReadOnly() will do locking */
    1839 
    1840     *aReadOnly = isReadOnly();
     1745    *aReadOnly = i_isReadOnly();
    18411746
    18421747    return S_OK;
    18431748}
    18441749
    1845 STDMETHODIMP Medium::COMGETTER(LogicalSize)(LONG64 *aLogicalSize)
    1846 {
    1847     CheckComArgOutPointerValid(aLogicalSize);
    1848 
    1849     AutoCaller autoCaller(this);
    1850     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1851 
     1750HRESULT Medium::getLogicalSize(LONG64 *aLogicalSize)
     1751{
    18521752    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    18531753
     
    18571757}
    18581758
    1859 STDMETHODIMP Medium::COMGETTER(AutoReset)(BOOL *aAutoReset)
    1860 {
    1861     CheckComArgOutPointerValid(aAutoReset);
    1862 
    1863     AutoCaller autoCaller(this);
    1864     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1865 
     1759HRESULT Medium::getAutoReset(BOOL *aAutoReset)
     1760{
    18661761    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    18671762
     
    18741769}
    18751770
    1876 STDMETHODIMP Medium::COMSETTER(AutoReset)(BOOL aAutoReset)
    1877 {
    1878     AutoCaller autoCaller(this);
    1879     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1880 
     1771HRESULT Medium::setAutoReset(BOOL aAutoReset)
     1772{
    18811773    AutoWriteLock mlock(this COMMA_LOCKVAL_SRC_POS);
    18821774
     
    18921784        // save the settings
    18931785        mlock.release();
    1894         markRegistriesModified();
     1786        i_markRegistriesModified();
    18951787        m->pVirtualBox->saveModifiedRegistries();
    18961788    }
     
    18991791}
    19001792
    1901 STDMETHODIMP Medium::COMGETTER(LastAccessError)(BSTR *aLastAccessError)
    1902 {
    1903     CheckComArgOutPointerValid(aLastAccessError);
    1904 
    1905     AutoCaller autoCaller(this);
    1906     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1907 
     1793HRESULT Medium::getLastAccessError(com::Utf8Str &aLastAccessError)
     1794{
    19081795    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    19091796
    1910     m->strLastAccessError.cloneTo(aLastAccessError);
     1797    aLastAccessError = m->strLastAccessError;
    19111798
    19121799    return S_OK;
    19131800}
    19141801
    1915 STDMETHODIMP Medium::COMGETTER(MachineIds)(ComSafeArrayOut(BSTR,aMachineIds))
    1916 {
    1917     CheckComArgOutSafeArrayPointerValid(aMachineIds);
    1918 
    1919     AutoCaller autoCaller(this);
    1920     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1921 
     1802HRESULT Medium::getMachineIds(std::vector<com::Guid> &aMachineIds)
     1803{
    19221804    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    19231805
    1924     com::SafeArray<BSTR> machineIds;
    1925 
    19261806    if (m->backRefs.size() != 0)
    19271807    {
    1928         machineIds.reset(m->backRefs.size());
    1929 
     1808        BackRefList brlist(m->backRefs);
     1809        aMachineIds.resize(brlist.size());
    19301810        size_t i = 0;
    1931         for (BackRefList::const_iterator it = m->backRefs.begin();
    1932              it != m->backRefs.end(); ++it, ++i)
    1933         {
    1934              it->machineId.toUtf16().detachTo(&machineIds[i]);
    1935         }
    1936     }
    1937 
    1938     machineIds.detachTo(ComSafeArrayOutArg(aMachineIds));
     1811        for (BackRefList::const_iterator it = brlist.begin(); it != brlist.end(); ++it, ++i)
     1812             aMachineIds[i] = it->machineId;
     1813    }
    19391814
    19401815    return S_OK;
    19411816}
    19421817
    1943 STDMETHODIMP Medium::SetIds(BOOL aSetImageId,
    1944                             IN_BSTR aImageId,
    1945                             BOOL aSetParentId,
    1946                             IN_BSTR aParentId)
    1947 {
    1948     AutoCaller autoCaller(this);
    1949     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1950 
     1818HRESULT Medium::setIds(BOOL aSetImageId,
     1819                       const com::Guid &aImageId,
     1820                       BOOL aSetParentId,
     1821                       const com::Guid &aParentId)
     1822{
    19511823    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    19521824
     
    19561828            break;
    19571829        default:
    1958             return setStateError();
     1830            return i_setStateError();
    19591831    }
    19601832
     
    19621834    if (aSetImageId)
    19631835    {
    1964         if (Bstr(aImageId).isEmpty())
     1836        if (aImageId.toUtf16().isEmpty())
    19651837            imageId.create();
    19661838        else
    19671839        {
    1968             imageId = Guid(aImageId);
     1840            imageId = aImageId;
    19691841            if (!imageId.isValid())
    19701842                return setError(E_INVALIDARG, tr("Argument %s is invalid"), "aImageId");
     
    19731845    if (aSetParentId)
    19741846    {
    1975         if (Bstr(aParentId).isEmpty())
     1847        if (aParentId.toUtf16().isEmpty())
    19761848            parentId.create();
    19771849        else
    1978             parentId = Guid(aParentId);
     1850            parentId = aParentId;
    19791851    }
    19801852
     
    19851857    alock.release();
    19861858
    1987     HRESULT rc = queryInfo(!!aSetImageId /* fSetImageId */,
     1859    HRESULT rc = i_queryInfo(!!aSetImageId /* fSetImageId */,
    19881860                           !!aSetParentId /* fSetParentId */);
    19891861
     
    19911863}
    19921864
    1993 STDMETHODIMP Medium::RefreshState(MediumState_T *aState)
    1994 {
    1995     CheckComArgOutPointerValid(aState);
    1996 
    1997     AutoCaller autoCaller(this);
    1998     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    1999 
     1865HRESULT Medium::refreshState(MediumState_T *aState)
     1866{
    20001867    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    20011868
     
    20111878            alock.release();
    20121879
    2013             rc = queryInfo(false /* fSetImageId */, false /* fSetParentId */);
     1880            rc = i_queryInfo(false /* fSetImageId */, false /* fSetParentId */);
    20141881
    20151882            alock.acquire();
     
    20251892}
    20261893
    2027 STDMETHODIMP Medium::GetSnapshotIds(IN_BSTR aMachineId,
    2028                                     ComSafeArrayOut(BSTR, aSnapshotIds))
    2029 {
    2030     CheckComArgExpr(aMachineId, Guid(aMachineId).isValid());
    2031     CheckComArgOutSafeArrayPointerValid(aSnapshotIds);
    2032 
    2033     AutoCaller autoCaller(this);
    2034     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2035 
     1894HRESULT Medium::getSnapshotIds(const com::Guid &aMachineId,
     1895                               std::vector<com::Guid> &aSnapshotIds)
     1896{
    20361897    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    20371898
    2038     com::SafeArray<BSTR> snapshotIds;
    2039 
    2040     Guid id(aMachineId);
    20411899    for (BackRefList::const_iterator it = m->backRefs.begin();
    20421900         it != m->backRefs.end(); ++it)
    20431901    {
    2044         if (it->machineId == id)
     1902        if (it->machineId == aMachineId)
    20451903        {
    20461904            size_t size = it->llSnapshotIds.size();
     
    20531911            if (size > 0)
    20541912            {
    2055                 snapshotIds.reset(size);
     1913                aSnapshotIds.resize(size);
    20561914
    20571915                size_t j = 0;
    20581916                if (it->fInCurState)
    2059                     it->machineId.toUtf16().detachTo(&snapshotIds[j++]);
    2060 
    2061                 for (GuidList::const_iterator jt = it->llSnapshotIds.begin();
    2062                      jt != it->llSnapshotIds.end();
    2063                      ++jt, ++j)
    2064                 {
    2065                      (*jt).toUtf16().detachTo(&snapshotIds[j]);
    2066                 }
     1917                    aSnapshotIds[j++] = it->machineId.toUtf16();
     1918
     1919                for(GuidList::const_iterator jt = it->llSnapshotIds.begin(); jt != it->llSnapshotIds.end(); ++jt, ++j)
     1920                    aSnapshotIds[j] = (*jt);
    20671921            }
    20681922
     
    20711925    }
    20721926
    2073     snapshotIds.detachTo(ComSafeArrayOutArg(aSnapshotIds));
    2074 
    20751927    return S_OK;
    20761928}
    20771929
    2078 STDMETHODIMP Medium::LockRead(IToken **aToken)
    2079 {
    2080     CheckComArgNotNull(aToken);
    2081 
    2082     AutoCaller autoCaller(this);
    2083     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2084 
     1930HRESULT Medium::lockRead(ComPtr<IToken> &aToken)
     1931{
    20851932    /* Must not hold the object lock, as we need control over it below. */
    20861933    Assert(!isWriteLockOnCurrentThread());
     
    21341981            }
    21351982
    2136             pToken.queryInterfaceTo(aToken);
     1983            pToken.queryInterfaceTo(aToken.asOutParam());
    21371984            break;
    21381985        }
     
    21401987        {
    21411988            LogFlowThisFunc(("Failing - state=%d\n", m->state));
    2142             rc = setStateError();
     1989            rc = i_setStateError();
    21431990            break;
    21441991        }
     
    21521999 *       in-process calls).
    21532000 */
    2154 HRESULT Medium::unlockRead(MediumState_T *aState)
     2001HRESULT Medium::i_unlockRead(MediumState_T *aState)
    21552002{
    21562003    AutoCaller autoCaller(this);
     
    21982045    return rc;
    21992046}
    2200 
    2201 STDMETHODIMP Medium::LockWrite(IToken **aToken)
    2202 {
    2203     CheckComArgNotNull(aToken);
    2204 
    2205     AutoCaller autoCaller(this);
    2206     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2207 
     2047HRESULT Medium::lockWrite(ComPtr<IToken> &aToken)
     2048{
    22082049    /* Must not hold the object lock, as we need control over it below. */
    22092050    Assert(!isWriteLockOnCurrentThread());
     
    22352076            m->preLockState = m->state;
    22362077
    2237             LogFlowThisFunc(("Okay - prev state=%d locationFull=%s\n", m->state, getLocationFull().c_str()));
     2078            LogFlowThisFunc(("Okay - prev state=%d locationFull=%s\n", m->state, i_getLocationFull().c_str()));
    22382079            m->state = MediumState_LockedWrite;
    22392080
     
    22482089            }
    22492090
    2250             pToken.queryInterfaceTo(aToken);
     2091            pToken.queryInterfaceTo(aToken.asOutParam());
    22512092            break;
    22522093        }
    22532094        default:
    22542095        {
    2255             LogFlowThisFunc(("Failing - state=%d locationFull=%s\n", m->state, getLocationFull().c_str()));
    2256             rc = setStateError();
     2096            LogFlowThisFunc(("Failing - state=%d locationFull=%s\n", m->state, i_getLocationFull().c_str()));
     2097            rc = i_setStateError();
    22572098            break;
    22582099        }
     
    22662107 *       in-process calls).
    22672108 */
    2268 HRESULT Medium::unlockWrite(MediumState_T *aState)
     2109HRESULT Medium::i_unlockWrite(MediumState_T *aState)
    22692110{
    22702111    AutoCaller autoCaller(this);
     
    22852126            if (m->preLockState == MediumState_Deleting)
    22862127                m->preLockState = MediumState_Created;
    2287             LogFlowThisFunc(("new state=%d locationFull=%s\n", m->state, getLocationFull().c_str()));
     2128            LogFlowThisFunc(("new state=%d locationFull=%s\n", m->state, i_getLocationFull().c_str()));
    22882129            break;
    22892130        }
    22902131        default:
    22912132        {
    2292             LogFlowThisFunc(("Failing - state=%d locationFull=%s\n", m->state, getLocationFull().c_str()));
     2133            LogFlowThisFunc(("Failing - state=%d locationFull=%s\n", m->state, i_getLocationFull().c_str()));
    22932134            rc = setError(VBOX_E_INVALID_OBJECT_STATE,
    22942135                          tr("Medium '%s' is not locked for writing"),
     
    23052146}
    23062147
    2307 STDMETHODIMP Medium::Close()
     2148HRESULT Medium::close()
    23082149{
    23092150    AutoCaller autoCaller(this);
     
    23132154    ComObjPtr<VirtualBox> pVirtualBox(m->pVirtualBox);
    23142155
    2315     MultiResult mrc = close(autoCaller);
     2156    MultiResult mrc = i_close(autoCaller);
    23162157
    23172158    pVirtualBox->saveModifiedRegistries();
     
    23202161}
    23212162
    2322 STDMETHODIMP Medium::GetProperty(IN_BSTR aName, BSTR *aValue)
    2323 {
    2324     CheckComArgStrNotEmptyOrNull(aName);
    2325     CheckComArgOutPointerValid(aValue);
    2326 
    2327     AutoCaller autoCaller(this);
    2328     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2329 
     2163HRESULT Medium::getProperty(const com::Utf8Str &aName,
     2164                            com::Utf8Str &aValue)
     2165{
    23302166    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    23312167
    2332     settings::StringsMap::const_iterator it = m->mapProperties.find(Utf8Str(aName));
     2168    settings::StringsMap::const_iterator it = m->mapProperties.find(aName);
    23332169    if (it == m->mapProperties.end())
    23342170    {
    2335         if (!Utf8Str(aName).startsWith("Special/"))
     2171        if (!aName.startsWith("Special/"))
    23362172            return setError(VBOX_E_OBJECT_NOT_FOUND,
    2337                             tr("Property '%ls' does not exist"), aName);
     2173                            tr("Property '%ls' does not exist"), Bstr(aName).raw());
    23382174        else
    23392175            /* be more silent here */
     
    23412177    }
    23422178
    2343     it->second.cloneTo(aValue);
     2179    aValue = it->second;
    23442180
    23452181    return S_OK;
    23462182}
    23472183
    2348 STDMETHODIMP Medium::SetProperty(IN_BSTR aName, IN_BSTR aValue)
    2349 {
    2350     CheckComArgStrNotEmptyOrNull(aName);
    2351 
    2352     AutoCaller autoCaller(this);
    2353     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2354 
     2184HRESULT Medium::setProperty(const com::Utf8Str &aName,
     2185                            const com::Utf8Str &aValue)
     2186{
    23552187    AutoWriteLock mlock(this COMMA_LOCKVAL_SRC_POS);
    23562188
     
    23612193            break;
    23622194        default:
    2363             return setStateError();
    2364     }
    2365 
    2366     Utf8Str strName(aName);
    2367     Utf8Str strValue(aValue);
    2368     settings::StringsMap::iterator it = m->mapProperties.find(strName);
    2369     if (!strName.startsWith("Special/"))
     2195            return i_setStateError();
     2196    }
     2197
     2198    settings::StringsMap::iterator it = m->mapProperties.find(aName);
     2199    if (!aName.startsWith("Special/"))
    23702200    {
    23712201        if (it == m->mapProperties.end())
    23722202            return setError(VBOX_E_OBJECT_NOT_FOUND,
    23732203                            tr("Property '%s' does not exist"),
    2374                             strName.c_str());
    2375         it->second = strValue;
     2204                            aName.c_str());
     2205        it->second = aValue;
    23762206    }
    23772207    else
     
    23792209        if (it == m->mapProperties.end())
    23802210        {
    2381             if (!strValue.isEmpty())
    2382                 m->mapProperties[strName] = strValue;
     2211            if (!aValue.isEmpty())
     2212                m->mapProperties[aName] = aValue;
    23832213        }
    23842214        else
    23852215        {
    2386             if (!strValue.isEmpty())
     2216            if (!aValue.isEmpty())
    23872217                it->second = aValue;
    23882218            else
     
    23932223    // save the settings
    23942224    mlock.release();
    2395     markRegistriesModified();
     2225    i_markRegistriesModified();
    23962226    m->pVirtualBox->saveModifiedRegistries();
    23972227
     
    23992229}
    24002230
    2401 STDMETHODIMP Medium::GetProperties(IN_BSTR aNames,
    2402                                    ComSafeArrayOut(BSTR, aReturnNames),
    2403                                    ComSafeArrayOut(BSTR, aReturnValues))
    2404 {
    2405     CheckComArgOutSafeArrayPointerValid(aReturnNames);
    2406     CheckComArgOutSafeArrayPointerValid(aReturnValues);
    2407 
    2408     AutoCaller autoCaller(this);
    2409     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2410 
     2231HRESULT Medium::getProperties(const com::Utf8Str &aNames,
     2232                              std::vector<com::Utf8Str> &aReturnNames,
     2233                              std::vector<com::Utf8Str> &aReturnValues)
     2234{
    24112235    AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    24122236
     
    24142238    NOREF(aNames);
    24152239
    2416     com::SafeArray<BSTR> names(m->mapProperties.size());
    2417     com::SafeArray<BSTR> values(m->mapProperties.size());
     2240    aReturnNames.resize(m->mapProperties.size());
     2241    aReturnValues.resize(m->mapProperties.size());
    24182242    size_t i = 0;
    2419 
    24202243    for (settings::StringsMap::const_iterator it = m->mapProperties.begin();
    24212244         it != m->mapProperties.end();
    2422          ++it)
    2423     {
    2424         it->first.cloneTo(&names[i]);
    2425         it->second.cloneTo(&values[i]);
    2426         ++i;
    2427     }
    2428 
    2429     names.detachTo(ComSafeArrayOutArg(aReturnNames));
    2430     values.detachTo(ComSafeArrayOutArg(aReturnValues));
    2431 
     2245         ++it, ++i)
     2246    {
     2247        aReturnNames[i] = it->first;
     2248        aReturnValues[i] = it->second;
     2249    }
    24322250    return S_OK;
    24332251}
    24342252
    2435 STDMETHODIMP Medium::SetProperties(ComSafeArrayIn(IN_BSTR, aNames),
    2436                                    ComSafeArrayIn(IN_BSTR, aValues))
    2437 {
    2438     CheckComArgSafeArrayNotNull(aNames);
    2439     CheckComArgSafeArrayNotNull(aValues);
    2440 
    2441     AutoCaller autoCaller(this);
    2442     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2443 
     2253HRESULT Medium::setProperties(const std::vector<com::Utf8Str> &aNames,
     2254                              const std::vector<com::Utf8Str> &aValues)
     2255{
    24442256    AutoWriteLock mlock(this COMMA_LOCKVAL_SRC_POS);
    2445 
    2446     com::SafeArray<IN_BSTR> names(ComSafeArrayInArg(aNames));
    2447     com::SafeArray<IN_BSTR> values(ComSafeArrayInArg(aValues));
    24482257
    24492258    /* first pass: validate names */
    24502259    for (size_t i = 0;
    2451          i < names.size();
     2260         i < aNames.size();
    24522261         ++i)
    24532262    {
    2454         Utf8Str strName(names[i]);
     2263        Utf8Str strName(aNames[i]);
    24552264        if (   !strName.startsWith("Special/")
    24562265            && m->mapProperties.find(strName) == m->mapProperties.end())
     
    24612270    /* second pass: assign */
    24622271    for (size_t i = 0;
    2463          i < names.size();
     2272         i < aNames.size();
    24642273         ++i)
    24652274    {
    2466         Utf8Str strName(names[i]);
    2467         Utf8Str strValue(values[i]);
     2275        Utf8Str strName(aNames[i]);
     2276        Utf8Str strValue(aValues[i]);
    24682277        settings::StringsMap::iterator it = m->mapProperties.find(strName);
    24692278        if (!strName.startsWith("Special/"))
     
    24912300    // save the settings
    24922301    mlock.release();
    2493     markRegistriesModified();
     2302    i_markRegistriesModified();
    24942303    m->pVirtualBox->saveModifiedRegistries();
    24952304
    24962305    return S_OK;
    24972306}
    2498 
    2499 STDMETHODIMP Medium::CreateBaseStorage(LONG64 aLogicalSize,
    2500                                        ComSafeArrayIn(MediumVariant_T, aVariant),
    2501                                        IProgress **aProgress)
    2502 {
    2503     CheckComArgSafeArrayNotNull(aVariant);
    2504     CheckComArgOutPointerValid(aProgress);
     2307HRESULT Medium::createBaseStorage(LONG64 aLogicalSize,
     2308                                  const std::vector<MediumVariant_T> &aVariant,
     2309                                  ComPtr<IProgress> &aProgress)
     2310{
    25052311    if (aLogicalSize < 0)
    25062312        return setError(E_INVALIDARG, tr("The medium size argument (%lld) is negative"), aLogicalSize);
    2507 
    2508     AutoCaller autoCaller(this);
    2509     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    25102313
    25112314    HRESULT rc = S_OK;
     
    25192322        ULONG mediumVariantFlags = 0;
    25202323
    2521         if (aVariant)
    2522         {
    2523             com::SafeArray<MediumVariant_T> variants(ComSafeArrayInArg(aVariant));
     2324        if (aVariant.size())
     2325        {
     2326            com::SafeArray<MediumVariant_T> variants(aVariant);
    25242327            for (size_t i = 0; i < variants.size(); i++)
    25252328                mediumVariantFlags |= variants[i];
     
    25412344
    25422345        if (m->state != MediumState_NotCreated)
    2543             throw setStateError();
     2346            throw i_setStateError();
    25442347
    25452348        pProgress.createObject();
     
    25682371    if (SUCCEEDED(rc))
    25692372    {
    2570         rc = startThread(pTask);
     2373        rc = i_startThread(pTask);
    25712374
    25722375        if (SUCCEEDED(rc))
    2573             pProgress.queryInterfaceTo(aProgress);
     2376            pProgress.queryInterfaceTo(aProgress.asOutParam());
    25742377    }
    25752378    else if (pTask != NULL)
     
    25792382}
    25802383
    2581 STDMETHODIMP Medium::DeleteStorage(IProgress **aProgress)
    2582 {
    2583     CheckComArgOutPointerValid(aProgress);
    2584 
    2585     AutoCaller autoCaller(this);
    2586     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2587 
     2384HRESULT Medium::deleteStorage(ComPtr<IProgress> &aProgress)
     2385{
    25882386    ComObjPtr<Progress> pProgress;
    25892387
    2590     MultiResult mrc = deleteStorage(&pProgress,
    2591                                     false /* aWait */);
     2388    MultiResult mrc = i_deleteStorage(&pProgress,
     2389                                      false /* aWait */);
    25922390    /* Must save the registries in any case, since an entry was removed. */
    25932391    m->pVirtualBox->saveModifiedRegistries();
    25942392
    25952393    if (SUCCEEDED(mrc))
    2596         pProgress.queryInterfaceTo(aProgress);
     2394        pProgress.queryInterfaceTo(aProgress.asOutParam());
    25972395
    25982396    return mrc;
    25992397}
    26002398
    2601 STDMETHODIMP Medium::CreateDiffStorage(IMedium *aTarget,
    2602                                          ComSafeArrayIn(MediumVariant_T, aVariant),
    2603                                          IProgress **aProgress)
    2604 {
    2605     CheckComArgNotNull(aTarget);
    2606     CheckComArgOutPointerValid(aProgress);
    2607     CheckComArgSafeArrayNotNull(aVariant);
    2608 
    2609     AutoCaller autoCaller(this);
    2610     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2611 
    2612     ComObjPtr<Medium> diff = static_cast<Medium*>(aTarget);
     2399HRESULT Medium::createDiffStorage(const ComPtr<IMedium> &aTarget,
     2400                                  const std::vector<MediumVariant_T> &aVariant,
     2401                                  ComPtr<IProgress> &aProgress)
     2402{
     2403    IMedium *aT = aTarget;
     2404    ComObjPtr<Medium> diff = static_cast<Medium*>(aT);
    26132405
    26142406    // locking: we need the tree lock first because we access parent pointers
     
    26322424    MediumLockList *pMediumLockList(new MediumLockList());
    26332425    alock.release();
    2634     HRESULT rc = diff->createMediumLockList(true /* fFailIfInaccessible */,
     2426    HRESULT rc = diff->i_createMediumLockList(true /* fFailIfInaccessible */,
    26352427                                            true /* fMediumLockWrite */,
    26362428                                            this,
     
    26512443
    26522444        return setError(rc, tr("Could not lock medium when creating diff '%s'"),
    2653                         diff->getLocationFull().c_str());
     2445                        diff->i_getLocationFull().c_str());
    26542446    }
    26552447
    26562448    Guid parentMachineRegistry;
    2657     if (getFirstRegistryMachineId(parentMachineRegistry))
     2449    if (i_getFirstRegistryMachineId(parentMachineRegistry))
    26582450    {
    26592451        /* since this medium has been just created it isn't associated yet */
    26602452        diff->m->llRegistryIDs.push_back(parentMachineRegistry);
    26612453        alock.release();
    2662         diff->markRegistriesModified();
     2454        diff->i_markRegistriesModified();
    26632455        alock.acquire();
    26642456    }
     
    26702462    ULONG mediumVariantFlags = 0;
    26712463
    2672     if (aVariant)
    2673     {
    2674         com::SafeArray<MediumVariant_T> variants(ComSafeArrayInArg(aVariant));
     2464    if (aVariant.size())
     2465    {
     2466        com::SafeArray<MediumVariant_T> variants(aVariant);
    26752467        for (size_t i = 0; i < variants.size(); i++)
    26762468            mediumVariantFlags |= variants[i];
    26772469    }
    26782470
    2679     rc = createDiffStorage(diff, (MediumVariant_T)mediumVariantFlags, pMediumLockList,
    2680                            &pProgress, false /* aWait */);
     2471    rc = i_createDiffStorage(diff, (MediumVariant_T)mediumVariantFlags, pMediumLockList,
     2472                             &pProgress, false /* aWait */);
    26812473    if (FAILED(rc))
    26822474        delete pMediumLockList;
    26832475    else
    2684         pProgress.queryInterfaceTo(aProgress);
     2476        pProgress.queryInterfaceTo(aProgress.asOutParam());
    26852477
    26862478    return rc;
    26872479}
    26882480
    2689 STDMETHODIMP Medium::MergeTo(IMedium *aTarget, IProgress **aProgress)
    2690 {
    2691     CheckComArgNotNull(aTarget);
    2692     CheckComArgOutPointerValid(aProgress);
    2693     ComAssertRet(aTarget != this, E_INVALIDARG);
    2694 
    2695     AutoCaller autoCaller(this);
    2696     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2697 
    2698     ComObjPtr<Medium> pTarget = static_cast<Medium*>(aTarget);
     2481HRESULT Medium::mergeTo(const ComPtr<IMedium> &aTarget,
     2482                        ComPtr<IProgress> &aProgress)
     2483{
     2484
     2485    IMedium *aT = aTarget;
     2486
     2487    ComAssertRet(aT != this, E_INVALIDARG);
     2488
     2489    ComObjPtr<Medium> pTarget = static_cast<Medium*>(aT);
    26992490
    27002491    bool fMergeForward = false;
     
    27052496    HRESULT rc = S_OK;
    27062497
    2707     rc = prepareMergeTo(pTarget, NULL, NULL, true, fMergeForward,
    2708                         pParentForTarget, pChildrenToReparent, pMediumLockList);
     2498    rc = i_prepareMergeTo(pTarget, NULL, NULL, true, fMergeForward,
     2499                          pParentForTarget, pChildrenToReparent, pMediumLockList);
    27092500    if (FAILED(rc)) return rc;
    27102501
    27112502    ComObjPtr<Progress> pProgress;
    27122503
    2713     rc = mergeTo(pTarget, fMergeForward, pParentForTarget, pChildrenToReparent,
    2714                  pMediumLockList, &pProgress, false /* aWait */);
     2504    rc = i_mergeTo(pTarget, fMergeForward, pParentForTarget, pChildrenToReparent,
     2505                   pMediumLockList, &pProgress, false /* aWait */);
    27152506    if (FAILED(rc))
    2716         cancelMergeTo(pChildrenToReparent, pMediumLockList);
     2507        i_cancelMergeTo(pChildrenToReparent, pMediumLockList);
    27172508    else
    2718         pProgress.queryInterfaceTo(aProgress);
     2509        pProgress.queryInterfaceTo(aProgress.asOutParam());
    27192510
    27202511    return rc;
    27212512}
    27222513
    2723 STDMETHODIMP Medium::CloneToBase(IMedium   *aTarget,
    2724                                   ComSafeArrayIn(MediumVariant_T, aVariant),
    2725                                   IProgress **aProgress)
     2514HRESULT Medium::cloneToBase(const ComPtr<IMedium> &aTarget,
     2515                            const std::vector<MediumVariant_T> &aVariant,
     2516                            ComPtr<IProgress> &aProgress)
    27262517{
    27272518     int rc = S_OK;
    2728      CheckComArgNotNull(aTarget);
    2729      CheckComArgOutPointerValid(aProgress);
    2730      CheckComArgSafeArrayNotNull(aVariant);
    2731 
    2732      com::SafeArray<MediumVariant_T> variants(ComSafeArrayInArg(aVariant));
    2733 
    2734      rc =  CloneTo(aTarget, ComSafeArrayAsInParam(variants), NULL, aProgress);
     2519
     2520     rc =  cloneTo(aTarget, aVariant, NULL, aProgress);
    27352521     return rc;
    27362522}
    27372523
    2738 STDMETHODIMP Medium::CloneTo(IMedium *aTarget,
    2739                              ComSafeArrayIn(MediumVariant_T, aVariant),
    2740                              IMedium *aParent,
    2741                              IProgress **aProgress)
    2742 {
    2743     CheckComArgNotNull(aTarget);
    2744     CheckComArgOutPointerValid(aProgress);
    2745     CheckComArgSafeArrayNotNull(aVariant);
    2746 
     2524HRESULT Medium::cloneTo(const ComPtr<IMedium> &aTarget,
     2525                        const std::vector<MediumVariant_T> &aVariant,
     2526                        const ComPtr<IMedium> &aParent,
     2527                        ComPtr<IProgress> &aProgress)
     2528{
    27472529    ComAssertRet(aTarget != this, E_INVALIDARG);
    27482530
    2749     AutoCaller autoCaller(this);
    2750     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2751 
    2752     ComObjPtr<Medium> pTarget = static_cast<Medium*>(aTarget);
     2531    IMedium *aT = aTarget;
     2532    ComObjPtr<Medium> pTarget = static_cast<Medium*>(aT);
    27532533    ComObjPtr<Medium> pParent;
    27542534    if (aParent)
    2755         pParent = static_cast<Medium*>(aParent);
     2535    {
     2536        IMedium *aP = aParent;
     2537        pParent = static_cast<Medium*>(aP);
     2538    }
    27562539
    27572540    HRESULT rc = S_OK;
     
    27762559        if (    pTarget->m->state != MediumState_NotCreated
    27772560            &&  pTarget->m->state != MediumState_Created)
    2778             throw pTarget->setStateError();
     2561            throw pTarget->i_setStateError();
    27792562
    27802563        /* Build the source lock list. */
    27812564        MediumLockList *pSourceMediumLockList(new MediumLockList());
    27822565        alock.release();
    2783         rc = createMediumLockList(true /* fFailIfInaccessible */,
    2784                                   false /* fMediumLockWrite */,
    2785                                   NULL,
    2786                                   *pSourceMediumLockList);
     2566        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     2567                                    false /* fMediumLockWrite */,
     2568                                    NULL,
     2569                                    *pSourceMediumLockList);
    27872570        alock.acquire();
    27882571        if (FAILED(rc))
     
    27952578        MediumLockList *pTargetMediumLockList(new MediumLockList());
    27962579        alock.release();
    2797         rc = pTarget->createMediumLockList(true /* fFailIfInaccessible */,
    2798                                            true /* fMediumLockWrite */,
    2799                                            pParent,
    2800                                            *pTargetMediumLockList);
     2580        rc = pTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
     2581                                             true /* fMediumLockWrite */,
     2582                                             pParent,
     2583                                             *pTargetMediumLockList);
    28012584        alock.acquire();
    28022585        if (FAILED(rc))
     
    28162599            throw setError(rc,
    28172600                           tr("Failed to lock source media '%s'"),
    2818                            getLocationFull().c_str());
     2601                           i_getLocationFull().c_str());
    28192602        }
    28202603        alock.release();
     
    28272610            throw setError(rc,
    28282611                           tr("Failed to lock target media '%s'"),
    2829                            pTarget->getLocationFull().c_str());
     2612                           pTarget->i_getLocationFull().c_str());
    28302613        }
    28312614
     
    28442627        ULONG mediumVariantFlags = 0;
    28452628
    2846         if (aVariant)
    2847         {
    2848             com::SafeArray<MediumVariant_T> variants(ComSafeArrayInArg(aVariant));
     2629        if (aVariant.size())
     2630        {
     2631            com::SafeArray<MediumVariant_T> variants(aVariant);
    28492632            for (size_t i = 0; i < variants.size(); i++)
    28502633                mediumVariantFlags |= variants[i];
     
    28682651    if (SUCCEEDED(rc))
    28692652    {
    2870         rc = startThread(pTask);
     2653        rc = i_startThread(pTask);
    28712654
    28722655        if (SUCCEEDED(rc))
    2873             pProgress.queryInterfaceTo(aProgress);
     2656            pProgress.queryInterfaceTo(aProgress.asOutParam());
    28742657    }
    28752658    else if (pTask != NULL)
     
    28792662}
    28802663
    2881 STDMETHODIMP Medium::SetLocation(IN_BSTR aLocation, IProgress **aProgress)
    2882 {
    2883     CheckComArgStrNotEmptyOrNull(aLocation);
    2884     CheckComArgOutPointerValid(aProgress);
    2885 
    2886     AutoCaller autoCaller(this);
    2887     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2888 
     2664HRESULT Medium::setLocation(const com::Utf8Str &aLocation, ComPtr<IProgress> &aProgress)
     2665{
    28892666    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    28902667
     
    28982675    /// this medium), this will also require to add the mRegistered flag to data
    28992676
    2900     *aProgress = NULL;
    29012677    ReturnComNotImplemented();
    29022678}
    29032679
    2904 STDMETHODIMP Medium::Compact(IProgress **aProgress)
    2905 {
    2906     CheckComArgOutPointerValid(aProgress);
    2907 
    2908     AutoCaller autoCaller(this);
    2909     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2910 
     2680HRESULT Medium::compact(ComPtr<IProgress> &aProgress)
     2681{
    29112682    HRESULT rc = S_OK;
    29122683    ComObjPtr<Progress> pProgress;
     
    29202691        MediumLockList *pMediumLockList(new MediumLockList());
    29212692        alock.release();
    2922         rc = createMediumLockList(true /* fFailIfInaccessible */ ,
    2923                                   true /* fMediumLockWrite */,
    2924                                   NULL,
    2925                                   *pMediumLockList);
     2693        rc = i_createMediumLockList(true /* fFailIfInaccessible */ ,
     2694                                    true /* fMediumLockWrite */,
     2695                                    NULL,
     2696                                    *pMediumLockList);
    29262697        alock.acquire();
    29272698        if (FAILED(rc))
     
    29392710            throw setError(rc,
    29402711                           tr("Failed to lock media when compacting '%s'"),
    2941                            getLocationFull().c_str());
     2712                           i_getLocationFull().c_str());
    29422713        }
    29432714
     
    29642735    if (SUCCEEDED(rc))
    29652736    {
    2966         rc = startThread(pTask);
     2737        rc = i_startThread(pTask);
    29672738
    29682739        if (SUCCEEDED(rc))
    2969             pProgress.queryInterfaceTo(aProgress);
     2740            pProgress.queryInterfaceTo(aProgress.asOutParam());
    29702741    }
    29712742    else if (pTask != NULL)
     
    29752746}
    29762747
    2977 STDMETHODIMP Medium::Resize(LONG64 aLogicalSize, IProgress **aProgress)
    2978 {
    2979     CheckComArgOutPointerValid(aProgress);
    2980 
    2981     AutoCaller autoCaller(this);
    2982     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    2983 
     2748HRESULT Medium::resize(LONG64 aLogicalSize,
     2749                       ComPtr<IProgress> &aProgress)
     2750{
    29842751    HRESULT rc = S_OK;
    29852752    ComObjPtr<Progress> pProgress;
     
    29932760        MediumLockList *pMediumLockList(new MediumLockList());
    29942761        alock.release();
    2995         rc = createMediumLockList(true /* fFailIfInaccessible */ ,
    2996                                   true /* fMediumLockWrite */,
    2997                                   NULL,
    2998                                   *pMediumLockList);
     2762        rc = i_createMediumLockList(true /* fFailIfInaccessible */ ,
     2763                                    true /* fMediumLockWrite */,
     2764                                    NULL,
     2765                                    *pMediumLockList);
    29992766        alock.acquire();
    30002767        if (FAILED(rc))
     
    30122779            throw setError(rc,
    30132780                           tr("Failed to lock media when compacting '%s'"),
    3014                            getLocationFull().c_str());
     2781                           i_getLocationFull().c_str());
    30152782        }
    30162783
     
    30372804    if (SUCCEEDED(rc))
    30382805    {
    3039         rc = startThread(pTask);
     2806        rc = i_startThread(pTask);
    30402807
    30412808        if (SUCCEEDED(rc))
    3042             pProgress.queryInterfaceTo(aProgress);
     2809            pProgress.queryInterfaceTo(aProgress.asOutParam());
    30432810    }
    30442811    else if (pTask != NULL)
     
    30482815}
    30492816
    3050 STDMETHODIMP Medium::Reset(IProgress **aProgress)
    3051 {
    3052     CheckComArgOutPointerValid(aProgress);
    3053 
    3054     AutoCaller autoCaller(this);
    3055     if (FAILED(autoCaller.rc())) return autoCaller.rc();
    3056 
     2817HRESULT Medium::reset(ComPtr<IProgress> &aProgress)
     2818{
    30572819    HRESULT rc = S_OK;
    30582820    ComObjPtr<Progress> pProgress;
     
    30732835                           m->strLocationFull.c_str());
    30742836
    3075         rc = canClose();
     2837        rc = i_canClose();
    30762838        if (FAILED(rc))
    30772839            throw rc;
     
    30802842        MediumLockList *pMediumLockList(new MediumLockList());
    30812843        multilock.release();
    3082         rc = createMediumLockList(true /* fFailIfInaccessible */,
    3083                                   true /* fMediumLockWrite */,
    3084                                   NULL,
    3085                                   *pMediumLockList);
     2844        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     2845                                    true /* fMediumLockWrite */,
     2846                                    NULL,
     2847                                    *pMediumLockList);
    30862848        multilock.acquire();
    30872849        if (FAILED(rc))
     
    30992861            throw setError(rc,
    31002862                           tr("Failed to lock media when resetting '%s'"),
    3101                            getLocationFull().c_str());
     2863                           i_getLocationFull().c_str());
    31022864        }
    31032865
     
    31212883    if (SUCCEEDED(rc))
    31222884    {
    3123         rc = startThread(pTask);
     2885        rc = i_startThread(pTask);
    31242886
    31252887        if (SUCCEEDED(rc))
    3126             pProgress.queryInterfaceTo(aProgress);
     2888            pProgress.queryInterfaceTo(aProgress.asOutParam());
    31272889    }
    31282890    else if (pTask != NULL)
     
    31442906 * @return
    31452907 */
    3146 const ComObjPtr<Medium>& Medium::getParent() const
     2908const ComObjPtr<Medium>& Medium::i_getParent() const
    31472909{
    31482910    return m->pParent;
     
    31532915 * @return
    31542916 */
    3155 const MediaList& Medium::getChildren() const
     2917const MediaList& Medium::i_getChildren() const
    31562918{
    31572919    return m->llChildren;
     
    31622924 * @return
    31632925 */
    3164 const Guid& Medium::getId() const
     2926const Guid& Medium::i_getId() const
    31652927{
    31662928    return m->id;
     
    31712933 * @return
    31722934 */
    3173 MediumState_T Medium::getState() const
     2935MediumState_T Medium::i_getState() const
    31742936{
    31752937    return m->state;
     
    31802942 * @return
    31812943 */
    3182 MediumVariant_T Medium::getVariant() const
     2944MediumVariant_T Medium::i_getVariant() const
    31832945{
    31842946    return m->variant;
     
    31892951 * @return
    31902952 */
    3191 bool Medium::isHostDrive() const
     2953bool Medium::i_isHostDrive() const
    31922954{
    31932955    return m->hostDrive;
     
    31982960 * @return
    31992961 */
    3200 const Utf8Str& Medium::getLocationFull() const
     2962const Utf8Str& Medium::i_getLocationFull() const
    32012963{
    32022964    return m->strLocationFull;
     
    32072969 * @return
    32082970 */
    3209 const Utf8Str& Medium::getFormat() const
     2971const Utf8Str& Medium::i_getFormat() const
    32102972{
    32112973    return m->strFormat;
     
    32162978 * @return
    32172979 */
    3218 const ComObjPtr<MediumFormat>& Medium::getMediumFormat() const
     2980const ComObjPtr<MediumFormat>& Medium::i_getMediumFormat() const
    32192981{
    32202982    return m->formatObj;
     
    32262988 * @return
    32272989 */
    3228 bool Medium::isMediumFormatFile() const
     2990bool Medium::i_isMediumFormatFile() const
    32292991{
    32302992    if (    m->formatObj
     
    32393001 * @return
    32403002 */
    3241 uint64_t Medium::getSize() const
     3003uint64_t Medium::i_getSize() const
    32423004{
    32433005    return m->size;
     
    32483010 * @return
    32493011 */
    3250 DeviceType_T Medium::getDeviceType() const
     3012DeviceType_T Medium::i_getDeviceType() const
    32513013{
    32523014    return m->devType;
     
    32573019 * @return
    32583020 */
    3259 MediumType_T Medium::getType() const
     3021MediumType_T Medium::i_getType() const
    32603022{
    32613023    return m->type;
     
    32673029 * @note Must be called from under this object's read or write lock.
    32683030 */
    3269 Utf8Str Medium::getName()
     3031Utf8Str Medium::i_getName()
    32703032{
    32713033    Utf8Str name = RTPathFilename(m->strLocationFull.c_str());
     
    32903052 * @return true if the registry was added; false if the given id was already on the list.
    32913053 */
    3292 bool Medium::addRegistry(const Guid& id, bool fRecurse)
     3054bool Medium::i_addRegistry(const Guid& id, bool fRecurse)
    32933055{
    32943056    AutoCaller autoCaller(this);
     
    33333095        {
    33343096            Medium *pChild = *it;
    3335             fAdd |= pChild->addRegistry(id, true);
     3097            fAdd |= pChild->i_addRegistry(id, true);
    33363098        }
    33373099    }
     
    33503112 * @return
    33513113 */
    3352 bool Medium::removeRegistry(const Guid& id, bool fRecurse)
     3114bool Medium::i_removeRegistry(const Guid& id, bool fRecurse)
    33533115{
    33543116    AutoCaller autoCaller(this);
     
    33823144        {
    33833145            Medium *pChild = *it;
    3384             fRemove |= pChild->removeRegistry(id, true);
     3146            fRemove |= pChild->i_removeRegistry(id, true);
    33853147        }
    33863148    }
     
    33973159 * @return
    33983160 */
    3399 bool Medium::isInRegistry(const Guid& id)
     3161bool Medium::i_isInRegistry(const Guid& id)
    34003162{
    34013163    for (GuidList::const_iterator it = m->llRegistryIDs.begin();
     
    34353197 * @return true if uuid was set.
    34363198 */
    3437 bool Medium::getFirstRegistryMachineId(Guid &uuid) const
     3199bool Medium::i_getFirstRegistryMachineId(Guid &uuid) const
    34383200{
    34393201    if (m->llRegistryIDs.size())
     
    34483210 * Marks all the registries in which this medium is registered as modified.
    34493211 */
    3450 void Medium::markRegistriesModified()
     3212void Medium::i_markRegistriesModified()
    34513213{
    34523214    AutoCaller autoCaller(this);
     
    34793241 * @param aSnapshotId   Snapshot ID; when non-empty, adds a snapshot attachment.
    34803242 */
    3481 HRESULT Medium::addBackReference(const Guid &aMachineId,
    3482                                  const Guid &aSnapshotId /*= Guid::Empty*/)
     3243HRESULT Medium::i_addBackReference(const Guid &aMachineId,
     3244                                   const Guid &aSnapshotId /*= Guid::Empty*/)
    34833245{
    34843246    AssertReturn(aMachineId.isValid(), E_FAIL);
     
    35003262
    35013263        default:
    3502             return setStateError();
     3264            return i_setStateError();
    35033265    }
    35043266
     
    35513313        {
    35523314#ifdef DEBUG
    3553             dumpBackRefs();
     3315            i_dumpBackRefs();
    35543316#endif
    35553317            return setError(VBOX_E_OBJECT_IN_USE,
     
    35783340 *                      attachment.
    35793341 */
    3580 HRESULT Medium::removeBackReference(const Guid &aMachineId,
    3581                                     const Guid &aSnapshotId /*= Guid::Empty*/)
     3342HRESULT Medium::i_removeBackReference(const Guid &aMachineId,
     3343                                      const Guid &aSnapshotId /*= Guid::Empty*/)
    35823344{
    35833345    AssertReturn(aMachineId.isValid(), E_FAIL);
     
    36203382 * @return
    36213383 */
    3622 const Guid* Medium::getFirstMachineBackrefId() const
     3384const Guid* Medium::i_getFirstMachineBackrefId() const
    36233385{
    36243386    if (!m->backRefs.size())
     
    36363398 * @return
    36373399 */
    3638 const Guid* Medium::getAnyMachineBackref() const
     3400const Guid* Medium::i_getAnyMachineBackref() const
    36393401{
    36403402    if (m->backRefs.size())
     
    36483410        // recurse for this child
    36493411        const Guid* puuid;
    3650         if ((puuid = pChild->getAnyMachineBackref()))
     3412        if ((puuid = pChild->i_getAnyMachineBackref()))
    36513413            return puuid;
    36523414    }
     
    36553417}
    36563418
    3657 const Guid* Medium::getFirstMachineBackrefSnapshotId() const
     3419const Guid* Medium::i_getFirstMachineBackrefSnapshotId() const
    36583420{
    36593421    if (!m->backRefs.size())
     
    36673429}
    36683430
    3669 size_t Medium::getMachineBackRefCount() const
     3431size_t Medium::i_getMachineBackRefCount() const
    36703432{
    36713433    return m->backRefs.size();
     
    36773439 * machine backreferences to the debug log.
    36783440 */
    3679 void Medium::dumpBackRefs()
     3441void Medium::i_dumpBackRefs()
    36803442{
    36813443    AutoCaller autoCaller(this);
     
    37113473 * @note Locks this object for writing.
    37123474 */
    3713 HRESULT Medium::updatePath(const Utf8Str &strOldPath, const Utf8Str &strNewPath)
     3475HRESULT Medium::i_updatePath(const Utf8Str &strOldPath, const Utf8Str &strNewPath)
    37143476{
    37153477    AssertReturn(!strOldPath.isEmpty(), E_FAIL);
     
    37523514 * @note Locks medium tree for reading.
    37533515 */
    3754 ComObjPtr<Medium> Medium::getBase(uint32_t *aLevel /*= NULL*/)
     3516ComObjPtr<Medium> Medium::i_getBase(uint32_t *aLevel /*= NULL*/)
    37553517{
    37563518    ComObjPtr<Medium> pBase;
     
    37943556 * @note Locks this object and medium tree for reading.
    37953557 */
    3796 bool Medium::isReadOnly()
     3558bool Medium::i_isReadOnly()
    37973559{
    37983560    AutoCaller autoCaller(this);
     
    38083570        case MediumType_Normal:
    38093571        {
    3810             if (getChildren().size() != 0)
     3572            if (i_getChildren().size() != 0)
    38113573                return true;
    38123574
     
    38393601 * @return
    38403602 */
    3841 void Medium::updateId(const Guid &id)
     3603void Medium::i_updateId(const Guid &id)
    38423604{
    38433605    unconst(m->id) = id;
     
    38533615 * @note Locks this object, medium tree and children for reading.
    38543616 */
    3855 HRESULT Medium::saveSettings(settings::Medium &data,
    3856                              const Utf8Str &strHardDiskFolder)
     3617HRESULT Medium::i_saveSettings(settings::Medium &data,
     3618                               const Utf8Str &strHardDiskFolder)
    38573619{
    38583620    AutoCaller autoCaller(this);
     
    39233685
    39243686    /* save all children */
    3925     for (MediaList::const_iterator it = getChildren().begin();
    3926          it != getChildren().end();
     3687    for (MediaList::const_iterator it = i_getChildren().begin();
     3688         it != i_getChildren().end();
    39273689         ++it)
    39283690    {
    39293691        settings::Medium med;
    3930         HRESULT rc = (*it)->saveSettings(med, strHardDiskFolder);
     3692        HRESULT rc = (*it)->i_saveSettings(med, strHardDiskFolder);
    39313693        AssertComRCReturnRC(rc);
    39323694        data.llChildren.push_back(med);
     
    39483710 * @param mediumLockList    Where to store the resulting list.
    39493711 */
    3950 HRESULT Medium::createMediumLockList(bool fFailIfInaccessible,
    3951                                      bool fMediumLockWrite,
    3952                                      Medium *pToBeParent,
    3953                                      MediumLockList &mediumLockList)
     3712HRESULT Medium::i_createMediumLockList(bool fFailIfInaccessible,
     3713                                       bool fMediumLockWrite,
     3714                                       Medium *pToBeParent,
     3715                                       MediumLockList &mediumLockList)
    39543716{
    39553717    Assert(!m->pVirtualBox->getMediaTreeLockHandle().isWriteLockOnCurrentThread());
     
    39653727    {
    39663728        AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    3967         ComAssertRet(getParent().isNull(), E_FAIL);
    3968         ComAssertRet(getChildren().size() == 0, E_FAIL);
     3729        ComAssertRet(i_getParent().isNull(), E_FAIL);
     3730        ComAssertRet(i_getChildren().size() == 0, E_FAIL);
    39693731    }
    39703732
     
    39803742         * with getting the medium state. Lock lists are not created for
    39813743         * fun, and thus getting the medium status is no luxury. */
    3982         MediumState_T mediumState = pMedium->getState();
     3744        MediumState_T mediumState = pMedium->i_getState();
    39833745        if (mediumState == MediumState_Inaccessible)
    39843746        {
    39853747            alock.release();
    3986             rc = pMedium->queryInfo(false /* fSetImageId */, false /* fSetParentId */);
     3748            rc = pMedium->i_queryInfo(false /* fSetImageId */, false /* fSetParentId */);
    39873749            alock.acquire();
    39883750            if (FAILED(rc)) return rc;
    39893751
    3990             mediumState = pMedium->getState();
     3752            mediumState = pMedium->i_getState();
    39913753            if (mediumState == MediumState_Inaccessible)
    39923754            {
     
    40183780            mediumLockList.Prepend(pMedium, false);
    40193781
    4020         pMedium = pMedium->getParent();
     3782        pMedium = pMedium->i_getParent();
    40213783        if (pMedium.isNull() && pToBeParent)
    40223784        {
     
    40583820 * @note Locks this object and @a aTarget for writing.
    40593821 */
    4060 HRESULT Medium::createDiffStorage(ComObjPtr<Medium> &aTarget,
    4061                                   MediumVariant_T aVariant,
    4062                                   MediumLockList *aMediumLockList,
    4063                                   ComObjPtr<Progress> *aProgress,
    4064                                   bool aWait)
     3822HRESULT Medium::i_createDiffStorage(ComObjPtr<Medium> &aTarget,
     3823                                    MediumVariant_T aVariant,
     3824                                    MediumLockList *aMediumLockList,
     3825                                    ComObjPtr<Progress> *aProgress,
     3826                                    bool aWait)
    40653827{
    40663828    AssertReturn(!aTarget.isNull(), E_FAIL);
     
    40883850
    40893851        if (aTarget->m->state != MediumState_NotCreated)
    4090             throw aTarget->setStateError();
     3852            throw aTarget->i_setStateError();
    40913853
    40923854        /* Check that the medium is not attached to the current state of
     
    41533915    {
    41543916        if (aWait)
    4155             rc = runNow(pTask);
     3917            rc = i_runNow(pTask);
    41563918        else
    4157             rc = startThread(pTask);
     3919            rc = i_startThread(pTask);
    41583920
    41593921        if (SUCCEEDED(rc) && aProgress != NULL)
     
    41693931 * Returns a preferred format for differencing media.
    41703932 */
    4171 Utf8Str Medium::getPreferredDiffFormat()
     3933Utf8Str Medium::i_getPreferredDiffFormat()
    41723934{
    41733935    AutoCaller autoCaller(this);
     
    41993961 * @return
    42003962 */
    4201 HRESULT Medium::close(AutoCaller &autoCaller)
     3963HRESULT Medium::i_close(AutoCaller &autoCaller)
    42023964{
    42033965    // we're accessing parent/child and backrefs, so lock the tree first, then ourselves
     
    42063968                                  COMMA_LOCKVAL_SRC_POS);
    42073969
    4208     LogFlowFunc(("ENTER for %s\n", getLocationFull().c_str()));
     3970    LogFlowFunc(("ENTER for %s\n", i_getLocationFull().c_str()));
    42093971
    42103972    bool wasCreated = true;
     
    42193981            break;
    42203982        default:
    4221             return setStateError();
     3983            return i_setStateError();
    42223984    }
    42233985
     
    42283990
    42293991    // perform extra media-dependent close checks
    4230     HRESULT rc = canClose();
     3992    HRESULT rc = i_canClose();
    42313993    if (FAILED(rc)) return rc;
    42323994
     
    42363998        // uninitialization (to keep the media registry consistent on
    42373999        // failure to do so)
    4238         rc = unregisterWithVirtualBox();
     4000        rc = i_unregisterWithVirtualBox();
    42394001        if (FAILED(rc)) return rc;
    42404002
    42414003        multilock.release();
    4242         markRegistriesModified();
     4004        i_markRegistriesModified();
    42434005        // Release the AutoCalleri now, as otherwise uninit() will simply hang.
    42444006        // Needs to be done before saving the registry, as otherwise there
     
    42884050 *       writing.
    42894051 */
    4290 HRESULT Medium::deleteStorage(ComObjPtr<Progress> *aProgress,
     4052HRESULT Medium::i_deleteStorage(ComObjPtr<Progress> *aProgress,
    42914053                              bool aWait)
    42924054{
     
    43064068                                      this->lockHandle()
    43074069                                      COMMA_LOCKVAL_SRC_POS);
    4308         LogFlowThisFunc(("aWait=%RTbool locationFull=%s\n", aWait, getLocationFull().c_str() ));
     4070        LogFlowThisFunc(("aWait=%RTbool locationFull=%s\n", aWait, i_getLocationFull().c_str() ));
    43094071
    43104072        if (    !(m->formatObj->i_getCapabilities() & (   MediumFormatCapabilities_CreateDynamic
     
    43294091                break;
    43304092            default:
    4331                 throw setStateError();
     4093                throw i_setStateError();
    43324094        }
    43334095
     
    43454107            }
    43464108#ifdef DEBUG
    4347             dumpBackRefs();
     4109            i_dumpBackRefs();
    43484110#endif
    43494111            throw setError(VBOX_E_OBJECT_IN_USE,
     
    43544116        }
    43554117
    4356         rc = canClose();
     4118        rc = i_canClose();
    43574119        if (FAILED(rc))
    43584120            throw rc;
     
    43614123        if (m->state != MediumState_Deleting)
    43624124        {
    4363             rc = markForDeletion();
     4125            rc = i_markForDeletion();
    43644126            if (FAILED(rc))
    43654127                throw rc;
     
    43694131        MediumLockList *pMediumLockList(new MediumLockList());
    43704132        multilock.release();
    4371         rc = createMediumLockList(true /* fFailIfInaccessible */,
    4372                                   true /* fMediumLockWrite */,
    4373                                   NULL,
    4374                                   *pMediumLockList);
     4133        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     4134                                    true /* fMediumLockWrite */,
     4135                                    NULL,
     4136                                    *pMediumLockList);
    43754137        multilock.acquire();
    43764138        if (FAILED(rc))
     
    43884150            throw setError(rc,
    43894151                           tr("Failed to lock media when deleting '%s'"),
    4390                            getLocationFull().c_str());
     4152                           i_getLocationFull().c_str());
    43914153        }
    43924154
     
    43954157         * which would have been broken if unregisterWithVirtualBox() failed
    43964158         * after we successfully deleted the storage) */
    4397         rc = unregisterWithVirtualBox();
     4159        rc = i_unregisterWithVirtualBox();
    43984160        if (FAILED(rc))
    43994161            throw rc;
    44004162        // no longer need lock
    44014163        multilock.release();
    4402         markRegistriesModified();
     4164        i_markRegistriesModified();
    44034165
    44044166        if (aProgress != NULL)
     
    44324194    {
    44334195        if (aWait)
    4434             rc = runNow(pTask);
     4196            rc = i_runNow(pTask);
    44354197        else
    4436             rc = startThread(pTask);
     4198            rc = i_startThread(pTask);
    44374199
    44384200        if (SUCCEEDED(rc) && aProgress != NULL)
     
    44524214         * for deletion when the error was thrown above. */
    44534215        ErrorInfoKeeper eik;
    4454         unmarkForDeletion();
     4216        i_unmarkForDeletion();
    44554217    }
    44564218
     
    44634225 * @note Caller must hold the write lock on this medium!
    44644226 */
    4465 HRESULT Medium::markForDeletion()
     4227HRESULT Medium::i_markForDeletion()
    44664228{
    44674229    ComAssertRet(isWriteLockOnCurrentThread(), E_FAIL);
     
    44744236            return S_OK;
    44754237        default:
    4476             return setStateError();
     4238            return i_setStateError();
    44774239    }
    44784240}
     
    44834245 * @note Caller must hold the write lock on this medium!
    44844246 */
    4485 HRESULT Medium::unmarkForDeletion()
     4247HRESULT Medium::i_unmarkForDeletion()
    44864248{
    44874249    ComAssertRet(isWriteLockOnCurrentThread(), E_FAIL);
     
    44924254            return S_OK;
    44934255        default:
    4494             return setStateError();
     4256            return i_setStateError();
    44954257    }
    44964258}
     
    45014263 * @note Caller must hold the write lock on this medium!
    45024264 */
    4503 HRESULT Medium::markLockedForDeletion()
     4265HRESULT Medium::i_markLockedForDeletion()
    45044266{
    45054267    ComAssertRet(isWriteLockOnCurrentThread(), E_FAIL);
     
    45124274    }
    45134275    else
    4514         return setStateError();
     4276        return i_setStateError();
    45154277}
    45164278
     
    45204282 * @note Caller must hold the write lock on this medium!
    45214283 */
    4522 HRESULT Medium::unmarkLockedForDeletion()
     4284HRESULT Medium::i_unmarkLockedForDeletion()
    45234285{
    45244286    ComAssertRet(isWriteLockOnCurrentThread(), E_FAIL);
     
    45314293    }
    45324294    else
    4533         return setStateError();
     4295        return i_setStateError();
    45344296}
    45354297
     
    45494311 * @param fMergeForward    Resulting preferred merge direction (out).
    45504312 */
    4551 HRESULT Medium::queryPreferredMergeDirection(const ComObjPtr<Medium> &pOther,
    4552                                              bool &fMergeForward)
     4313HRESULT Medium::i_queryPreferredMergeDirection(const ComObjPtr<Medium> &pOther,
     4314                                               bool &fMergeForward)
    45534315{
    45544316    AssertReturn(pOther != NULL, E_FAIL);
     
    45704332
    45714333        /* more sanity checking and figuring out the current merge direction */
    4572         ComObjPtr<Medium> pMedium = getParent();
     4334        ComObjPtr<Medium> pMedium = i_getParent();
    45734335        while (!pMedium.isNull() && pMedium != pOther)
    4574             pMedium = pMedium->getParent();
     4336            pMedium = pMedium->i_getParent();
    45754337        if (pMedium == pOther)
    45764338            fThisParent = false;
    45774339        else
    45784340        {
    4579             pMedium = pOther->getParent();
     4341            pMedium = pOther->i_getParent();
    45804342            while (!pMedium.isNull() && pMedium != this)
    4581                 pMedium = pMedium->getParent();
     4343                pMedium = pMedium->i_getParent();
    45824344            if (pMedium == this)
    45834345                fThisParent = true;
     
    45874349                {
    45884350                    AutoReadLock alock(pOther COMMA_LOCKVAL_SRC_POS);
    4589                     tgtLoc = pOther->getLocationFull();
     4351                    tgtLoc = pOther->i_getLocationFull();
    45904352                }
    45914353
     
    46094371        uint64_t cbMediumOther = 0;
    46104372
    4611         if (isMediumFormatFile() && pOther->isMediumFormatFile())
    4612         {
    4613             vrc = RTFileQuerySize(this->getLocationFull().c_str(), &cbMediumThis);
     4373        if (i_isMediumFormatFile() && pOther->i_isMediumFormatFile())
     4374        {
     4375            vrc = RTFileQuerySize(this->i_getLocationFull().c_str(), &cbMediumThis);
    46144376            if (RT_SUCCESS(vrc))
    46154377            {
    4616                 vrc = RTFileQuerySize(pOther->getLocationFull().c_str(),
     4378                vrc = RTFileQuerySize(pOther->i_getLocationFull().c_str(),
    46174379                                      &cbMediumOther);
    46184380            }
     
    46684430 *       intermediate media for writing.
    46694431 */
    4670 HRESULT Medium::prepareMergeTo(const ComObjPtr<Medium> &pTarget,
    4671                                const Guid *aMachineId,
    4672                                const Guid *aSnapshotId,
    4673                                bool fLockMedia,
    4674                                bool &fMergeForward,
    4675                                ComObjPtr<Medium> &pParentForTarget,
    4676                                MediumLockList * &aChildrenToReparent,
    4677                                MediumLockList * &aMediumLockList)
     4432HRESULT Medium::i_prepareMergeTo(const ComObjPtr<Medium> &pTarget,
     4433                                 const Guid *aMachineId,
     4434                                 const Guid *aSnapshotId,
     4435                                 bool fLockMedia,
     4436                                 bool &fMergeForward,
     4437                                 ComObjPtr<Medium> &pParentForTarget,
     4438                                 MediumLockList * &aChildrenToReparent,
     4439                                 MediumLockList * &aMediumLockList)
    46784440{
    46794441    AssertReturn(pTarget != NULL, E_FAIL);
     
    47004462
    47014463        /* more sanity checking and figuring out the merge direction */
    4702         ComObjPtr<Medium> pMedium = getParent();
     4464        ComObjPtr<Medium> pMedium = i_getParent();
    47034465        while (!pMedium.isNull() && pMedium != pTarget)
    4704             pMedium = pMedium->getParent();
     4466            pMedium = pMedium->i_getParent();
    47054467        if (pMedium == pTarget)
    47064468            fMergeForward = false;
    47074469        else
    47084470        {
    4709             pMedium = pTarget->getParent();
     4471            pMedium = pTarget->i_getParent();
    47104472            while (!pMedium.isNull() && pMedium != this)
    4711                 pMedium = pMedium->getParent();
     4473                pMedium = pMedium->i_getParent();
    47124474            if (pMedium == this)
    47134475                fMergeForward = true;
     
    47174479                {
    47184480                    AutoReadLock alock(pTarget COMMA_LOCKVAL_SRC_POS);
    4719                     tgtLoc = pTarget->getLocationFull();
     4481                    tgtLoc = pTarget->i_getLocationFull();
    47204482                }
    47214483
     
    47314493        treeLock.release();
    47324494        if (fMergeForward)
    4733             rc = pTarget->createMediumLockList(true /* fFailIfInaccessible */,
    4734                                                true /* fMediumLockWrite */,
    4735                                                NULL,
    4736                                                *aMediumLockList);
     4495            rc = pTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
     4496                                                 true /* fMediumLockWrite */,
     4497                                                 NULL,
     4498                                                 *aMediumLockList);
    47374499        else
    4738             rc = createMediumLockList(true /* fFailIfInaccessible */,
    4739                                       false /* fMediumLockWrite */,
    4740                                       NULL,
    4741                                       *aMediumLockList);
     4500            rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     4501                                        false /* fMediumLockWrite */,
     4502                                        NULL,
     4503                                        *aMediumLockList);
    47424504        treeLock.acquire();
    47434505        if (FAILED(rc))
     
    47544516                AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    47554517                if (m->state != MediumState_Created)
    4756                     throw setStateError();
     4518                    throw i_setStateError();
    47574519            }
    47584520            {
    47594521                AutoReadLock alock(pTarget COMMA_LOCKVAL_SRC_POS);
    47604522                if (pTarget->m->state != MediumState_Created)
    4761                     throw pTarget->setStateError();
     4523                    throw pTarget->i_setStateError();
    47624524            }
    47634525        }
     
    47674529        {
    47684530            AutoReadLock alock(this COMMA_LOCKVAL_SRC_POS);
    4769             if (getChildren().size() > 1)
     4531            if (i_getChildren().size() > 1)
    47704532            {
    47714533                throw setError(VBOX_E_INVALID_OBJECT_STATE,
    47724534                               tr("Medium '%s' involved in the merge operation has more than one child medium (%d)"),
    4773                                m->strLocationFull.c_str(), getChildren().size());
     4535                               m->strLocationFull.c_str(), i_getChildren().size());
    47744536            }
    47754537            /* One backreference is only allowed if the machine ID is not empty
     
    47804542                    || m->backRefs.size() != 1
    47814543                    || aMachineId->isZero()
    4782                     || *getFirstMachineBackrefId() != *aMachineId
     4544                    || *i_getFirstMachineBackrefId() != *aMachineId
    47834545                    || (   (!aSnapshotId || !aSnapshotId->isZero())
    4784                         && *getFirstMachineBackrefSnapshotId() != *aSnapshotId)))
     4546                        && *i_getFirstMachineBackrefSnapshotId() != *aSnapshotId)))
    47854547                throw setError(VBOX_E_OBJECT_IN_USE,
    47864548                               tr("Medium '%s' is attached to %d virtual machines"),
     
    47984560        {
    47994561            AutoReadLock alock(pTarget COMMA_LOCKVAL_SRC_POS);
    4800             if (pTarget->getChildren().size() > 1)
     4562            if (pTarget->i_getChildren().size() > 1)
    48014563            {
    48024564                throw setError(VBOX_E_OBJECT_IN_USE,
    48034565                               tr("Medium '%s' involved in the merge operation has more than one child medium (%d)"),
    48044566                               pTarget->m->strLocationFull.c_str(),
    4805                                pTarget->getChildren().size());
     4567                               pTarget->i_getChildren().size());
    48064568            }
    48074569            if (pTarget->m->type == MediumType_Immutable)
     
    48154577        }
    48164578        ComObjPtr<Medium> pLast(fMergeForward ? (Medium *)pTarget : this);
    4817         ComObjPtr<Medium> pLastIntermediate = pLast->getParent();
     4579        ComObjPtr<Medium> pLastIntermediate = pLast->i_getParent();
    48184580        for (pLast = pLastIntermediate;
    48194581             !pLast.isNull() && pLast != pTarget && pLast != this;
    4820              pLast = pLast->getParent())
     4582             pLast = pLast->i_getParent())
    48214583        {
    48224584            AutoReadLock alock(pLast COMMA_LOCKVAL_SRC_POS);
    4823             if (pLast->getChildren().size() > 1)
     4585            if (pLast->i_getChildren().size() > 1)
    48244586            {
    48254587                throw setError(VBOX_E_OBJECT_IN_USE,
    48264588                               tr("Medium '%s' involved in the merge operation has more than one child medium (%d)"),
    48274589                               pLast->m->strLocationFull.c_str(),
    4828                                pLast->getChildren().size());
     4590                               pLast->i_getChildren().size());
    48294591            }
    48304592            if (pLast->m->backRefs.size() != 0)
     
    48424604            if (m->state == MediumState_Created)
    48434605            {
    4844                 rc = markForDeletion();
     4606                rc = i_markForDeletion();
    48454607                if (FAILED(rc))
    48464608                    throw rc;
     
    48494611            {
    48504612                if (fLockMedia)
    4851                     throw setStateError();
     4613                    throw i_setStateError();
    48524614                else if (   m->state == MediumState_LockedWrite
    48534615                         || m->state == MediumState_LockedRead)
     
    48564618                     * others to have done so. */
    48574619                    if (m->preLockState == MediumState_Created)
    4858                         markLockedForDeletion();
     4620                        i_markLockedForDeletion();
    48594621                    else if (m->preLockState != MediumState_Deleting)
    4860                         throw setStateError();
     4622                        throw i_setStateError();
    48614623                }
    48624624                else
    4863                     throw setStateError();
     4625                    throw i_setStateError();
    48644626            }
    48654627        }
     
    48684630        {
    48694631            /* we will need parent to reparent target */
    4870             pParentForTarget = getParent();
     4632            pParentForTarget = i_getParent();
    48714633        }
    48724634        else
     
    48744636            /* we will need to reparent children of the source */
    48754637            aChildrenToReparent = new MediumLockList();
    4876             for (MediaList::const_iterator it = getChildren().begin();
    4877                  it != getChildren().end();
     4638            for (MediaList::const_iterator it = i_getChildren().begin();
     4639                 it != i_getChildren().end();
    48784640                 ++it)
    48794641            {
     
    48924654        for (pLast = pLastIntermediate;
    48934655             !pLast.isNull() && pLast != pTarget && pLast != this;
    4894              pLast = pLast->getParent())
     4656             pLast = pLast->i_getParent())
    48954657        {
    48964658            AutoWriteLock alock(pLast COMMA_LOCKVAL_SRC_POS);
    48974659            if (pLast->m->state == MediumState_Created)
    48984660            {
    4899                 rc = pLast->markForDeletion();
     4661                rc = pLast->i_markForDeletion();
    49004662                if (FAILED(rc))
    49014663                    throw rc;
    49024664            }
    49034665            else
    4904                 throw pLast->setStateError();
     4666                throw pLast->i_setStateError();
    49054667        }
    49064668
     
    49384700                throw setError(rc,
    49394701                               tr("Failed to lock media when merging to '%s'"),
    4940                                pTarget->getLocationFull().c_str());
     4702                               pTarget->i_getLocationFull().c_str());
    49414703            }
    49424704        }
     
    50374799 *       for writing.
    50384800 */
    5039 HRESULT Medium::mergeTo(const ComObjPtr<Medium> &pTarget,
    5040                         bool fMergeForward,
    5041                         const ComObjPtr<Medium> &pParentForTarget,
    5042                         MediumLockList *aChildrenToReparent,
    5043                         MediumLockList *aMediumLockList,
    5044                         ComObjPtr<Progress> *aProgress,
    5045                         bool aWait)
     4801HRESULT Medium::i_mergeTo(const ComObjPtr<Medium> &pTarget,
     4802                          bool fMergeForward,
     4803                          const ComObjPtr<Medium> &pParentForTarget,
     4804                          MediumLockList *aChildrenToReparent,
     4805                          MediumLockList *aMediumLockList,
     4806                          ComObjPtr<Progress> *aProgress,
     4807                          bool aWait)
    50464808{
    50474809    AssertReturn(pTarget != NULL, E_FAIL);
     
    50734835                {
    50744836                    AutoReadLock alock(pTarget COMMA_LOCKVAL_SRC_POS);
    5075                     tgtName = pTarget->getName();
     4837                    tgtName = pTarget->i_getName();
    50764838                }
    50774839
     
    50824844                                     static_cast<IMedium*>(this),
    50834845                                     BstrFmt(tr("Merging medium '%s' to '%s'"),
    5084                                              getName().c_str(),
     4846                                             i_getName().c_str(),
    50854847                                             tgtName.c_str()).raw(),
    50864848                                     TRUE /* aCancelable */);
     
    51054867    {
    51064868        if (aWait)
    5107             rc = runNow(pTask);
     4869            rc = i_runNow(pTask);
    51084870        else
    5109             rc = startThread(pTask);
     4871            rc = i_startThread(pTask);
    51104872
    51114873        if (SUCCEEDED(rc) && aProgress != NULL)
     
    51294891 * @note Locks the media from the chain for writing.
    51304892 */
    5131 void Medium::cancelMergeTo(MediumLockList *aChildrenToReparent,
    5132                            MediumLockList *aMediumLockList)
     4893void Medium::i_cancelMergeTo(MediumLockList *aChildrenToReparent,
     4894                             MediumLockList *aMediumLockList)
    51334895{
    51344896    AutoCaller autoCaller(this);
     
    51534915        if (pMedium->m->state == MediumState_Deleting)
    51544916        {
    5155             rc = pMedium->unmarkForDeletion();
     4917            rc = pMedium->i_unmarkForDeletion();
    51564918            AssertComRC(rc);
    51574919        }
     
    51714933 * parent.
    51724934 */
    5173 HRESULT Medium::fixParentUuidOfChildren(MediumLockList *pChildrenToReparent)
     4935HRESULT Medium::i_fixParentUuidOfChildren(MediumLockList *pChildrenToReparent)
    51744936{
    51754937    Assert(!isWriteLockOnCurrentThread());
    51764938    Assert(!m->pVirtualBox->getMediaTreeLockHandle().isWriteLockOnCurrentThread());
    51774939    MediumLockList mediumLockList;
    5178     HRESULT rc = createMediumLockList(true /* fFailIfInaccessible */,
    5179                                       false /* fMediumLockWrite */,
    5180                                       this,
    5181                                       mediumLockList);
     4940    HRESULT rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     4941                                        false /* fMediumLockWrite */,
     4942                                        this,
     4943                                        mediumLockList);
    51824944    AssertComRCReturnRC(rc);
    51834945
     
    51854947    {
    51864948        PVBOXHDD hdd;
    5187         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     4949        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    51884950        ComAssertRCThrow(vrc, E_FAIL);
    51894951
     
    52435005                          tr("Could not update medium UUID references to parent '%s' (%s)"),
    52445006                          m->strLocationFull.c_str(),
    5245                           vdError(aVRC).c_str());
     5007                          i_vdError(aVRC).c_str());
    52465008        }
    52475009
     
    52675029 * @note The source format is defined by the Medium instance.
    52685030 */
    5269 HRESULT Medium::exportFile(const char *aFilename,
    5270                            const ComObjPtr<MediumFormat> &aFormat,
    5271                            MediumVariant_T aVariant,
    5272                            PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
    5273                            const ComObjPtr<Progress> &aProgress)
     5031HRESULT Medium::i_exportFile(const char *aFilename,
     5032                             const ComObjPtr<MediumFormat> &aFormat,
     5033                             MediumVariant_T aVariant,
     5034                             PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
     5035                             const ComObjPtr<Progress> &aProgress)
    52745036{
    52755037    AssertPtrReturn(aFilename, E_INVALIDARG);
     
    52895051        /* Build the source lock list. */
    52905052        MediumLockList *pSourceMediumLockList(new MediumLockList());
    5291         rc = createMediumLockList(true /* fFailIfInaccessible */,
    5292                                   false /* fMediumLockWrite */,
    5293                                   NULL,
    5294                                   *pSourceMediumLockList);
     5053        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     5054                                    false /* fMediumLockWrite */,
     5055                                    NULL,
     5056                                    *pSourceMediumLockList);
    52955057        if (FAILED(rc))
    52965058        {
     
    53055067            throw setError(rc,
    53065068                           tr("Failed to lock source media '%s'"),
    5307                            getLocationFull().c_str());
     5069                           i_getLocationFull().c_str());
    53085070        }
    53095071
     
    53205082
    53215083    if (SUCCEEDED(rc))
    5322         rc = startThread(pTask);
     5084        rc = i_startThread(pTask);
    53235085    else if (pTask != NULL)
    53245086        delete pTask;
     
    53425104 * @note The destination format is defined by the Medium instance.
    53435105 */
    5344 HRESULT Medium::importFile(const char *aFilename,
    5345                            const ComObjPtr<MediumFormat> &aFormat,
    5346                            MediumVariant_T aVariant,
    5347                            PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
    5348                            const ComObjPtr<Medium> &aParent,
    5349                            const ComObjPtr<Progress> &aProgress)
     5106HRESULT Medium::i_importFile(const char *aFilename,
     5107                             const ComObjPtr<MediumFormat> &aFormat,
     5108                             MediumVariant_T aVariant,
     5109                             PVDINTERFACEIO aVDImageIOIf, void *aVDImageIOUser,
     5110                             const ComObjPtr<Medium> &aParent,
     5111                             const ComObjPtr<Progress> &aProgress)
    53505112{
    53515113    AssertPtrReturn(aFilename, E_INVALIDARG);
     
    53755137        if (   m->state != MediumState_NotCreated
    53765138            && m->state != MediumState_Created)
    5377             throw setStateError();
     5139            throw i_setStateError();
    53785140
    53795141        /* Build the target lock list. */
    53805142        MediumLockList *pTargetMediumLockList(new MediumLockList());
    53815143        alock.release();
    5382         rc = createMediumLockList(true /* fFailIfInaccessible */,
    5383                                   true /* fMediumLockWrite */,
    5384                                   aParent,
    5385                                   *pTargetMediumLockList);
     5144        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     5145                                    true /* fMediumLockWrite */,
     5146                                    aParent,
     5147                                    *pTargetMediumLockList);
    53865148        alock.acquire();
    53875149        if (FAILED(rc))
     
    53995161            throw setError(rc,
    54005162                           tr("Failed to lock target media '%s'"),
    5401                            getLocationFull().c_str());
     5163                           i_getLocationFull().c_str());
    54025164        }
    54035165
     
    54185180
    54195181    if (SUCCEEDED(rc))
    5420         rc = startThread(pTask);
     5182        rc = i_startThread(pTask);
    54215183    else if (pTask != NULL)
    54225184        delete pTask;
     
    54425204 * @return
    54435205 */
    5444 HRESULT Medium::cloneToEx(const ComObjPtr<Medium> &aTarget, ULONG aVariant,
    5445                           const ComObjPtr<Medium> &aParent, IProgress **aProgress,
    5446                           uint32_t idxSrcImageSame, uint32_t idxDstImageSame)
     5206HRESULT Medium::i_cloneToEx(const ComObjPtr<Medium> &aTarget, ULONG aVariant,
     5207                            const ComObjPtr<Medium> &aParent, IProgress **aProgress,
     5208                            uint32_t idxSrcImageSame, uint32_t idxDstImageSame)
    54475209{
    54485210    CheckComArgNotNull(aTarget);
     
    54745236        if (    aTarget->m->state != MediumState_NotCreated
    54755237            &&  aTarget->m->state != MediumState_Created)
    5476             throw aTarget->setStateError();
     5238            throw aTarget->i_setStateError();
    54775239
    54785240        /* Build the source lock list. */
    54795241        MediumLockList *pSourceMediumLockList(new MediumLockList());
    54805242        alock.release();
    5481         rc = createMediumLockList(true /* fFailIfInaccessible */,
    5482                                   false /* fMediumLockWrite */,
    5483                                   NULL,
    5484                                   *pSourceMediumLockList);
     5243        rc = i_createMediumLockList(true /* fFailIfInaccessible */,
     5244                                    false /* fMediumLockWrite */,
     5245                                    NULL,
     5246                                    *pSourceMediumLockList);
    54855247        alock.acquire();
    54865248        if (FAILED(rc))
     
    54935255        MediumLockList *pTargetMediumLockList(new MediumLockList());
    54945256        alock.release();
    5495         rc = aTarget->createMediumLockList(true /* fFailIfInaccessible */,
    5496                                            true /* fMediumLockWrite */,
    5497                                            aParent,
    5498                                            *pTargetMediumLockList);
     5257        rc = aTarget->i_createMediumLockList(true /* fFailIfInaccessible */,
     5258                                             true /* fMediumLockWrite */,
     5259                                             aParent,
     5260                                             *pTargetMediumLockList);
    54995261        alock.acquire();
    55005262        if (FAILED(rc))
     
    55145276            throw setError(rc,
    55155277                           tr("Failed to lock source media '%s'"),
    5516                            getLocationFull().c_str());
     5278                           i_getLocationFull().c_str());
    55175279        }
    55185280        alock.release();
     
    55255287            throw setError(rc,
    55265288                           tr("Failed to lock target media '%s'"),
    5527                            aTarget->getLocationFull().c_str());
     5289                           aTarget->i_getLocationFull().c_str());
    55285290        }
    55295291
     
    55585320    if (SUCCEEDED(rc))
    55595321    {
    5560         rc = startThread(pTask);
     5322        rc = i_startThread(pTask);
    55615323
    55625324        if (SUCCEEDED(rc))
     
    55925354 * @return
    55935355 */
    5594 HRESULT Medium::queryInfo(bool fSetImageId, bool fSetParentId)
     5356HRESULT Medium::i_queryInfo(bool fSetImageId, bool fSetParentId)
    55955357{
    55965358    Assert(!isWriteLockOnCurrentThread());
     
    57025464
    57035465        PVBOXHDD hdd;
    5704         vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     5466        vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    57055467        ComAssertRCThrow(vrc, E_FAIL);
    57065468
     
    57185480            {
    57195481                lastAccessError = Utf8StrFmt(tr("Could not open the medium '%s'%s"),
    5720                                              location.c_str(), vdError(vrc).c_str());
     5482                                             location.c_str(), i_vdError(vrc).c_str());
    57215483                throw S_OK;
    57225484            }
     
    57345496                    {
    57355497                        lastAccessError = Utf8StrFmt(tr("Could not update the UUID of medium '%s'%s"),
    5736                                          location.c_str(), vdError(vrc).c_str());
     5498                                         location.c_str(), i_vdError(vrc).c_str());
    57375499                        throw S_OK;
    57385500                    }
     
    57475509                    {
    57485510                        lastAccessError = Utf8StrFmt(tr("Could not update the parent UUID of medium '%s'%s"),
    5749                                          location.c_str(), vdError(vrc).c_str());
     5511                                         location.c_str(), i_vdError(vrc).c_str());
    57505512                        throw S_OK;
    57515513                    }
     
    58795641
    58805642                    if (m->pParent)
    5881                         deparent();
    5882                     setParent(pParent);
     5643                        i_deparent();
     5644                    i_setParent(pParent);
    58835645
    58845646                    treeLock.release();
     
    59185680                        AutoReadLock parentLock(m->pParent COMMA_LOCKVAL_SRC_POS);
    59195681                        if (   !fRepairImageZeroParentUuid
    5920                             && m->pParent->getState() != MediumState_Inaccessible
    5921                             && m->pParent->getId() != parentId)
     5682                            && m->pParent->i_getState() != MediumState_Inaccessible
     5683                            && m->pParent->i_getId() != parentId)
    59225684                        {
    59235685                            /** @todo r=klaus this always refers to VirtualBox.xml as the medium registry, even for new VMs */
     
    59255687                                    tr("Parent UUID {%RTuuid} of the medium '%s' does not match UUID {%RTuuid} of its parent medium stored in the media registry ('%s')"),
    59265688                                    &parentId, location.c_str(),
    5927                                     m->pParent->getId().raw(),
     5689                                    m->pParent->i_getId().raw(),
    59285690                                    m->pVirtualBox->settingsFilePath().c_str());
    59295691                            parentLock.release();
     
    59555717        {
    59565718            lastAccessError = Utf8StrFmt(tr("Could not update and close the medium '%s'%s"),
    5957                                          location.c_str(), vdError(vrc).c_str());
     5719                                         location.c_str(), i_vdError(vrc).c_str());
    59585720            success = false;
    59595721            throw S_OK;
     
    60135775        {
    60145776            PVBOXHDD hdd;
    6015             vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     5777            vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    60165778            ComAssertRCThrow(vrc, E_FAIL);
    60175779
     
    60605822 * @note Caller must hold the media tree write lock!
    60615823 */
    6062 HRESULT Medium::canClose()
     5824HRESULT Medium::i_canClose()
    60635825{
    60645826    Assert(m->pVirtualBox->getMediaTreeLockHandle().isWriteLockOnCurrentThread());
    60655827
    6066     if (getChildren().size() != 0)
     5828    if (i_getChildren().size() != 0)
    60675829        return setError(VBOX_E_OBJECT_IN_USE,
    60685830                        tr("Cannot close medium '%s' because it has %d child media"),
    6069                         m->strLocationFull.c_str(), getChildren().size());
     5831                        m->strLocationFull.c_str(), i_getChildren().size());
    60705832
    60715833    return S_OK;
     
    60775839 * @note Caller must have locked the media tree lock for writing!
    60785840 */
    6079 HRESULT Medium::unregisterWithVirtualBox()
     5841HRESULT Medium::i_unregisterWithVirtualBox()
    60805842{
    60815843    /* Note that we need to de-associate ourselves from the parent to let
     
    60865848
    60875849    Medium *pParentBackup = m->pParent;
    6088     AssertReturn(getChildren().size() == 0, E_FAIL);
     5850    AssertReturn(i_getChildren().size() == 0, E_FAIL);
    60895851    if (m->pParent)
    6090         deparent();
     5852        i_deparent();
    60915853
    60925854    HRESULT rc = m->pVirtualBox->unregisterMedium(this);
     
    61075869 * Like SetProperty but do not trigger a settings store. Only for internal use!
    61085870 */
    6109 HRESULT Medium::setPropertyDirect(const Utf8Str &aName, const Utf8Str &aValue)
     5871HRESULT Medium::i_setPropertyDirect(const Utf8Str &aName, const Utf8Str &aValue)
    61105872{
    61115873    AutoCaller autoCaller(this);
     
    61205882            break;
    61215883        default:
    6122             return setStateError();
     5884            return i_setStateError();
    61235885    }
    61245886
     
    61335895 * @note Must be called from under this object's write or read lock.
    61345896 */
    6135 HRESULT Medium::setStateError()
     5897HRESULT Medium::i_setStateError()
    61365898{
    61375899    HRESULT rc = E_FAIL;
     
    62225984 * @note Must be called from under this object's write lock.
    62235985 */
    6224 HRESULT Medium::setLocation(const Utf8Str &aLocation,
     5986HRESULT Medium::i_setLocation(const Utf8Str &aLocation,
    62255987                            const Utf8Str &aFormat /* = Utf8Str::Empty */)
    62265988{
     
    63346096                else
    63356097                {
    6336                     HRESULT rc = setFormat(aFormat);
     6098                    HRESULT rc = i_setFormat(aFormat);
    63376099                    /* setFormat() must not fail since we've just used the backend so
    63386100                     * the format object must be there */
     
    63416103            }
    63426104            else if (   enmType == VDTYPE_INVALID
    6343                      || m->devType != convertToDeviceType(enmType))
     6105                     || m->devType != i_convertToDeviceType(enmType))
    63446106            {
    63456107                /*
     
    63556117                ComAssertRet(backendName != NULL && *backendName != '\0', E_FAIL);
    63566118
    6357                 HRESULT rc = setFormat(backendName);
     6119                HRESULT rc = i_setFormat(backendName);
    63586120                RTStrFree(backendName);
    63596121
     
    63916153 * @note Must be called from under this object's write lock.
    63926154 */
    6393 HRESULT Medium::setFormat(const Utf8Str &aFormat)
     6155HRESULT Medium::i_setFormat(const Utf8Str &aFormat)
    63946156{
    63956157    /* get the format object first */
     
    64316193 * Converts the Medium device type to the VD type.
    64326194 */
    6433 VDTYPE Medium::convertDeviceType()
     6195VDTYPE Medium::i_convertDeviceType()
    64346196{
    64356197    VDTYPE enmType;
     
    64566218 * Converts from the VD type to the medium type.
    64576219 */
    6458 DeviceType_T Medium::convertToDeviceType(VDTYPE enmType)
     6220DeviceType_T Medium::i_convertToDeviceType(VDTYPE enmType)
    64596221{
    64606222    DeviceType_T devType;
     
    64796241
    64806242/**
    6481  * Returns the last error message collected by the vdErrorCall callback and
     6243 * Returns the last error message collected by the i_vdErrorCall callback and
    64826244 * resets it.
    64836245 *
     
    64896251 * format string is given @a aVRC as an argument.
    64906252 *
    6491  * If there is no last error message collected by vdErrorCall or if it is a
     6253 * If there is no last error message collected by i_vdErrorCall or if it is a
    64926254 * null or empty string, then this function returns the following text:
    64936255 * <code>
     
    65006262 * @param aVRC  VBox error code to use when no error message is provided.
    65016263 */
    6502 Utf8Str Medium::vdError(int aVRC)
     6264Utf8Str Medium::i_vdError(int aVRC)
    65036265{
    65046266    Utf8Str error;
     
    65296291 */
    65306292/*static*/
    6531 DECLCALLBACK(void) Medium::vdErrorCall(void *pvUser, int rc, RT_SRC_POS_DECL,
    6532                                        const char *pszFormat, va_list va)
     6293DECLCALLBACK(void) Medium::i_vdErrorCall(void *pvUser, int rc, RT_SRC_POS_DECL,
     6294                                         const char *pszFormat, va_list va)
    65336295{
    65346296    NOREF(pszFile); NOREF(iLine); NOREF(pszFunction); /* RT_SRC_POS_DECL */
     
    65476309
    65486310/* static */
    6549 DECLCALLBACK(bool) Medium::vdConfigAreKeysValid(void *pvUser,
    6550                                                 const char * /* pszzValid */)
     6311DECLCALLBACK(bool) Medium::i_vdConfigAreKeysValid(void *pvUser,
     6312                                                  const char * /* pszzValid */)
    65516313{
    65526314    Medium *that = static_cast<Medium*>(pvUser);
     
    65596321
    65606322/* static */
    6561 DECLCALLBACK(int) Medium::vdConfigQuerySize(void *pvUser,
    6562                                             const char *pszName,
    6563                                             size_t *pcbValue)
     6323DECLCALLBACK(int) Medium::i_vdConfigQuerySize(void *pvUser,
     6324                                              const char *pszName,
     6325                                              size_t *pcbValue)
    65646326{
    65656327    AssertReturn(VALID_PTR(pcbValue), VERR_INVALID_POINTER);
     
    65826344
    65836345/* static */
    6584 DECLCALLBACK(int) Medium::vdConfigQuery(void *pvUser,
    6585                                         const char *pszName,
    6586                                         char *pszValue,
    6587                                         size_t cchValue)
     6346DECLCALLBACK(int) Medium::i_vdConfigQuery(void *pvUser,
     6347                                          const char *pszName,
     6348                                          char *pszValue,
     6349                                          size_t cchValue)
    65886350{
    65896351    AssertReturn(VALID_PTR(pszValue), VERR_INVALID_POINTER);
     
    66096371}
    66106372
    6611 DECLCALLBACK(int) Medium::vdTcpSocketCreate(uint32_t fFlags, PVDSOCKET pSock)
     6373DECLCALLBACK(int) Medium::i_vdTcpSocketCreate(uint32_t fFlags, PVDSOCKET pSock)
    66126374{
    66136375    PVDSOCKETINT pSocketInt = NULL;
     
    66256387}
    66266388
    6627 DECLCALLBACK(int) Medium::vdTcpSocketDestroy(VDSOCKET Sock)
     6389DECLCALLBACK(int) Medium::i_vdTcpSocketDestroy(VDSOCKET Sock)
    66286390{
    66296391    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66376399}
    66386400
    6639 DECLCALLBACK(int) Medium::vdTcpClientConnect(VDSOCKET Sock, const char *pszAddress, uint32_t uPort)
     6401DECLCALLBACK(int) Medium::i_vdTcpClientConnect(VDSOCKET Sock, const char *pszAddress, uint32_t uPort)
    66406402{
    66416403    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66446406}
    66456407
    6646 DECLCALLBACK(int) Medium::vdTcpClientClose(VDSOCKET Sock)
     6408DECLCALLBACK(int) Medium::i_vdTcpClientClose(VDSOCKET Sock)
    66476409{
    66486410    int rc = VINF_SUCCESS;
     
    66546416}
    66556417
    6656 DECLCALLBACK(bool) Medium::vdTcpIsClientConnected(VDSOCKET Sock)
     6418DECLCALLBACK(bool) Medium::i_vdTcpIsClientConnected(VDSOCKET Sock)
    66576419{
    66586420    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66606422}
    66616423
    6662 DECLCALLBACK(int) Medium::vdTcpSelectOne(VDSOCKET Sock, RTMSINTERVAL cMillies)
     6424DECLCALLBACK(int) Medium::i_vdTcpSelectOne(VDSOCKET Sock, RTMSINTERVAL cMillies)
    66636425{
    66646426    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66666428}
    66676429
    6668 DECLCALLBACK(int) Medium::vdTcpRead(VDSOCKET Sock, void *pvBuffer, size_t cbBuffer, size_t *pcbRead)
     6430DECLCALLBACK(int) Medium::i_vdTcpRead(VDSOCKET Sock, void *pvBuffer, size_t cbBuffer, size_t *pcbRead)
    66696431{
    66706432    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66726434}
    66736435
    6674 DECLCALLBACK(int) Medium::vdTcpWrite(VDSOCKET Sock, const void *pvBuffer, size_t cbBuffer)
     6436DECLCALLBACK(int) Medium::i_vdTcpWrite(VDSOCKET Sock, const void *pvBuffer, size_t cbBuffer)
    66756437{
    66766438    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66786440}
    66796441
    6680 DECLCALLBACK(int) Medium::vdTcpSgWrite(VDSOCKET Sock, PCRTSGBUF pSgBuf)
     6442DECLCALLBACK(int) Medium::i_vdTcpSgWrite(VDSOCKET Sock, PCRTSGBUF pSgBuf)
    66816443{
    66826444    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66846446}
    66856447
    6686 DECLCALLBACK(int) Medium::vdTcpFlush(VDSOCKET Sock)
     6448DECLCALLBACK(int) Medium::i_vdTcpFlush(VDSOCKET Sock)
    66876449{
    66886450    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66906452}
    66916453
    6692 DECLCALLBACK(int) Medium::vdTcpSetSendCoalescing(VDSOCKET Sock, bool fEnable)
     6454DECLCALLBACK(int) Medium::i_vdTcpSetSendCoalescing(VDSOCKET Sock, bool fEnable)
    66936455{
    66946456    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    66966458}
    66976459
    6698 DECLCALLBACK(int) Medium::vdTcpGetLocalAddress(VDSOCKET Sock, PRTNETADDR pAddr)
     6460DECLCALLBACK(int) Medium::i_vdTcpGetLocalAddress(VDSOCKET Sock, PRTNETADDR pAddr)
    66996461{
    67006462    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    67026464}
    67036465
    6704 DECLCALLBACK(int) Medium::vdTcpGetPeerAddress(VDSOCKET Sock, PRTNETADDR pAddr)
     6466DECLCALLBACK(int) Medium::i_vdTcpGetPeerAddress(VDSOCKET Sock, PRTNETADDR pAddr)
    67056467{
    67066468    PVDSOCKETINT pSocketInt = (PVDSOCKETINT)Sock;
     
    67166478 *       other threads asynchronously waiting for it.
    67176479 */
    6718 HRESULT Medium::startThread(Medium::Task *pTask)
     6480HRESULT Medium::i_startThread(Medium::Task *pTask)
    67196481{
    67206482#ifdef VBOX_WITH_MAIN_LOCK_VALIDATION
     
    67546516 *       complete the progress object in this case.
    67556517 */
    6756 HRESULT Medium::runNow(Medium::Task *pTask)
     6518HRESULT Medium::i_runNow(Medium::Task *pTask)
    67576519{
    67586520#ifdef VBOX_WITH_MAIN_LOCK_VALIDATION
     
    67786540 * @return
    67796541 */
    6780 HRESULT Medium::taskCreateBaseHandler(Medium::CreateBaseTask &task)
     6542HRESULT Medium::i_taskCreateBaseHandler(Medium::CreateBaseTask &task)
    67816543{
    67826544    HRESULT rc = S_OK;
     
    68116573
    68126574        PVBOXHDD hdd;
    6813         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     6575        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    68146576        ComAssertRCThrow(vrc, E_FAIL);
    68156577
     
    68446606                throw setError(VBOX_E_FILE_ERROR,
    68456607                               tr("Could not create the medium storage unit '%s'%s"),
    6846                                location.c_str(), vdError(vrc).c_str());
     6608                               location.c_str(), i_vdError(vrc).c_str());
    68476609
    68486610            size = VDGetFileSize(hdd, 0);
     
    68826644
    68836645        thisLock.release();
    6884         markRegistriesModified();
     6646        i_markRegistriesModified();
    68856647        if (task.isAsync())
    68866648        {
     
    69146676 * @return
    69156677 */
    6916 HRESULT Medium::taskCreateDiffHandler(Medium::CreateDiffTask &task)
     6678HRESULT Medium::i_taskCreateDiffHandler(Medium::CreateDiffTask &task)
    69176679{
    69186680    HRESULT rcTmp = S_OK;
     
    69526714
    69536715        PVBOXHDD hdd;
    6954         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     6716        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    69556717        ComAssertRCThrow(vrc, E_FAIL);
    69566718
     
    69926754                                   tr("Could not open the medium storage unit '%s'%s"),
    69936755                                   pMedium->m->strLocationFull.c_str(),
    6994                                    vdError(vrc).c_str());
     6756                                   i_vdError(vrc).c_str());
    69956757            }
    69966758
     
    70166778                throw setError(VBOX_E_FILE_ERROR,
    70176779                                tr("Could not create the differencing medium storage unit '%s'%s"),
    7018                                 targetLocation.c_str(), vdError(vrc).c_str());
     6780                                targetLocation.c_str(), i_vdError(vrc).c_str());
    70196781
    70206782            size = VDGetFileSize(hdd, VD_LAST_IMAGE);
     
    70466808            * potential race! */
    70476809        /* diffs for immutable media are auto-reset by default */
    7048         pTarget->m->autoReset = (getBase()->m->type == MediumType_Immutable);
     6810        pTarget->m->autoReset = (i_getBase()->m->type == MediumType_Immutable);
    70496811
    70506812        /* register with mVirtualBox as the last step and move to
     
    70576819        if (FAILED(mrc))
    70586820            /* break the parent association on failure to register */
    7059             deparent();
     6821            i_deparent();
    70606822    }
    70616823
     
    70876849
    70886850    mediaLock.release();
    7089     markRegistriesModified();
     6851    i_markRegistriesModified();
    70906852    if (task.isAsync())
    70916853    {
     
    71126874 * @return
    71136875 */
    7114 HRESULT Medium::taskMergeHandler(Medium::MergeTask &task)
     6876HRESULT Medium::i_taskMergeHandler(Medium::MergeTask &task)
    71156877{
    71166878    HRESULT rcTmp = S_OK;
     
    71216883    {
    71226884        PVBOXHDD hdd;
    7123         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     6885        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    71246886        ComAssertRCThrow(vrc, E_FAIL);
    71256887
     
    72497011                             m->strLocationFull.c_str(),
    72507012                             pTarget->m->strLocationFull.c_str(),
    7251                              vdError(aVRC).c_str());
     7013                             i_vdError(aVRC).c_str());
    72527014        }
    72537015
     
    72767038            /* then, reparent it and disconnect the deleted branch at
    72777039             * both ends (chain->parent() is source's parent) */
    7278             pTarget->deparent();
     7040            pTarget->i_deparent();
    72797041            pTarget->m->pParent = task.mParentForTarget;
    72807042            if (pTarget->m->pParent)
    72817043            {
    72827044                pTarget->m->pParent->m->llChildren.push_back(pTarget);
    7283                 deparent();
     7045                i_deparent();
    72847046            }
    72857047
     
    72927054        else
    72937055        {
    7294             Assert(pTarget->getChildren().size() == 1);
    7295             Medium *targetChild = pTarget->getChildren().front();
     7056            Assert(pTarget->i_getChildren().size() == 1);
     7057            Medium *targetChild = pTarget->i_getChildren().front();
    72967058
    72977059            /* disconnect the deleted branch at the elder end */
    7298             targetChild->deparent();
     7060            targetChild->i_deparent();
    72997061
    73007062            /* reparent source's children and disconnect the deleted
     
    73147076                    AutoWriteLock childLock(pMedium COMMA_LOCKVAL_SRC_POS);
    73157077
    7316                     pMedium->deparent();  // removes pMedium from source
    7317                     pMedium->setParent(pTarget);
     7078                    pMedium->i_deparent();  // removes pMedium from source
     7079                    pMedium->i_setParent(pTarget);
    73187080                }
    73197081            }
     
    73597121            if (pMedium == this)
    73607122            {
    7361                 Assert(getChildren().size() == 0);
     7123                Assert(i_getChildren().size() == 0);
    73627124                Assert(m->backRefs.size() == 0);
    73637125                task.mMediumCaller.release();
     
    73757137    }
    73767138
    7377     markRegistriesModified();
     7139    i_markRegistriesModified();
    73787140    if (task.isAsync())
    73797141    {
     
    73977159         * don't own the merge chain, so release it in this case. */
    73987160        if (task.isAsync())
    7399             cancelMergeTo(task.mpChildrenToReparent, task.mpMediumLockList);
     7161            i_cancelMergeTo(task.mpChildrenToReparent, task.mpMediumLockList);
    74007162    }
    74017163
     
    74127174 * @return
    74137175 */
    7414 HRESULT Medium::taskCloneHandler(Medium::CloneTask &task)
     7176HRESULT Medium::i_taskCloneHandler(Medium::CloneTask &task)
    74157177{
    74167178    HRESULT rcTmp = S_OK;
     
    74477209
    74487210        PVBOXHDD hdd;
    7449         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7211        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    74507212        ComAssertRCThrow(vrc, E_FAIL);
    74517213
     
    74787240                                   tr("Could not open the medium storage unit '%s'%s"),
    74797241                                   pMedium->m->strLocationFull.c_str(),
    7480                                    vdError(vrc).c_str());
     7242                                   i_vdError(vrc).c_str());
    74817243            }
    74827244
     
    75037265
    75047266            PVBOXHDD targetHdd;
    7505             vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &targetHdd);
     7267            vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &targetHdd);
    75067268            ComAssertRCThrow(vrc, E_FAIL);
    75077269
     
    75477309                                       tr("Could not open the medium storage unit '%s'%s"),
    75487310                                       pMedium->m->strLocationFull.c_str(),
    7549                                        vdError(vrc).c_str());
     7311                                       i_vdError(vrc).c_str());
    75507312                }
    75517313
     
    75887350                    throw setError(VBOX_E_FILE_ERROR,
    75897351                                   tr("Could not create the clone medium '%s'%s"),
    7590                                    targetLocation.c_str(), vdError(vrc).c_str());
     7352                                   targetLocation.c_str(), i_vdError(vrc).c_str());
    75917353
    75927354                size = VDGetFileSize(targetHdd, VD_LAST_IMAGE);
     
    76387400            if (FAILED(mrc))
    76397401                /* break parent association on failure to register */
    7640                 pTarget->deparent();     // removes target from parent
     7402                pTarget->i_deparent();     // removes target from parent
    76417403        }
    76427404        else
     
    76807442    {
    76817443        // save the settings
    7682         markRegistriesModified();
     7444        i_markRegistriesModified();
    76837445        /* collect multiple errors */
    76847446        eik.restore();
     
    77087470 * @return
    77097471 */
    7710 HRESULT Medium::taskDeleteHandler(Medium::DeleteTask &task)
     7472HRESULT Medium::i_taskDeleteHandler(Medium::DeleteTask &task)
    77117473{
    77127474    NOREF(task);
     
    77207482
    77217483        PVBOXHDD hdd;
    7722         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7484        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    77237485        ComAssertRCThrow(vrc, E_FAIL);
    77247486
     
    77437505                throw setError(VBOX_E_FILE_ERROR,
    77447506                               tr("Could not delete the medium storage unit '%s'%s"),
    7745                                location.c_str(), vdError(vrc).c_str());
     7507                               location.c_str(), i_vdError(vrc).c_str());
    77467508
    77477509        }
     
    77747536 * @return
    77757537 */
    7776 HRESULT Medium::taskResetHandler(Medium::ResetTask &task)
     7538HRESULT Medium::i_taskResetHandler(Medium::ResetTask &task)
    77777539{
    77787540    HRESULT rc = S_OK;
     
    77927554
    77937555        PVBOXHDD hdd;
    7794         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7556        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    77957557        ComAssertRCThrow(vrc, E_FAIL);
    77967558
     
    78397601                                   tr("Could not open the medium storage unit '%s'%s"),
    78407602                                   pMedium->m->strLocationFull.c_str(),
    7841                                    vdError(vrc).c_str());
     7603                                   i_vdError(vrc).c_str());
    78427604
    78437605                /* Done when we hit the media which should be reset */
     
    78517613                throw setError(VBOX_E_FILE_ERROR,
    78527614                               tr("Could not delete the medium storage unit '%s'%s"),
    7853                                location.c_str(), vdError(vrc).c_str());
     7615                               location.c_str(), i_vdError(vrc).c_str());
    78547616
    78557617            /* next, create it again */
     
    78627624                throw setError(VBOX_E_FILE_ERROR,
    78637625                               tr("Could not open the medium storage unit '%s'%s"),
    7864                                parentLocation.c_str(), vdError(vrc).c_str());
     7626                               parentLocation.c_str(), i_vdError(vrc).c_str());
    78657627
    78667628            vrc = VDCreateDiff(hdd,
     
    78787640                throw setError(VBOX_E_FILE_ERROR,
    78797641                               tr("Could not create the differencing medium storage unit '%s'%s"),
    7880                                location.c_str(), vdError(vrc).c_str());
     7642                               location.c_str(), i_vdError(vrc).c_str());
    78817643
    78827644            size = VDGetFileSize(hdd, VD_LAST_IMAGE);
     
    79117673 * @return
    79127674 */
    7913 HRESULT Medium::taskCompactHandler(Medium::CompactTask &task)
     7675HRESULT Medium::i_taskCompactHandler(Medium::CompactTask &task)
    79147676{
    79157677    HRESULT rc = S_OK;
     
    79237685    {
    79247686        PVBOXHDD hdd;
    7925         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7687        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    79267688        ComAssertRCThrow(vrc, E_FAIL);
    79277689
     
    79627724                                   tr("Could not open the medium storage unit '%s'%s"),
    79637725                                   pMedium->m->strLocationFull.c_str(),
    7964                                    vdError(vrc).c_str());
     7726                                   i_vdError(vrc).c_str());
    79657727            }
    79667728
     
    79877749                                   tr("Could not compact medium '%s'%s"),
    79887750                                   location.c_str(),
    7989                                    vdError(vrc).c_str());
     7751                                   i_vdError(vrc).c_str());
    79907752            }
    79917753        }
     
    80087770 * @return
    80097771 */
    8010 HRESULT Medium::taskResizeHandler(Medium::ResizeTask &task)
     7772HRESULT Medium::i_taskResizeHandler(Medium::ResizeTask &task)
    80117773{
    80127774    HRESULT rc = S_OK;
     
    80217783
    80227784        PVBOXHDD hdd;
    8023         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7785        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    80247786        ComAssertRCThrow(vrc, E_FAIL);
    80257787
     
    80607822                                   tr("Could not open the medium storage unit '%s'%s"),
    80617823                                   pMedium->m->strLocationFull.c_str(),
    8062                                    vdError(vrc).c_str());
     7824                                   i_vdError(vrc).c_str());
    80637825            }
    80647826
     
    80867848                                   tr("Could not resize medium '%s'%s"),
    80877849                                   location.c_str(),
    8088                                    vdError(vrc).c_str());
     7850                                   i_vdError(vrc).c_str());
    80897851            }
    80907852            size = VDGetFileSize(hdd, VD_LAST_IMAGE);
     
    81207882 * @return
    81217883 */
    8122 HRESULT Medium::taskExportHandler(Medium::ExportTask &task)
     7884HRESULT Medium::i_taskExportHandler(Medium::ExportTask &task)
    81237885{
    81247886    HRESULT rc = S_OK;
     
    81327894
    81337895        PVBOXHDD hdd;
    8134         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     7896        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    81357897        ComAssertRCThrow(vrc, E_FAIL);
    81367898
     
    81637925                                   tr("Could not open the medium storage unit '%s'%s"),
    81647926                                   pMedium->m->strLocationFull.c_str(),
    8165                                    vdError(vrc).c_str());
     7927                                   i_vdError(vrc).c_str());
    81667928            }
    81677929
     
    81847946
    81857947            PVBOXHDD targetHdd;
    8186             vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &targetHdd);
     7948            vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &targetHdd);
    81877949            ComAssertRCThrow(vrc, E_FAIL);
    81887950
     
    82057967                    throw setError(VBOX_E_FILE_ERROR,
    82067968                                   tr("Could not create the clone medium '%s'%s"),
    8207                                    targetLocation.c_str(), vdError(vrc).c_str());
     7969                                   targetLocation.c_str(), i_vdError(vrc).c_str());
    82087970            }
    82097971            catch (HRESULT aRC) { rc = aRC; }
     
    82377999 * @return
    82388000 */
    8239 HRESULT Medium::taskImportHandler(Medium::ImportTask &task)
     8001HRESULT Medium::i_taskImportHandler(Medium::ImportTask &task)
    82408002{
    82418003    HRESULT rcTmp = S_OK;
     
    82728034
    82738035        PVBOXHDD hdd;
    8274         int vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &hdd);
     8036        int vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &hdd);
    82758037        ComAssertRCThrow(vrc, E_FAIL);
    82768038
     
    82878049                               tr("Could not open the medium storage unit '%s'%s"),
    82888050                               task.mFilename.c_str(),
    8289                                vdError(vrc).c_str());
     8051                               i_vdError(vrc).c_str());
    82908052
    82918053            Utf8Str targetFormat(m->strFormat);
     
    83108072
    83118073            PVBOXHDD targetHdd;
    8312             vrc = VDCreate(m->vdDiskIfaces, convertDeviceType(), &targetHdd);
     8074            vrc = VDCreate(m->vdDiskIfaces, i_convertDeviceType(), &targetHdd);
    83138075            ComAssertRCThrow(vrc, E_FAIL);
    83148076
     
    83548116                                       tr("Could not open the medium storage unit '%s'%s"),
    83558117                                       pMedium->m->strLocationFull.c_str(),
    8356                                        vdError(vrc).c_str());
     8118                                       i_vdError(vrc).c_str());
    83578119                }
    83588120
     
    83748136                    throw setError(VBOX_E_FILE_ERROR,
    83758137                                   tr("Could not create the clone medium '%s'%s"),
    8376                                    targetLocation.c_str(), vdError(vrc).c_str());
     8138                                   targetLocation.c_str(), i_vdError(vrc).c_str());
    83778139
    83788140                size = VDGetFileSize(targetHdd, VD_LAST_IMAGE);
     
    84238185            if (FAILED(mrc))
    84248186                /* break parent association on failure to register */
    8425                 this->deparent();     // removes target from parent
     8187                this->i_deparent();     // removes target from parent
    84268188        }
    84278189        else
     
    84628224    {
    84638225        // save the settings
    8464         markRegistriesModified();
     8226        i_markRegistriesModified();
    84658227        /* collect multiple errors */
    84668228        eik.restore();
  • trunk/src/VBox/Main/src-server/MediumLock.cpp

    r48297 r49795  
    9696    {
    9797        AutoReadLock alock(mMedium COMMA_LOCKVAL_SRC_POS);
    98         state = mMedium->getState();
     98        state = mMedium->i_getState();
    9999    }
    100100    switch (state)
  • trunk/src/VBox/Main/src-server/Performance.cpp

    r48955 r49795  
    11011101        AutoReadLock local_alock(pMedium COMMA_LOCKVAL_SRC_POS);
    11021102
    1103         used += (ULONG)(pMedium->getSize() / _1M);
     1103        used += (ULONG)(pMedium->i_getSize() / _1M);
    11041104    }
    11051105
  • trunk/src/VBox/Main/src-server/SerialPortImpl.cpp

    r49730 r49795  
    400400    AutoWriteLock alock(this COMMA_LOCKVAL_SRC_POS);
    401401
    402     if (aPath != m->bd->strPath)
    403     {
    404         HRESULT rc = i_checkSetPath(aPath);
     402    com::Utf8Str strPath = aPath;
     403
     404    /* we treat empty as null when e.g. saving to XML, do the same here */
     405    if (!strPath.isEmpty())
     406        strPath = "";
     407
     408    if (strPath != m->bd->strPath)
     409    {
     410        HRESULT rc = i_checkSetPath(strPath);
    405411        if (FAILED(rc)) return rc;
    406412
    407413        m->bd.backup();
    408         m->bd->strPath = aPath;
     414        m->bd->strPath = strPath;
    409415
    410416        m->fModified = true;
  • trunk/src/VBox/Main/src-server/SnapshotImpl.cpp

    r49687 r49795  
    10481048        if (pMedium) // can be NULL for non-harddisk
    10491049        {
    1050             rc = pMedium->addBackReference(mData->mUuid, mSnapshotId);
     1050            rc = pMedium->i_addBackReference(mData->mUuid, mSnapshotId);
    10511051            AssertComRC(rc);
    10521052        }
     
    17821782            ++ulTotalWeight;         // assume one MB weight for each differencing hard disk to manage
    17831783            Assert(pAttach->getMedium());
    1784             LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pAttach->getMedium()->getName().c_str()));
     1784            LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pAttach->getMedium()->i_getName().c_str()));
    17851785        }
    17861786    }
     
    19701970            if (    !pMedium.isNull()
    19711971                 && pAttach->getType() == DeviceType_HardDisk
    1972                  && !pMedium->getParent().isNull()
    1973                  && pMedium->getChildren().size() == 0
     1972                 && !pMedium->i_getParent().isNull()
     1973                 && pMedium->i_getChildren().size() == 0
    19741974               )
    19751975            {
    1976                 LogFlowThisFunc(("Picked differencing image '%s' for deletion\n", pMedium->getName().c_str()));
     1976                LogFlowThisFunc(("Picked differencing image '%s' for deletion\n", pMedium->i_getName().c_str()));
    19771977
    19781978                llDiffAttachmentsToDelete.push_back(pAttach);
     
    20122012            AutoWriteLock mlock(pMedium COMMA_LOCKVAL_SRC_POS);
    20132013
    2014             LogFlowThisFunc(("Detaching old current state in differencing image '%s'\n", pMedium->getName().c_str()));
     2014            LogFlowThisFunc(("Detaching old current state in differencing image '%s'\n", pMedium->i_getName().c_str()));
    20152015
    20162016            // Normally we "detach" the medium by removing the attachment object
     
    20282028                mMediaData.backedUpData()->mAttachments.remove(pAttach);
    20292029            // then clean up backrefs
    2030             pMedium->removeBackReference(mData->mUuid);
     2030            pMedium->i_removeBackReference(mData->mUuid);
    20312031
    20322032            llDiffsToDelete.push_back(pMedium);
     
    20542054        {
    20552055            ComObjPtr<Medium> &pMedium = *it;
    2056             LogFlowThisFunc(("Deleting old current state in differencing image '%s'\n", pMedium->getName().c_str()));
    2057 
    2058             HRESULT rc2 = pMedium->deleteStorage(NULL /* aProgress */,
    2059                                                  true /* aWait */);
     2056            LogFlowThisFunc(("Deleting old current state in differencing image '%s'\n", pMedium->i_getName().c_str()));
     2057
     2058            HRESULT rc2 = pMedium->i_deleteStorage(NULL /* aProgress */,
     2059                                                   true /* aWait */);
    20602060            // ignore errors here because we cannot roll back after saveSettings() above
    20612061            if (SUCCEEDED(rc2))
     
    21692169                        mUserData->s.strName.c_str(),
    21702170                        childrenCount);
     2171
    21712172    if (pSnapshot == mData->mCurrentSnapshot && childrenCount >= 1)
    21722173        return setError(VBOX_E_INVALID_OBJECT_STATE,
     
    21752176                        mUserData->s.strName.c_str());
    21762177
     2178
    21772179    /* If the snapshot being deleted is the current one, ensure current
    21782180     * settings are committed and saved.
     
    22182220            AutoReadLock mlock(pHD COMMA_LOCKVAL_SRC_POS);
    22192221
    2220             MediumType_T type = pHD->getType();
     2222            MediumType_T type = pHD->i_getType();
    22212223            // writethrough and shareable images are unaffected by snapshots,
    22222224            // so do nothing for them
     
    22272229                // normal or immutable media need attention
    22282230                ++ulOpCount;
    2229                 ulTotalWeight += (ULONG)(pHD->getSize() / _1M);
     2231                ulTotalWeight += (ULONG)(pHD->i_getSize() / _1M);
    22302232            }
    2231             LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pHD->getName().c_str()));
     2233            LogFlowThisFunc(("op %d: considering hard disk attachment %s\n", ulOpCount, pHD->i_getName().c_str()));
    22322234        }
    22332235    }
     
    24452447                // unaffected by snapshots, skip them
    24462448                AutoReadLock medlock(pHD COMMA_LOCKVAL_SRC_POS);
    2447                 MediumType_T type = pHD->getType();
     2449                MediumType_T type = pHD->i_getType();
    24482450                if (   type == MediumType_Writethrough
    24492451                    || type == MediumType_Shareable
     
    24532455
    24542456#ifdef DEBUG
    2455             pHD->dumpBackRefs();
     2457            pHD->i_dumpBackRefs();
    24562458#endif
    24572459
     
    25252527                // base disk. Here we need then to update the attachment that
    25262528                // refers to the child and have it point to the parent instead
    2527                 Assert(pHD->getChildren().size() == 1);
    2528 
    2529                 ComObjPtr<Medium> pReplaceHD = pHD->getChildren().front();
     2529                Assert(pHD->i_getChildren().size() == 1);
     2530
     2531                ComObjPtr<Medium> pReplaceHD = pHD->i_getChildren().front();
    25302532
    25312533                ComAssertThrow(pReplaceHD == pSource, E_FAIL);
     
    25352537            Guid replaceSnapshotId;
    25362538
    2537             const Guid *pReplaceMachineId = pSource->getFirstMachineBackrefId();
     2539            const Guid *pReplaceMachineId = pSource->i_getFirstMachineBackrefId();
    25382540            // minimal sanity checking
    25392541            Assert(!pReplaceMachineId || *pReplaceMachineId == mData->mUuid);
     
    25412543                replaceMachineId = *pReplaceMachineId;
    25422544
    2543             const Guid *pSnapshotId = pSource->getFirstMachineBackrefSnapshotId();
     2545            const Guid *pSnapshotId = pSource->i_getFirstMachineBackrefSnapshotId();
    25442546            if (pSnapshotId)
    25452547                replaceSnapshotId = *pSnapshotId;
     
    25512553                // with the snapshot until the merge was successful.
    25522554                HRESULT rc2 = S_OK;
    2553                 rc2 = pSource->removeBackReference(replaceMachineId, replaceSnapshotId);
     2555                rc2 = pSource->i_removeBackReference(replaceMachineId, replaceSnapshotId);
    25542556                AssertComRC(rc2);
    25552557
     
    26082610                    throw rc;
    26092611
    2610                 if(pTarget_local->isMediumFormatFile())
     2612                if(pTarget_local->i_isMediumFormatFile())
    26112613                {
    2612                     int vrc = RTFsQuerySerial(pTarget_local->getLocationFull().c_str(), &pu32Serial);
     2614                    int vrc = RTFsQuerySerial(pTarget_local->i_getLocationFull().c_str(), &pu32Serial);
    26132615                    if (RT_FAILURE(vrc))
    26142616                    {
    26152617                        rc = setError(E_FAIL,
    26162618                                      tr(" Unable to merge storage '%s'. Can't get storage UID "),
    2617                                       pTarget_local->getLocationFull().c_str());
     2619                                      pTarget_local->i_getLocationFull().c_str());
    26182620                        throw rc;
    26192621                    }
     
    26242626                    neededStorageFreeSpace.insert(std::make_pair(pu32Serial,diskSize));
    26252627                    /* linking storage UID with snapshot path, it is a helper container (just for easy finding needed path) */
    2626                     serialMapToStoragePath.insert(std::make_pair(pu32Serial,pTarget_local->getLocationFull().c_str()));
     2628                    serialMapToStoragePath.insert(std::make_pair(pu32Serial,pTarget_local->i_getLocationFull().c_str()));
    26272629                }
    26282630
     
    27292731            {
    27302732                AutoReadLock alock(pMedium COMMA_LOCKVAL_SRC_POS);
    2731                 ulWeight = (ULONG)(pMedium->getSize() / _1M);
     2733                ulWeight = (ULONG)(pMedium->i_getSize() / _1M);
    27322734            }
    27332735
    27342736            aTask.pProgress->SetNextOperation(BstrFmt(tr("Merging differencing image '%s'"),
    2735                                               pMedium->getName().c_str()).raw(),
     2737                                              pMedium->i_getName().c_str()).raw(),
    27362738                                              ulWeight);
    27372739
     
    27452747
    27462748                Assert(   !it->mfMergeForward
    2747                        || pMedium->getChildren().size() == 0);
     2749                       || pMedium->i_getChildren().size() == 0);
    27482750
    27492751                /* Delete the differencing hard disk (has no children). Two
     
    27522754                 * In both cases leave the image in place. If it's the first
    27532755                 * exception the user can delete it later if he wants. */
    2754                 if (!pMedium->getParent().isNull())
     2756                if (!pMedium->i_getParent().isNull())
    27552757                {
    2756                     Assert(pMedium->getState() == MediumState_Deleting);
     2758                    Assert(pMedium->i_getState() == MediumState_Deleting);
    27572759                    /* No need to hold the lock any longer. */
    27582760                    mLock.release();
    2759                     rc = pMedium->deleteStorage(&aTask.pProgress,
    2760                                                 true /* aWait */);
     2761                    rc = pMedium->i_deleteStorage(&aTask.pProgress,
     2762                                                  true /* aWait */);
    27612763                    if (FAILED(rc))
    27622764                        throw rc;
     
    27912793                {
    27922794                    // normal medium merge, in the direction decided earlier
    2793                     rc = it->mpSource->mergeTo(it->mpTarget,
    2794                                                it->mfMergeForward,
    2795                                                it->mpParentForTarget,
    2796                                                it->mpChildrenToReparent,
    2797                                                it->mpMediumLockList,
    2798                                                &aTask.pProgress,
    2799                                                true /* aWait */);
     2795                    rc = it->mpSource->i_mergeTo(it->mpTarget,
     2796                                                 it->mfMergeForward,
     2797                                                 it->mpParentForTarget,
     2798                                                 it->mpChildrenToReparent,
     2799                                                 it->mpMediumLockList,
     2800                                                 &aTask.pProgress,
     2801                                                 true /* aWait */);
    28002802                }
    28012803
     
    28092811                {
    28102812                    AutoReadLock mlock(it->mpSource COMMA_LOCKVAL_SRC_POS);
    2811                     if (!it->mpSource->isMediumFormatFile())
     2813                    if (!it->mpSource->i_isMediumFormatFile())
    28122814                        // Diff medium not backed by a file - cannot get status so
    28132815                        // be pessimistic.
    28142816                        throw rc;
    2815                     const Utf8Str &loc = it->mpSource->getLocationFull();
     2817                    const Utf8Str &loc = it->mpSource->i_getLocationFull();
    28162818                    // Source medium is still there, so merge failed early.
    28172819                    if (RTFileExists(loc.c_str()))
     
    28482850                pAtt = findAttachment(pSnapMachine->mMediaData->mAttachments,
    28492851                                      it->mpTarget);
    2850                 it->mpTarget->removeBackReference(machineId, snapshotId);
     2852                it->mpTarget->i_removeBackReference(machineId, snapshotId);
    28512853            }
    28522854            else
     
    28722874                    AutoWriteLock attLock(pAtt COMMA_LOCKVAL_SRC_POS);
    28732875                    pAtt->updateMedium(it->mpTarget);
    2874                     it->mpTarget->addBackReference(pMachine->mData->mUuid, childSnapshotId);
     2876                    it->mpTarget->i_addBackReference(pMachine->mData->mUuid, childSnapshotId);
    28752877                }
    28762878                else
     
    28822884                    // Needs a bit of special treatment due to this difference.
    28832885                    if (it->mfNeedsOnlineMerge)
    2884                         it->mpTarget->addBackReference(pMachine->mData->mUuid, childSnapshotId);
     2886                        it->mpTarget->i_addBackReference(pMachine->mData->mUuid, childSnapshotId);
    28852887                }
    28862888            }
     
    30213023
    30223024    // Medium must not be writethrough/shareable/readonly at this point
    3023     MediumType_T type = aHD->getType();
     3025    MediumType_T type = aHD->i_getType();
    30243026    AssertReturn(   type != MediumType_Writethrough
    30253027                 && type != MediumType_Shareable
     
    30303032    fNeedsOnlineMerge = false;
    30313033
    3032     if (aHD->getChildren().size() == 0)
     3034    if (aHD->i_getChildren().size() == 0)
    30333035    {
    30343036        /* This technically is no merge, set those values nevertheless.
     
    30383040
    30393041        /* special treatment of the last hard disk in the chain: */
    3040         if (aHD->getParent().isNull())
     3042        if (aHD->i_getParent().isNull())
    30413043        {
    30423044            /* lock only, to prevent any usage until the snapshot deletion
     
    30483050        /* the differencing hard disk w/o children will be deleted, protect it
    30493051         * from attaching to other VMs (this is why Deleting) */
    3050         return aHD->markForDeletion();
     3052        return aHD->i_markForDeletion();
    30513053   }
    30523054
    30533055    /* not going multi-merge as it's too expensive */
    3054     if (aHD->getChildren().size() > 1)
     3056    if (aHD->i_getChildren().size() > 1)
    30553057        return setError(E_FAIL,
    30563058                        tr("Hard disk '%s' has more than one child hard disk (%d)"),
    3057                         aHD->getLocationFull().c_str(),
    3058                         aHD->getChildren().size());
    3059 
    3060     ComObjPtr<Medium> pChild = aHD->getChildren().front();
     3059                        aHD->i_getLocationFull().c_str(),
     3060                        aHD->i_getChildren().size());
     3061
     3062    ComObjPtr<Medium> pChild = aHD->i_getChildren().front();
    30613063
    30623064    AutoWriteLock childLock(pChild COMMA_LOCKVAL_SRC_POS);
    30633065
    30643066    /* the rest is a normal merge setup */
    3065     if (aHD->getParent().isNull())
     3067    if (aHD->i_getParent().isNull())
    30663068    {
    30673069        /* base hard disk, backward merge */
    3068         const Guid *pMachineId1 = pChild->getFirstMachineBackrefId();
    3069         const Guid *pMachineId2 = aHD->getFirstMachineBackrefId();
     3070        const Guid *pMachineId1 = pChild->i_getFirstMachineBackrefId();
     3071        const Guid *pMachineId2 = aHD->i_getFirstMachineBackrefId();
    30703072        if (pMachineId1 && pMachineId2 && *pMachineId1 != *pMachineId2)
    30713073        {
     
    30873089        childLock.release();
    30883090        alock.release();
    3089         HRESULT rc = aHD->queryPreferredMergeDirection(pChild, fMergeForward);
     3091        HRESULT rc = aHD->i_queryPreferredMergeDirection(pChild, fMergeForward);
    30903092        alock.acquire();
    30913093        childLock.acquire();
     
    31113113    childLock.release();
    31123114    alock.release();
    3113     rc = aSource->prepareMergeTo(aTarget, &aMachineId, &aSnapshotId,
     3115    rc = aSource->i_prepareMergeTo(aTarget, &aMachineId, &aSnapshotId,
    31143116                                 !fOnlineMergePossible /* fLockMedia */,
    31153117                                 aMergeForward, aParentForTarget,
     
    32213223                if (FAILED(rc))
    32223224                {
    3223                     aSource->cancelMergeTo(aChildrenToReparent, aMediumLockList);
     3225                    aSource->i_cancelMergeTo(aChildrenToReparent, aMediumLockList);
    32243226                    rc = setError(rc,
    32253227                                  tr("Cannot lock hard disk '%s' for a live merge"),
    3226                                   aHD->getLocationFull().c_str());
     3228                                  aHD->i_getLocationFull().c_str());
    32273229                }
    32283230                else
     
    32353237            else
    32363238            {
    3237                 aSource->cancelMergeTo(aChildrenToReparent, aMediumLockList);
     3239                aSource->i_cancelMergeTo(aChildrenToReparent, aMediumLockList);
    32383240                rc = setError(rc,
    32393241                              tr("Failed to construct lock list for a live merge of hard disk '%s'"),
    3240                               aHD->getLocationFull().c_str());
     3242                              aHD->i_getLocationFull().c_str());
    32413243            }
    32423244
     
    32613263                    // blindly apply this, only needed for medium objects which
    32623264                    // would be deleted as part of the merge
    3263                     pMedium->unmarkLockedForDeletion();
     3265                    pMedium->i_unmarkLockedForDeletion();
    32643266                }
    32653267            }
     
    32683270        else
    32693271        {
    3270             aSource->cancelMergeTo(aChildrenToReparent, aMediumLockList);
     3272            aSource->i_cancelMergeTo(aChildrenToReparent, aMediumLockList);
    32713273            rc = setError(rc,
    32723274                          tr("Cannot lock hard disk '%s' for an offline merge"),
    3273                           aHD->getLocationFull().c_str());
     3275                          aHD->i_getLocationFull().c_str());
    32743276        }
    32753277    }
     
    33073309        AutoMultiWriteLock2 mLock(&mParent->getMediaTreeLockHandle(), aHD->lockHandle() COMMA_LOCKVAL_SRC_POS);
    33083310
    3309         Assert(aHD->getChildren().size() == 0);
    3310 
    3311         if (aHD->getParent().isNull())
     3311        Assert(aHD->i_getChildren().size() == 0);
     3312
     3313        if (aHD->i_getParent().isNull())
    33123314        {
    33133315            Assert(!aHDLockToken.isNull());
     
    33203322        else
    33213323        {
    3322             HRESULT rc = aHD->unmarkForDeletion();
     3324            HRESULT rc = aHD->i_unmarkForDeletion();
    33233325            AssertComRC(rc);
    33243326        }
     
    33303332            // Online merge uses the medium lock list of the VM, so give
    33313333            // an empty list to cancelMergeTo so that it works as designed.
    3332             aSource->cancelMergeTo(aChildrenToReparent, new MediumLockList());
     3334            aSource->i_cancelMergeTo(aChildrenToReparent, new MediumLockList());
    33333335
    33343336            // clean up the VM medium lock list ourselves
     
    33453347                ComObjPtr<Medium> pMedium = it->GetMedium();
    33463348                AutoWriteLock mediumLock(pMedium COMMA_LOCKVAL_SRC_POS);
    3347                 if (pMedium->getState() == MediumState_Deleting)
    3348                     pMedium->unmarkForDeletion();
     3349                if (pMedium->i_getState() == MediumState_Deleting)
     3350                    pMedium->i_unmarkForDeletion();
    33493351                else
    33503352                {
    33513353                    // blindly apply this, only needed for medium objects which
    33523354                    // would be deleted as part of the merge
    3353                     pMedium->unmarkLockedForDeletion();
     3355                    pMedium->i_unmarkLockedForDeletion();
    33543356                }
    33553357                mediumLock.release();
     
    33603362        else
    33613363        {
    3362             aSource->cancelMergeTo(aChildrenToReparent, aMediumLockList);
     3364            aSource->i_cancelMergeTo(aChildrenToReparent, aMediumLockList);
    33633365        }
    33643366    }
     
    33673369    {
    33683370        // reattach the source media to the snapshot
    3369         HRESULT rc = aSource->addBackReference(aMachineId, aSnapshotId);
     3371        HRESULT rc = aSource->i_addBackReference(aMachineId, aSnapshotId);
    33703372        AssertComRC(rc);
    33713373    }
     
    35123514        // then, reparent it and disconnect the deleted branch at
    35133515        // both ends (chain->parent() is source's parent)
    3514         pDeleteRec->mpTarget->deparent();
    3515         pDeleteRec->mpTarget->setParent(pDeleteRec->mpParentForTarget);
     3516        pDeleteRec->mpTarget->i_deparent();
     3517        pDeleteRec->mpTarget->i_setParent(pDeleteRec->mpParentForTarget);
    35163518        if (pDeleteRec->mpParentForTarget)
    3517             pDeleteRec->mpSource->deparent();
     3519            pDeleteRec->mpSource->i_deparent();
    35183520
    35193521        // then, register again
     
    35233525    else
    35243526    {
    3525         Assert(pDeleteRec->mpTarget->getChildren().size() == 1);
    3526         targetChild = pDeleteRec->mpTarget->getChildren().front();
     3527        Assert(pDeleteRec->mpTarget->i_getChildren().size() == 1);
     3528        targetChild = pDeleteRec->mpTarget->i_getChildren().front();
    35273529
    35283530        // disconnect the deleted branch at the elder end
    3529         targetChild->deparent();
     3531        targetChild->i_deparent();
    35303532
    35313533        // Update parent UUIDs of the source's children, reparent them and
     
    35403542            // need manual fixing via VBoxManage to adjust the parent UUID.
    35413543            treeLock.release();
    3542             pDeleteRec->mpTarget->fixParentUuidOfChildren(pDeleteRec->mpChildrenToReparent);
     3544            pDeleteRec->mpTarget->i_fixParentUuidOfChildren(pDeleteRec->mpChildrenToReparent);
    35433545            // The childen are still write locked, unlock them now and don't
    35443546            // rely on the destructor doing it very late.
     
    35583560                AutoWriteLock childLock(pMedium COMMA_LOCKVAL_SRC_POS);
    35593561
    3560                 pMedium->deparent();  // removes pMedium from source
    3561                 pMedium->setParent(pDeleteRec->mpTarget);
     3562                pMedium->i_deparent();  // removes pMedium from source
     3563                pMedium->i_setParent(pDeleteRec->mpTarget);
    35623564            }
    35633565        }
     
    35843586        /* The target and all images not merged (readonly) are skipped */
    35853587        if (   pMedium == pDeleteRec->mpTarget
    3586             || pMedium->getState() == MediumState_LockedRead)
     3588            || pMedium->i_getState() == MediumState_LockedRead)
    35873589        {
    35883590            ++it;
     
    36073609            if (pMedium == pDeleteRec->mpSource)
    36083610            {
    3609                 Assert(pDeleteRec->mpSource->getChildren().size() == 0);
    3610                 Assert(pDeleteRec->mpSource->getFirstMachineBackrefId() == NULL);
     3611                Assert(pDeleteRec->mpSource->i_getChildren().size() == 0);
     3612                Assert(pDeleteRec->mpSource->i_getFirstMachineBackrefId() == NULL);
    36113613            }
    36123614
  • trunk/src/VBox/Main/src-server/TokenImpl.cpp

    r48431 r49795  
    177177        if (m.fWrite)
    178178        {
    179             HRESULT rc = m.pMedium->unlockWrite(NULL);
     179            HRESULT rc = m.pMedium->i_unlockWrite(NULL);
    180180            AssertComRC(rc);
    181181        }
    182182        else
    183183        {
    184             HRESULT rc = m.pMedium->unlockRead(NULL);
     184            HRESULT rc = m.pMedium->i_unlockRead(NULL);
    185185            AssertComRC(rc);
    186186        }
  • trunk/src/VBox/Main/src-server/VirtualBoxImpl.cpp

    r49742 r49795  
    6969#endif /* VBOX_WITH_RESOURCE_USAGE_API */
    7070#include "EventImpl.h"
     71// #include "VBoxEvents.h"
    7172#ifdef VBOX_WITH_EXTPACK
    7273# include "ExtPackManagerImpl.h"
     
    22352236        int rc = decryptSetting(&strPlaintext, bstrCipher);
    22362237        if (RT_SUCCESS(rc))
    2237             pMedium->setPropertyDirect("InitiatorSecret", strPlaintext);
     2238            pMedium->i_setPropertyDirect("InitiatorSecret", strPlaintext);
    22382239        else
    22392240            return rc;
     
    24422443        {
    24432444            ComObjPtr<Medium> pMedium = *mt;
    2444             pMedium->dumpBackRefs();
     2445            pMedium->i_dumpBackRefs();
    24452446        }
    24462447    }
     
    24522453        {
    24532454            ComObjPtr<Medium> pMedium = *mt;
    2454             pMedium->dumpBackRefs();
     2455            pMedium->i_dumpBackRefs();
    24552456        }
    24562457    }
     
    35233524        AutoWriteLock mlock(pHD COMMA_LOCKVAL_SRC_POS);
    35243525
    3525         Utf8Str strLocationFull = pHD->getLocationFull();
     3526        Utf8Str strLocationFull = pHD->i_getLocationFull();
    35263527
    35273528        if (0 == RTPathCompare(strLocationFull.c_str(), strLocation.c_str()))
     
    36043605        Medium *pMedium = *it;
    36053606        AutoReadLock imageLock(pMedium COMMA_LOCKVAL_SRC_POS);
    3606         const Utf8Str &strLocationFull = pMedium->getLocationFull();
     3607        const Utf8Str &strLocationFull = pMedium->i_getLocationFull();
    36073608
    36083609        found =     (    aId
    3609                       && pMedium->getId() == *aId)
     3610                      && pMedium->i_getId() == *aId)
    36103611                 || (    !aLocation.isEmpty()
    36113612                      && RTPathCompare(location.c_str(),
     
    36133614        if (found)
    36143615        {
    3615             if (pMedium->getDeviceType() != mediumType)
     3616            if (pMedium->i_getDeviceType() != mediumType)
    36163617            {
    36173618                if (mediumType == DeviceType_DVD)
     
    39273928        AutoReadLock mlock(pMediumFound COMMA_LOCKVAL_SRC_POS);
    39283929
    3929         Utf8Str strLocFound = pMediumFound->getLocationFull();
    3930         Guid idFound = pMediumFound->getId();
     3930        Utf8Str strLocFound = pMediumFound->i_getLocationFull();
     3931        Guid idFound = pMediumFound->i_getId();
    39313932
    39323933        if (    (RTPathCompare(strLocFound.c_str(), aLocation.c_str()) == 0)
     
    40334034    {
    40344035        Medium *pMedium = *it;
    4035         pMedium->markRegistriesModified();
     4036        pMedium->i_markRegistriesModified();
    40364037    }
    40374038
     
    41064107            {
    41074108                const Data::PendingMachineRename &pmr = *it2;
    4108                 HRESULT rc = pMedium->updatePath(pmr.strConfigDirOld,
    4109                                                  pmr.strConfigDirNew);
     4109                HRESULT rc = pMedium->i_updatePath(pmr.strConfigDirOld,
     4110                                                   pmr.strConfigDirNew);
    41104111                if (SUCCEEDED(rc))
    41114112                {
     
    41784179            AutoReadLock mlock(pMedium COMMA_LOCKVAL_SRC_POS);
    41794180
    4180             if (pMedium->isInRegistry(uuidRegistry))
     4181            if (pMedium->i_isInRegistry(uuidRegistry))
    41814182            {
    41824183                settings::Medium med;
    4183                 rc = pMedium->saveSettings(med, strMachineFolder);     // this recurses into child hard disks
     4184                rc = pMedium->i_saveSettings(med, strMachineFolder);     // this recurses into child hard disks
    41844185                if (FAILED(rc)) throw rc;
    41854186                llTarget.push_back(med);
     
    44044405    {
    44054406        AutoReadLock mediumLock(pMedium COMMA_LOCKVAL_SRC_POS);
    4406         id = pMedium->getId();
    4407         strLocationFull = pMedium->getLocationFull();
    4408         pParent = pMedium->getParent();
     4407        id = pMedium->i_getId();
     4408        strLocationFull = pMedium->i_getLocationFull();
     4409        pParent = pMedium->i_getParent();
    44094410    }
    44104411
     
    44784479    {
    44794480        AutoReadLock mediumLock(pMedium COMMA_LOCKVAL_SRC_POS);
    4480         id = pMedium->getId();
    4481         pParent = pMedium->getParent();
    4482         devType = pMedium->getDeviceType();
     4481        id = pMedium->i_getId();
     4482        pParent = pMedium->i_getParent();
     4483        devType = pMedium->i_getDeviceType();
    44834484    }
    44844485
     
    45254526    // list before their parents
    45264527
    4527     const MediaList &llChildren = pMedium->getChildren();
     4528    const MediaList &llChildren = pMedium->i_getChildren();
    45284529    for (MediaList::const_iterator it = llChildren.begin();
    45294530         it != llChildren.end();
     
    45344535    }
    45354536
    4536     Log(("Pushing medium %RTuuid\n", pMedium->getId().raw()));
     4537    Log(("Pushing medium %RTuuid\n", pMedium->i_getId().raw()));
    45374538    llMedia.push_back(pMedium);
    45384539}
     
    45714572            AutoReadLock medlock(pMedium COMMA_LOCKVAL_SRC_POS);
    45724573
    4573             if (pMedium->isInRegistry(uuidMachine))
     4574            if (pMedium->i_isInRegistry(uuidMachine))
    45744575                // recursively with children first
    45754576                pushMediumToListWithChildren(llMedia2Close, pMedium);
     
    45824583    {
    45834584        ComObjPtr<Medium> pMedium = *it;
    4584         Log(("Closing medium %RTuuid\n", pMedium->getId().raw()));
     4585        Log(("Closing medium %RTuuid\n", pMedium->i_getId().raw()));
    45854586        AutoCaller mac(pMedium);
    4586         pMedium->close(mac);
     4587        pMedium->i_close(mac);
    45874588    }
    45884589
     
    46324633            AutoWriteLock mlock(pMedium COMMA_LOCKVAL_SRC_POS);
    46334634
    4634             if (pMedium->removeRegistry(id, true /* fRecurse */))
     4635            if (pMedium->i_removeRegistry(id, true /* fRecurse */))
    46354636            {
    46364637                // machine ID was found in base medium's registry list:
    46374638                // move this base image and all its children to another registry then
    46384639                // 1) first, find a better registry to add things to
    4639                 const Guid *puuidBetter = pMedium->getAnyMachineBackref();
     4640                const Guid *puuidBetter = pMedium->i_getAnyMachineBackref();
    46404641                if (puuidBetter)
    46414642                {
    46424643                    // 2) better registry found: then use that
    4643                     pMedium->addRegistry(*puuidBetter, true /* fRecurse */);
     4644                    pMedium->i_addRegistry(*puuidBetter, true /* fRecurse */);
    46444645                    // 3) and make sure the registry is saved below
    46454646                    mlock.release();
  • trunk/src/VBox/Main/src-server/xpcom/server.cpp

    r49742 r49795  
    113113NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Snapshot, ISnapshot)
    114114
    115 NS_DECL_CLASSINFO(Medium)
    116 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Medium, IMedium)
    117 
    118115NS_DECL_CLASSINFO(MediumAttachment)
    119116NS_IMPL_THREADSAFE_ISUPPORTS1_CI(MediumAttachment, IMediumAttachment)
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