VirtualBox

Changeset 37695 in vbox


Ignore:
Timestamp:
Jun 29, 2011 6:53:37 PM (14 years ago)
Author:
vboxsync
Message:

Main/MediumAttachment+Machine: maintain a flag whether the medium was ejected, and add a method to query this information

Location:
trunk/src/VBox
Files:
5 edited

Legend:

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

    r37671 r37695  
    773773            for (ULONG k = 0; k < cDevices; ++ k)
    774774            {
     775                ComPtr<IMediumAttachment> mediumAttach;
     776                machine->GetMediumAttachment(storageCtlName.raw(),
     777                                             i, k,
     778                                             mediumAttach.asOutParam());
     779                BOOL fIsEjected = FALSE;
     780                DeviceType_T devType = DeviceType_Null;
     781                if (mediumAttach)
     782                {
     783                    mediumAttach->COMGETTER(IsEjected)(&fIsEjected);
     784                    mediumAttach->COMGETTER(Type)(&devType);
     785                }
    775786                rc = machine->GetMedium(storageCtlName.raw(), i, k,
    776787                                        medium.asOutParam());
    777788                if (SUCCEEDED(rc) && medium)
    778789                {
    779                     BOOL fPassthrough;
    780                     ComPtr<IMediumAttachment> mediumAttach;
    781 
    782                     rc = machine->GetMediumAttachment(storageCtlName.raw(),
    783                                                       i, k,
    784                                                       mediumAttach.asOutParam());
    785                     if (SUCCEEDED(rc) && mediumAttach)
     790                    BOOL fPassthrough = FALSE;
     791
     792                    if (mediumAttach)
    786793                        mediumAttach->COMGETTER(Passthrough)(&fPassthrough);
    787794
     
    798805                            RTPrintf("\"%lS-dvdpassthrough\"=\"%s\"\n", storageCtlName.raw(),
    799806                                     fPassthrough ? "on" : "off");
     807                        if (devType == DeviceType_DVD)
     808                            RTPrintf("\"%lS-IsEjected\"=\"%s\"\n", storageCtlName.raw(),
     809                                     fIsEjected ? "on" : "off");
    800810                    }
    801811                    else
     
    806816                        if (fPassthrough)
    807817                            RTPrintf(" (passthrough enabled)");
     818                        if (fIsEjected)
     819                            RTPrintf(" (ejected)");
    808820                        RTPrintf("\n");
    809821                    }
     
    812824                {
    813825                    if (details == VMINFO_MACHINEREADABLE)
     826                    {
    814827                        RTPrintf("\"%lS-%d-%d\"=\"emptydrive\"\n", storageCtlName.raw(), i, k);
    815                     else
    816                         RTPrintf("%lS (%d, %d): Empty\n", storageCtlName.raw(), i, k);
     828                        if (devType == DeviceType_DVD)
     829                            RTPrintf("\"%lS-IsEjected\"=\"%s\"\n", storageCtlName.raw(),
     830                                     fIsEjected ? "on" : "off");
     831                    }
     832                    else
     833                    {
     834                        RTPrintf("%lS (%d, %d): Empty", storageCtlName.raw(), i, k);
     835                        if (fIsEjected)
     836                            RTPrintf(" (ejected)");
     837                        RTPrintf("\n");
     838                    }
    817839                }
    818840                else
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r37687 r37695  
    95729572  <interface
    95739573    name="IMediumAttachment" extends="$unknown"
    9574     uuid="aa4b4840-934f-454d-9a28-23e8f4235edf"
     9574    uuid="8d48f68f-807a-4e4e-9449-827fe9ea8498"
    95759575    wsmap="struct"
    95769576    >
     
    97839783    <attribute name="passthrough" type="boolean" readonly="yes">
    97849784      <desc>Pass I/O requests through to a device on the host.</desc>
     9785    </attribute>
     9786
     9787    <attribute name="isEjected" type="boolean" readonly="yes">
     9788      <desc>Signals that the removable medium has been ejected. This is not
     9789        necessarily equivalent to having a @c null medium association.</desc>
    97859790    </attribute>
    97869791
  • trunk/src/VBox/Main/include/MediumAttachmentImpl.h

    r36181 r37695  
    55
    66/*
    7  * Copyright (C) 2006-2009 Oracle Corporation
     7 * Copyright (C) 2006-2011 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    6161    STDMETHOD(COMGETTER(Type))(DeviceType_T *aType);
    6262    STDMETHOD(COMGETTER(Passthrough))(BOOL *aPassthrough);
     63    STDMETHOD(COMGETTER(IsEjected))(BOOL *aIsEjected);
    6364    STDMETHOD(COMGETTER(BandwidthGroup))(IBandwidthGroup **aBwGroup);
    6465
     
    8990
    9091    /** Must be called from under this object's write lock. */
     92    void updateEjected();
     93
     94    /** Must be called from under this object's write lock. */
    9195    void updateBandwidthGroup(const Utf8Str &aBandwidthGroup);
    9296
  • trunk/src/VBox/Main/src-server/MachineImpl.cpp

    r37687 r37695  
    1169111691
    1169211692        pAttach->updateMedium(NULL);
     11693        pAttach->updateEjected();
    1169311694
    1169411695        pAttach.queryInterfaceTo(aNewAttachment);
  • trunk/src/VBox/Main/src-server/MediumAttachmentImpl.cpp

    r36181 r37695  
    55
    66/*
    7  * Copyright (C) 2006-2009 Oracle Corporation
     7 * Copyright (C) 2006-2011 Oracle Corporation
    88 *
    99 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    6262{
    6363    Data()
    64         : pMachine(NULL)
     64        : pMachine(NULL),
     65          fIsEjected(false)
    6566    { }
    6667
     
    6869    Machine * const pMachine;
    6970    /* later: const ComObjPtr<MediumAttachment> mPeer; */
     71
     72    bool                fIsEjected;
    7073
    7174    Backupable<BackupableMediumAttachmentData> bd;
     
    279282}
    280283
     284STDMETHODIMP MediumAttachment::COMGETTER(IsEjected)(BOOL *aEjected)
     285{
     286    LogFlowThisFuncEnter();
     287
     288    CheckComArgOutPointerValid(aEjected);
     289
     290    AutoCaller autoCaller(this);
     291    if (FAILED(autoCaller.rc())) return autoCaller.rc();
     292
     293    AutoReadLock lock(this COMMA_LOCKVAL_SRC_POS);
     294
     295    *aEjected = m->fIsEjected;
     296
     297    LogFlowThisFuncLeave();
     298    return S_OK;
     299}
     300
    281301STDMETHODIMP MediumAttachment::COMGETTER(BandwidthGroup) (IBandwidthGroup **aBwGroup)
    282302{
     
    406426    m->bd->pMedium = aMedium;
    407427    m->bd->fImplicit = false;
     428    m->fIsEjected = false;
    408429}
    409430
     
    417438}
    418439
     440/** Must be called from under this object's write lock. */
     441void MediumAttachment::updateEjected()
     442{
     443    Assert(isWriteLockOnCurrentThread());
     444
     445    m->fIsEjected = true;
     446}
     447
    419448void MediumAttachment::updateBandwidthGroup(const Utf8Str &aBandwidthGroup)
    420449{
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