VirtualBox

Changeset 16248 in vbox


Ignore:
Timestamp:
Jan 26, 2009 9:11:36 PM (16 years ago)
Author:
vboxsync
Message:

OVF: turn IAppliance::getDisks into real attribute, code cleanup, preliminary API documentation.

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

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Main/ApplianceImpl.cpp

    r16237 r16248  
    7474    uint32_t ulParent;
    7575
    76     string strHostResource;
    7776    OVFResourceType_T resourceType;
    7877    string strOtherResourceType;
    7978    string strResourceSubType;
     79
     80    string strHostResource;             // "Abstractly specifies how a device shall connect to a resource on the deployment platform.
     81                                        // Not all devices need a backing." Used with disk items, for which this references a virtual
     82                                        // disk from the Disks section.
    8083    bool fAutomaticAllocation;
    8184    bool fAutomaticDeallocation;
    82     string strConnection;           // for ethernet
    83     string strAddress;
    84     string strAddressOnParent;
    85     string strAllocationUnits;
    86     uint64_t ullVirtualQuantity;
    87     uint64_t ullReservation;
    88     uint64_t ullLimit;
    89     uint64_t ullWeight;
     85    string strConnection;               // "All Ethernet adapters that specify the same abstract network connection name within an OVF
     86                                        // package shall be deployed on the same network. The abstract network connection name shall be
     87                                        // listed in the NetworkSection at the outermost envelope level."
     88    string strAddress;                  // "Device-specific. For an Ethernet adapter, this specifies the MAC address."
     89    string strAddressOnParent;          // "For a device, this specifies its location on the controller."
     90    string strAllocationUnits;          // "Specifies the units of allocation used. For example, “byte * 2^20”."
     91    uint64_t ullVirtualQuantity;        // "Specifies the quantity of resources presented. For example, “256”."
     92    uint64_t ullReservation;            // "Specifies the minimum quantity of resources guaranteed to be available."
     93    uint64_t ullLimit;                  // "Specifies the maximum quantity of resources that will be granted."
     94    uint64_t ullWeight;                 // "Specifies a relative priority for this allocation in relation to other allocations."
     95
    9096    string strConsumerVisibility;
    9197    string strMappingBehavior;
    9298    string strPoolID;
    93     uint32_t ulBusNumber;
    94 
    95     uint32_t ulLineNumber;          // line number of <Item> element in XML source
     99    uint32_t ulBusNumber;               // seen with IDE controllers, but not listed in OVF spec
     100
     101    uint32_t ulLineNumber;              // line number of <Item> element in XML source; cached for error messages
    96102
    97103    VirtualHardwareItem()
    98         : ulInstanceID(0), fAutomaticAllocation(false), fAutomaticDeallocation(false), ullVirtualQuantity(0), ullReservation(0), ullLimit(0), ullWeight(0)
     104        : ulInstanceID(0), fAutomaticAllocation(false), fAutomaticDeallocation(false), ullVirtualQuantity(0), ullReservation(0), ullLimit(0), ullWeight(0), ulBusNumber(0), ulLineNumber(0)
    99105    {};
    100106};
     
    835841}
    836842
    837 STDMETHODIMP Appliance::GetDisks(ComSafeArrayOut(BSTR, aDisks), ULONG *cDisks)
     843STDMETHODIMP Appliance::COMGETTER(Disks)(ComSafeArrayOut(BSTR, aDisks))
    838844{
    839845    CheckComArgOutSafeArrayPointerValid(aDisks);
     
    880886    }
    881887
    882     *cDisks = (ULONG)i;
    883 
    884888    sfaDisks.detachTo(ComSafeArrayOutArg(aDisks));
    885889
     
    898902    SafeIfaceArray<IVirtualSystemDescription> sfaVSD(m->virtualSystemDescriptions);
    899903    sfaVSD.detachTo(ComSafeArrayOutArg(aVirtualSystemDescriptions));
    900 
    901     return S_OK;
    902 }
    903 
    904 STDMETHODIMP Appliance::ImportAppliance()
    905 {
    906     HRESULT rc = S_OK;
    907 
    908     list<VirtualSystem>::const_iterator it;
    909     list< ComObjPtr<VirtualSystemDescription> >::const_iterator it1;
    910     /* Iterate through all appliances */
    911     size_t i = 0;
    912     for (it = m->llVirtualSystems.begin(),
    913          it1 = m->virtualSystemDescriptions.begin();
    914          it != m->llVirtualSystems.end();
    915          ++it, ++it1, ++i)
    916     {
    917         const VirtualSystem &vs = *it;
    918         ComObjPtr<VirtualSystemDescription> vsd = (*it1);
    919 
    920         /* Guest OS type */
    921         list<VirtualSystemDescriptionEntry> vsdeOS = vsd->findByType(VirtualSystemDescriptionType_OS);
    922         Assert(vsdeOS.size() == 1);
    923         string osTypeVBox = vsdeOS.front().strFinalValue;
    924 
    925         /* Now that we know the base system get our internal defaults based on that. */
    926         IGuestOSType *osType = NULL;
    927         rc = mVirtualBox->GetGuestOSType(Bstr(Utf8Str(osTypeVBox.c_str())), &osType);
    928         ComAssertComRCThrowRC(rc);
    929 
    930         /* Create the machine */
    931         /* First get the name */
    932         list<VirtualSystemDescriptionEntry> vsdeName = vsd->findByType(VirtualSystemDescriptionType_Name);
    933         Assert(vsdeName.size() == 1);
    934         string nameVBox = vsdeName.front().strFinalValue;
    935         IMachine *newMachine = NULL;
    936         rc = mVirtualBox->CreateMachine(Bstr(nameVBox.c_str()), Bstr(osTypeVBox.c_str()),
    937                                         Bstr(), Guid(),
    938                                         &newMachine);
    939         ComAssertComRCThrowRC(rc);
    940 
    941         /* CPU count (ignored for now) */
    942         /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxCPUCount) */
    943         // list<VirtualSystemDescriptionEntry> vsdeCPU = vsd->findByType (VirtualSystemDescriptionType_CPU);
    944 
    945         /* RAM */
    946         /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxGuestRAM) */
    947         list<VirtualSystemDescriptionEntry> vsdeRAM = vsd->findByType(VirtualSystemDescriptionType_Memory);
    948         Assert(vsdeRAM.size() == 1);
    949         string memoryVBox = vsdeRAM.front().strFinalValue;
    950         uint64_t tt = RTStrToUInt64(memoryVBox.c_str()) / _1M;
    951 
    952         rc = newMachine->COMSETTER(MemorySize)(tt);
    953         ComAssertComRCThrowRC(rc);
    954 
    955         /* VRAM */
    956         /* Get the recommended VRAM for this guest OS type */
    957         /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxGuestVRAM) */
    958         ULONG vramVBox;
    959         rc = osType->COMGETTER(RecommendedVRAM)(&vramVBox);
    960         ComAssertComRCThrowRC(rc);
    961         /* Set the VRAM */
    962         rc = newMachine->COMSETTER(VRAMSize)(vramVBox);
    963         ComAssertComRCThrowRC(rc);
    964 
    965         /* Change the network adapters */
    966         list<VirtualSystemDescriptionEntry> vsdeNW = vsd->findByType(VirtualSystemDescriptionType_NetworkAdapter);
    967         if (vsdeNW.size() == 0)
    968         {
    969             /* No network adapters, so we have to disable our default one */
    970             INetworkAdapter *nwVBox = NULL;
    971             rc = newMachine->GetNetworkAdapter(0, &nwVBox);
    972             ComAssertComRCThrowRC(rc);
    973             rc = nwVBox->COMSETTER(Enabled)(false);
    974             ComAssertComRCThrowRC(rc);
    975         }
    976         else
    977         {
    978             list<VirtualSystemDescriptionEntry>::const_iterator nwIt;
    979             /* Iterate through all network cards. We support 8 network adapters
    980              * at the maximum. (@todo: warn if it are more!) */
    981             size_t a = 0;
    982             for (nwIt = vsdeNW.begin();
    983                  (nwIt != vsdeNW.end() && a < SchemaDefs::NetworkAdapterCount);
    984                  ++nwIt, ++a)
    985             {
    986                 string nwTypeVBox = nwIt->strFinalValue;
    987                 uint32_t tt1 = RTStrToUInt32(nwTypeVBox.c_str());
    988                 INetworkAdapter *nwVBox = NULL;
    989                 rc = newMachine->GetNetworkAdapter((ULONG)a, &nwVBox);
    990                 ComAssertComRCThrowRC(rc);
    991                 /* Enable the network card & set the adapter type */
    992                 /* NAT is set as default */
    993                 rc = nwVBox->COMSETTER(Enabled)(true);
    994                 ComAssertComRCThrowRC(rc);
    995                 rc = nwVBox->COMSETTER(AdapterType)(static_cast<NetworkAdapterType_T>(tt1));
    996                 ComAssertComRCThrowRC(rc);
    997             }
    998         }
    999         /* Now its time to register the machine before we add any hard disks */
    1000         rc = mVirtualBox->RegisterMachine(newMachine);
    1001         ComAssertComRCThrowRC(rc);
    1002 
    1003         /* @todo: Unregister on failure */
    1004 #if 0
    1005         vbox.UnregisterMachine (machineId);
    1006         if (vbox.isOk())
    1007             mMachine.DeleteSettings();
    1008         return false;
    1009 #endif
    1010     }
    1011904
    1012905    return S_OK;
     
    13721265}
    13731266
     1267STDMETHODIMP Appliance::ImportAppliance()
     1268{
     1269    HRESULT rc = S_OK;
     1270
     1271    list<VirtualSystem>::const_iterator it;
     1272    list< ComObjPtr<VirtualSystemDescription> >::const_iterator it1;
     1273    /* Iterate through all appliances */
     1274    size_t i = 0;
     1275    for (it = m->llVirtualSystems.begin(),
     1276         it1 = m->virtualSystemDescriptions.begin();
     1277         it != m->llVirtualSystems.end();
     1278         ++it, ++it1, ++i)
     1279    {
     1280        const VirtualSystem &vs = *it;
     1281        ComObjPtr<VirtualSystemDescription> vsd = (*it1);
     1282
     1283        /* Guest OS type */
     1284        list<VirtualSystemDescriptionEntry> vsdeOS = vsd->findByType(VirtualSystemDescriptionType_OS);
     1285        Assert(vsdeOS.size() == 1);
     1286        string osTypeVBox = vsdeOS.front().strFinalValue;
     1287
     1288        /* Now that we know the base system get our internal defaults based on that. */
     1289        IGuestOSType *osType = NULL;
     1290        rc = mVirtualBox->GetGuestOSType(Bstr(Utf8Str(osTypeVBox.c_str())), &osType);
     1291        ComAssertComRCThrowRC(rc);
     1292
     1293        /* Create the machine */
     1294        /* First get the name */
     1295        list<VirtualSystemDescriptionEntry> vsdeName = vsd->findByType(VirtualSystemDescriptionType_Name);
     1296        Assert(vsdeName.size() == 1);
     1297        string nameVBox = vsdeName.front().strFinalValue;
     1298        IMachine *newMachine = NULL;
     1299        rc = mVirtualBox->CreateMachine(Bstr(nameVBox.c_str()), Bstr(osTypeVBox.c_str()),
     1300                                        Bstr(), Guid(),
     1301                                        &newMachine);
     1302        ComAssertComRCThrowRC(rc);
     1303
     1304        /* CPU count (ignored for now) */
     1305        /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxCPUCount) */
     1306        // list<VirtualSystemDescriptionEntry> vsdeCPU = vsd->findByType (VirtualSystemDescriptionType_CPU);
     1307
     1308        /* RAM */
     1309        /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxGuestRAM) */
     1310        list<VirtualSystemDescriptionEntry> vsdeRAM = vsd->findByType(VirtualSystemDescriptionType_Memory);
     1311        Assert(vsdeRAM.size() == 1);
     1312        string memoryVBox = vsdeRAM.front().strFinalValue;
     1313        uint64_t tt = RTStrToUInt64(memoryVBox.c_str()) / _1M;
     1314
     1315        rc = newMachine->COMSETTER(MemorySize)(tt);
     1316        ComAssertComRCThrowRC(rc);
     1317
     1318        /* VRAM */
     1319        /* Get the recommended VRAM for this guest OS type */
     1320        /* @todo: check min/max requirements of VBox (SchemaDefs::Min/MaxGuestVRAM) */
     1321        ULONG vramVBox;
     1322        rc = osType->COMGETTER(RecommendedVRAM)(&vramVBox);
     1323        ComAssertComRCThrowRC(rc);
     1324        /* Set the VRAM */
     1325        rc = newMachine->COMSETTER(VRAMSize)(vramVBox);
     1326        ComAssertComRCThrowRC(rc);
     1327
     1328        /* Change the network adapters */
     1329        list<VirtualSystemDescriptionEntry> vsdeNW = vsd->findByType(VirtualSystemDescriptionType_NetworkAdapter);
     1330        if (vsdeNW.size() == 0)
     1331        {
     1332            /* No network adapters, so we have to disable our default one */
     1333            INetworkAdapter *nwVBox = NULL;
     1334            rc = newMachine->GetNetworkAdapter(0, &nwVBox);
     1335            ComAssertComRCThrowRC(rc);
     1336            rc = nwVBox->COMSETTER(Enabled)(false);
     1337            ComAssertComRCThrowRC(rc);
     1338        }
     1339        else
     1340        {
     1341            list<VirtualSystemDescriptionEntry>::const_iterator nwIt;
     1342            /* Iterate through all network cards. We support 8 network adapters
     1343             * at the maximum. (@todo: warn if it are more!) */
     1344            size_t a = 0;
     1345            for (nwIt = vsdeNW.begin();
     1346                 (nwIt != vsdeNW.end() && a < SchemaDefs::NetworkAdapterCount);
     1347                 ++nwIt, ++a)
     1348            {
     1349                string nwTypeVBox = nwIt->strFinalValue;
     1350                uint32_t tt1 = RTStrToUInt32(nwTypeVBox.c_str());
     1351                INetworkAdapter *nwVBox = NULL;
     1352                rc = newMachine->GetNetworkAdapter((ULONG)a, &nwVBox);
     1353                ComAssertComRCThrowRC(rc);
     1354                /* Enable the network card & set the adapter type */
     1355                /* NAT is set as default */
     1356                rc = nwVBox->COMSETTER(Enabled)(true);
     1357                ComAssertComRCThrowRC(rc);
     1358                rc = nwVBox->COMSETTER(AdapterType)(static_cast<NetworkAdapterType_T>(tt1));
     1359                ComAssertComRCThrowRC(rc);
     1360            }
     1361        }
     1362        /* Now its time to register the machine before we add any hard disks */
     1363        rc = mVirtualBox->RegisterMachine(newMachine);
     1364        ComAssertComRCThrowRC(rc);
     1365
     1366        /* @todo: Unregister on failure */
     1367#if 0
     1368        vbox.UnregisterMachine (machineId);
     1369        if (vbox.isOk())
     1370            mMachine.DeleteSettings();
     1371        return false;
     1372#endif
     1373    }
     1374
     1375    return S_OK;
     1376}
     1377
    13741378HRESULT Appliance::searchUniqueVMName(std::string& aName)
    13751379{
  • trunk/src/VBox/Main/idl/VirtualBox.xidl

    r16238 r16248  
    28822882        <link to="IVirtualBox::openAppliance" />.
    28832883
    2884         Opening an appliance is a three-step process with VirtualBox: first
    2885         <link to="IVirtualBox::openAppliance" /> is called, which succeeds if the
    2886         appliance file is syntactically valid, irrespective of whether VirtualBox
    2887         can handle the appliance.
    2888 
    2889         As a second step, the caller should then invoke <link to="IAppliance::interpret" />,
    2890         which analyzes the OVF data and sets up the contents of the IAppliance attributes
    2891         accordingly. These can be inspected by a VirtualBox front-end such as the GUI,
    2892         and the suggestions can be displayed to the user. For example, the virtual system
    2893         will contain the virtual hardware prescribed by the OVF (network and hardware
    2894         adapters, virtual disk images, memory size and so on), and the GUI can then give
    2895         the user the option to confirm and/or change these suggestions.
    2896 
    2897         As a third step, the caller should invoke <link to="#Import" />, which will create
    2898         virtual machines in VirtualBox as instances of <link to="IMachine" /> that match the
    2899         information in the virtual system descriptions.
     2884        Importing an OVF appliance into VirtualBox is a three-step process:
     2885
     2886        <ol>
     2887          <li>
     2888          Call <link to="IVirtualBox::openAppliance" /> with the full path of the OVF
     2889          file. So long as the appliance file is syntactically valid, this will succeed
     2890          and return an instance of IAppliance that contains the parsed data from the
     2891          OVF file.
     2892          </li>
     2893
     2894          <li>The caller should then invoke <link to="#interpret" />, which
     2895          analyzes the OVF data and sets up the contents of the IAppliance attributes
     2896          accordingly. These can be inspected by a VirtualBox front-end such as the GUI,
     2897          and the suggestions can be displayed to the user. For example, the virtual system
     2898          will contain the virtual hardware prescribed by the OVF (network and hardware
     2899          adapters, virtual disk images, memory size and so on), and the GUI can then give
     2900          the user the option to confirm and/or change these suggestions.
     2901          </li>
     2902
     2903          <li>Finally, the caller should invoke <link to="#importAppliance" />, which will
     2904          create virtual machines in VirtualBox as instances of <link to="IMachine" /> that
     2905          match the information in the virtual system descriptions.
     2906          </li>
     2907        </ol>
     2908
    29002909    </desc>
    29012910
     
    29052914    </attribute>
    29062915
    2907     <attribute name="virtualSystemDescriptions" type="IVirtualSystemDescription" readonly="yes" safearray="yes">
    2908       <desc>
    2909       Array of virtual system descriptions. One such description gets created by
    2910       <link to="#interpret" /> for each virtual system found in the OVF.
    2911       </desc>
    2912     </attribute>
    2913 
    2914     <method name="interpret">
    2915       <desc>
    2916         Interprets the OVF data that was read when the appliance was constructed. After
    2917         calling this method, one can call
    2918         <link to="#getDisks" /> to retrieve disk information and also inspect the
    2919         <link to="#virtualSystemDescriptions" /> array attribute, which will then contain
    2920         one <link to="IVirtualSystemDescription" /> for each virtual machine found in
    2921         the appliance.
    2922       </desc>
    2923     </method>
    2924 
    2925     <method name="getDisks">
    2926       <desc>
    2927         Returns disk information from the appliance specification in a string
    2928         array. Each array item represents one piece of disk information, with the
    2929         information fields separated by tab (\t) characters.
     2916    <attribute name="disks" type="wstring" readonly="yes" safearray="yes">
     2917      <desc>
     2918        Array of virtual disk definitions. One such description exists for each
     2919        disk definition in the OVF; each string array item represents one such piece of
     2920        disk information, with the information fields separated by tab (\t) characters.
    29302921
    29312922        The caller should be prepared for additional fields being appended to
     
    29522943            <li>Compression (optional string equalling "gzip" if the image is gzip-compressed)</li>
    29532944        </ol>
    2954 
    2955       </desc>
    2956 
    2957       <param name="aDisks" type="wstring" dir="out" safearray="yes">
    2958         <desc>Array of strings to receive disk information.</desc>
    2959       </param>
    2960 
    2961       <param name="cDisks" type="unsigned long" dir="return">
    2962         <desc>Count of array items returned in aDisks.</desc>
    2963       </param>
     2945      </desc>
     2946    </attribute>
     2947
     2948    <attribute name="virtualSystemDescriptions" type="IVirtualSystemDescription" readonly="yes" safearray="yes">
     2949      <desc>
     2950      Array of virtual system descriptions. One such description is created
     2951      for each virtual system found in the OVF. The array is empty until after <link to="#interpret" />
     2952      has been called.
     2953      </desc>
     2954    </attribute>
     2955
     2956    <method name="interpret">
     2957      <desc>
     2958        Interprets the OVF data that was read when the appliance was constructed. After
     2959        calling this method, one can inspect the
     2960        <link to="#virtualSystemDescriptions" /> array attribute, which will then contain
     2961        one <link to="IVirtualSystemDescription" /> for each virtual machine found in
     2962        the appliance.
     2963
     2964        Calling this method is the second step of importing an appliance into VirtualBox;
     2965        see <link to="IAppliance" /> for an overview.
     2966      </desc>
    29642967    </method>
    29652968
    29662969    <method name="importAppliance">
     2970      <desc>
     2971        Imports the appliance into VirtualBox by creating instances of <link to="IMachine" />
     2972        and other interfaces that match the information contained in the appliance as
     2973        closely as possible, as represented by the import instructions in the
     2974        <link to="#virtualSystemDescriptions" /> array.
     2975
     2976        Calling this method is the final step of importing an appliance into VirtualBox;
     2977        see <link to="IAppliance" /> for an overview.
     2978      </desc>
    29672979    </method>
    29682980
     
    29732985    uuid="36209b5a-8f96-44de-a0af-1bb037cef324"
    29742986  >
    2975     <desc>
    2976     </desc>
     2987    <desc>Used with <link to="IVirtualSystemDescription" /> to describe the type of
     2988    a configuration value.</desc>
    29772989
    29782990    <const name="Name" value="1" />
     
    29943006     >
    29953007
     3008    <desc>This interface is used in the <link to="IAppliance::virtualSystemDescriptions" /> array.
     3009    After <link to="IAppliance::interpret" /> has been called, that array contains
     3010    information about how the virtual systems described in the OVF should best be imported into VirtualBox
     3011    virtual machines. See <link to="IAppliance" /> for the steps required to import an OVF
     3012    into VirtualBox.
     3013    </desc>
     3014
    29963015    <method name="getDescription">
    2997       <desc></desc>
     3016      <desc>Returns information about the virtual system as arrays of instruction items. In each array, the
     3017      items with the same indices correspond and jointly represent an import instruction for VirtualBox.
     3018
     3019      The list below identifies the value sets that are possible depending on the
     3020      <link to="VirtualSystemDescriptionType" /> enum value in the array item in aTypes[]. In each case,
     3021      the array item with the same index in aOrigValues[] will contain the original value as contained
     3022      in the OVF file, and the corresponding item in aAutoValues[] will contain a suggested value to
     3023      be used for VirtualBox. Items in the other arrays will be empty, unless specified otherwise below:
     3024
     3025      <ul>
     3026      <li>
     3027        "OS": then the corresponding item in aAutoValues[] contains the suggested guest operating system
     3028        for VirtualBox. The corresponding item in aOrigValues[] will contain a numerical value that
     3029        described the operating system in the OVF (see <link to="CIMOSType" />).
     3030      </li>
     3031      <li>
     3032        "Name": then the correponding item im aOrigValues[] will contain the suggested virtual machine name
     3033        from the OVF file, and aAutoValues[] will contain a suggestion for a unique VirtualBox
     3034        <link to="IMachine" /> name that does not exist yet.
     3035      </li>
     3036      <li>
     3037        "CPU": number of CPUs.
     3038      </li>
     3039      <li>
     3040        "Memory": amount of memory, in bytes.
     3041      </li>
     3042      <li>
     3043        "HarddiskControllerSCSI": a SCSI hard disk controller. Here the items in aOrigValues[] and aAutoValues[] will either be
     3044        "LsiLogic" or "BusLogic". The matching item in the aRefValue[] array will contain a numerical
     3045        index that other items of the "Harddisk" type can use to specify which hard disk controller
     3046        a virtual disk should be connected to.
     3047      </li>
     3048      <li>
     3049        "HarddiskControllerIDE": an IDE hard disk controller. This has no value in aOrigValues[] or aAutoValues[];
     3050        as with SCSI controllers, the matching item in the aRefValues[] array will contain a numerical
     3051        index that other items of the "Harddisk" type can use to specify which hard disk controller
     3052        a virtual disk should be connected to.
     3053      </li>
     3054      <li>
     3055        "Harddisk": a virtual hard disk, most probably as a reference to an image file. The array item
     3056        in aOrigValues[] will contain the file specification from the OVF file, whereas the item
     3057        in aAutoValues[] will contain the fully qualified path to the image, which VirtualBox has verified
     3058        to exist.
     3059        The item in the aRefValues[] array specifies the hard disk controller to connect to and has the
     3060        same value as another aRefValues[] array item of the types listed above.
     3061      </li>
     3062      <li>
     3063        "NetworkAdapter": a network adapter. (todo document)
     3064      </li>
     3065      </ul>
     3066
     3067      </desc>
    29983068
    29993069      <param name="aTypes" type="VirtualSystemDescriptionType" dir="out" safearray="yes">
  • trunk/src/VBox/Main/include/ApplianceImpl.h

    r16237 r16248  
    6565    /* IAppliance properties */
    6666    STDMETHOD(COMGETTER(Path))(BSTR *aPath);
    67 
    68     STDMETHOD(COMGETTER(VirtualSystemDescriptions))(ComSafeArrayOut (IVirtualSystemDescription*, aVirtualSystemDescriptions));
     67    STDMETHOD(COMGETTER(Disks))(ComSafeArrayOut(BSTR, aDisks));
     68    STDMETHOD(COMGETTER(VirtualSystemDescriptions))(ComSafeArrayOut(IVirtualSystemDescription*, aVirtualSystemDescriptions));
    6969
    7070    /* IAppliance methods */
    7171    /* void interpret (); */
    7272    STDMETHOD(Interpret)(void);
    73 
    74     /* void getDisks (out unsigned long aDisksSize, [array, size_is (aDisksSize)] out wstring aDisks, [retval] out unsigned long cDisks); */
    75     STDMETHOD(GetDisks)(ComSafeArrayOut(BSTR, aDisks), ULONG *cDisks);
    7673
    7774    /* public methods only for internal purposes */
     
    142139
    143140    /* IVirtualSystemDescription methods */
    144     STDMETHOD(GetDescription) (ComSafeArrayOut(VirtualSystemDescriptionType_T, aTypes),
    145                                ComSafeArrayOut(ULONG, aRefs),
    146                                ComSafeArrayOut(BSTR, aOrigValues),
    147                                ComSafeArrayOut(BSTR, aAutoValues),
    148                                ComSafeArrayOut(BSTR, aConfigurations));
    149     STDMETHOD(SetFinalValues) (ComSafeArrayIn (IN_BSTR, aFinalValues));
     141    STDMETHOD(GetDescription)(ComSafeArrayOut(VirtualSystemDescriptionType_T, aTypes),
     142                              ComSafeArrayOut(ULONG, aRefs),
     143                              ComSafeArrayOut(BSTR, aOrigValues),
     144                              ComSafeArrayOut(BSTR, aAutoValues),
     145                              ComSafeArrayOut(BSTR, aConfigurations));
     146    STDMETHOD(SetFinalValues)(ComSafeArrayIn(IN_BSTR, aFinalValues));
    150147
    151148    /* public methods only for internal purposes */
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