VBoxManageList.cpp revision 0e8c50543ddbb0f538ed7b2ff4f08208291509bf
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync/* $Id$ */
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync/** @file
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * VBoxManage - The 'list' command.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync */
2f14f4556ae74ad40719bc9690534693abb71868vboxsync
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync/*
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * Copyright (C) 2006-2009 Sun Microsystems, Inc.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync *
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * available from http://www.virtualbox.org. This file is free software;
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * you can redistribute it and/or modify it under the terms of the GNU
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * General Public License (GPL) as published by the Free Software
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
94872a0e88ab4f38c786fcf617ddeb4b63a76957vboxsync *
78a072e1b56619e3230735ae073668311232ec94vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
78a072e1b56619e3230735ae073668311232ec94vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
78a072e1b56619e3230735ae073668311232ec94vboxsync * additional information or have any questions.
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync#ifndef VBOX_ONLY_DOCS
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync/*******************************************************************************
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync* Header Files *
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync*******************************************************************************/
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync#include <VBox/com/com.h>
78a072e1b56619e3230735ae073668311232ec94vboxsync#include <VBox/com/string.h>
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync#include <VBox/com/Guid.h>
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync#include <VBox/com/array.h>
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync#include <VBox/com/ErrorInfo.h>
78a072e1b56619e3230735ae073668311232ec94vboxsync#include <VBox/com/errorprint2.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync#include <VBox/com/VirtualBox.h>
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include <VBox/log.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include <iprt/stream.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include <iprt/string.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include <iprt/time.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include <iprt/getopt.h>
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#include "VBoxManage.h"
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncusing namespace com;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#ifdef VBOX_WITH_HOSTNETIF_API
78a072e1b56619e3230735ae073668311232ec94vboxsyncstatic const char *getHostIfMediumTypeText(HostNetworkInterfaceMediumType_T enmType)
d5d45608052fd506e4114bf112df6efae7fcd8a7vboxsync{
9be72bf71509dd721ffa1df70ead200abf30afd8vboxsync switch (enmType)
e7184fff6d89903aed623860629a05047960ac2dvboxsync {
e7184fff6d89903aed623860629a05047960ac2dvboxsync case HostNetworkInterfaceMediumType_Ethernet: return "Ethernet";
e7184fff6d89903aed623860629a05047960ac2dvboxsync case HostNetworkInterfaceMediumType_PPP: return "PPP";
78a072e1b56619e3230735ae073668311232ec94vboxsync case HostNetworkInterfaceMediumType_SLIP: return "SLIP";
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync return "Unknown";
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncstatic const char *getHostIfStatusText(HostNetworkInterfaceStatus_T enmStatus)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync{
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync switch (enmStatus)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync case HostNetworkInterfaceStatus_Up: return "Up";
78a072e1b56619e3230735ae073668311232ec94vboxsync case HostNetworkInterfaceStatus_Down: return "Down";
78a072e1b56619e3230735ae073668311232ec94vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync return "Unknown";
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync}
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync#endif
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsyncenum enOptionCodes
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync{
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync LISTVMS = 1000,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTRUNNINGVMS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTOSTYPES,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHOSTDVDS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHOSTFLOPPIES,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTBRIDGEDIFS,
78a072e1b56619e3230735ae073668311232ec94vboxsync#if (defined(RT_OS_WINDOWS) && defined(VBOX_WITH_NETFLT))
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHOSTONLYIFS,
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHOSTINFO,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHDDBACKENDS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTHDDS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTDVDS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTFLOPPIES,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTUSBHOST,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTUSBFILTERS,
78a072e1b56619e3230735ae073668311232ec94vboxsync LISTSYSTEMPROPERTIES
78a072e1b56619e3230735ae073668311232ec94vboxsync};
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsyncstatic const RTGETOPTDEF g_aListOptions[]
78a072e1b56619e3230735ae073668311232ec94vboxsync = {
78a072e1b56619e3230735ae073668311232ec94vboxsync { "--long", 'l', RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "vms", LISTVMS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "runningvms", LISTRUNNINGVMS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "ostypes", LISTOSTYPES, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hostdvds", LISTHOSTDVDS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hostfloppies", LISTHOSTFLOPPIES, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hostifs", LISTBRIDGEDIFS, RTGETOPT_REQ_NOTHING }, /* backward compatibility */
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "bridgedifs", LISTBRIDGEDIFS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync #if (defined(RT_OS_WINDOWS) && defined(VBOX_WITH_NETFLT))
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hostonlyifs", LISTHOSTONLYIFS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync#endif
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hostinfo", LISTHOSTINFO, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hddbackends", LISTHDDBACKENDS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "hdds", LISTHDDS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "dvds", LISTDVDS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "floppies", LISTFLOPPIES, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "usbhost", LISTUSBHOST, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "usbfilters", LISTUSBFILTERS, RTGETOPT_REQ_NOTHING },
08c4185261c17943cff6cc94522579696eeeb478vboxsync { "systemproperties", LISTSYSTEMPROPERTIES, RTGETOPT_REQ_NOTHING }
08c4185261c17943cff6cc94522579696eeeb478vboxsync };
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsyncint handleList(HandlerArg *a)
08c4185261c17943cff6cc94522579696eeeb478vboxsync{
08c4185261c17943cff6cc94522579696eeeb478vboxsync HRESULT rc = S_OK;
78a072e1b56619e3230735ae073668311232ec94vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync bool fOptLong = false;
08c4185261c17943cff6cc94522579696eeeb478vboxsync
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync int command = 0;
08c4185261c17943cff6cc94522579696eeeb478vboxsync int c;
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync RTGETOPTUNION ValueUnion;
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync RTGETOPTSTATE GetState;
08c4185261c17943cff6cc94522579696eeeb478vboxsync RTGetOptInit(&GetState, a->argc, a->argv, g_aListOptions, RT_ELEMENTS(g_aListOptions), 0, 0 /* fFlags */);
08c4185261c17943cff6cc94522579696eeeb478vboxsync while ((c = RTGetOpt(&GetState, &ValueUnion)))
08c4185261c17943cff6cc94522579696eeeb478vboxsync {
08c4185261c17943cff6cc94522579696eeeb478vboxsync switch (c)
08c4185261c17943cff6cc94522579696eeeb478vboxsync {
08c4185261c17943cff6cc94522579696eeeb478vboxsync case 'l': // --long
08c4185261c17943cff6cc94522579696eeeb478vboxsync fOptLong = true;
08c4185261c17943cff6cc94522579696eeeb478vboxsync break;
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTVMS:
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTRUNNINGVMS:
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTOSTYPES:
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTHOSTDVDS:
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTHOSTFLOPPIES:
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTBRIDGEDIFS:
08c4185261c17943cff6cc94522579696eeeb478vboxsync#if (defined(RT_OS_WINDOWS) && defined(VBOX_WITH_NETFLT))
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTHOSTONLYIFS:
08c4185261c17943cff6cc94522579696eeeb478vboxsync#endif
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTHOSTINFO:
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTHDDBACKENDS:
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTHDDS:
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync case LISTDVDS:
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync case LISTFLOPPIES:
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync case LISTUSBHOST:
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync case LISTUSBFILTERS:
a6ab77f04b22f0de7691f50dfdee8196024ce26dvboxsync case LISTSYSTEMPROPERTIES:
78a072e1b56619e3230735ae073668311232ec94vboxsync if (command)
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync return errorSyntax(USAGE_LIST, "Too many subcommands for \"list\" command.\n");
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync command = c;
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync case VINF_GETOPT_NOT_OPTION:
08c4185261c17943cff6cc94522579696eeeb478vboxsync return errorSyntax(USAGE_LIST, "Unknown subcommand \"%s\".", ValueUnion.psz);
08c4185261c17943cff6cc94522579696eeeb478vboxsync break;
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync default:
08c4185261c17943cff6cc94522579696eeeb478vboxsync if (c > 0)
08c4185261c17943cff6cc94522579696eeeb478vboxsync return errorSyntax(USAGE_LIST, "missing case: %c\n", c);
08c4185261c17943cff6cc94522579696eeeb478vboxsync else if (ValueUnion.pDef)
08c4185261c17943cff6cc94522579696eeeb478vboxsync return errorSyntax(USAGE_LIST, "%s: %Rrs", ValueUnion.pDef->pszLong, c);
08c4185261c17943cff6cc94522579696eeeb478vboxsync else
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync return errorSyntax(USAGE_LIST, "%Rrs", c);
78a072e1b56619e3230735ae073668311232ec94vboxsync }
08c4185261c17943cff6cc94522579696eeeb478vboxsync }
08c4185261c17943cff6cc94522579696eeeb478vboxsync
08c4185261c17943cff6cc94522579696eeeb478vboxsync if (!command)
9726c89eba6e777f3eb4d57f65ca6171a2241d29vboxsync return errorSyntax(USAGE_LIST, "Missing subcommand for \"list\" command.\n");
08c4185261c17943cff6cc94522579696eeeb478vboxsync
da31d917654e0b617e7a9bf8b0cf786136edf8e8vboxsync /* which object? */
08c4185261c17943cff6cc94522579696eeeb478vboxsync switch (command)
08c4185261c17943cff6cc94522579696eeeb478vboxsync {
08c4185261c17943cff6cc94522579696eeeb478vboxsync case LISTVMS:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync /*
78a072e1b56619e3230735ae073668311232ec94vboxsync * Get the list of all registered VMs
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray <IMachine> machines;
78a072e1b56619e3230735ae073668311232ec94vboxsync rc = a->virtualBox->COMGETTER(Machines2)(ComSafeArrayAsOutParam (machines));
78a072e1b56619e3230735ae073668311232ec94vboxsync if (SUCCEEDED(rc))
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync /*
78a072e1b56619e3230735ae073668311232ec94vboxsync * Iterate through the collection
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync */
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync for (size_t i = 0; i < machines.size(); ++ i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync if (machines [i])
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync rc = showVMInfo(a->virtualBox,
78a072e1b56619e3230735ae073668311232ec94vboxsync machines[i],
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync (fOptLong) ? VMINFO_STANDARD : VMINFO_COMPACT);
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTRUNNINGVMS:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync /*
78a072e1b56619e3230735ae073668311232ec94vboxsync * Get the list of all _running_ VMs
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray <IMachine> machines;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync rc = a->virtualBox->COMGETTER(Machines2)(ComSafeArrayAsOutParam (machines));
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync if (SUCCEEDED(rc))
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
22ecc39cb2e9aeb958d702b60fd677e8df0cdc70vboxsync /*
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync * Iterate through the collection
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync */
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync for (size_t i = 0; i < machines.size(); ++ i)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync if (machines [i])
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync MachineState_T machineState;
84ac4fe6468b328aadfe9994176e00504338a47avboxsync rc = machines [i]->COMGETTER(State)(&machineState);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync if (SUCCEEDED(rc))
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync switch (machineState)
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync case MachineState_Running:
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync case MachineState_Paused:
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync rc = showVMInfo(a->virtualBox,
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync machines[i],
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync (fOptLong) ? VMINFO_STANDARD : VMINFO_COMPACT);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync break;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync case LISTOSTYPES:
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync com::SafeIfaceArray <IGuestOSType> coll;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync rc = a->virtualBox->COMGETTER(GuestOSTypes)(ComSafeArrayAsOutParam(coll));
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync if (SUCCEEDED(rc))
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync /*
78a072e1b56619e3230735ae073668311232ec94vboxsync * Iterate through the collection.
78a072e1b56619e3230735ae073668311232ec94vboxsync */
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < coll.size(); ++ i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IGuestOSType> guestOS;
78a072e1b56619e3230735ae073668311232ec94vboxsync guestOS = coll[i];
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr guestId;
78a072e1b56619e3230735ae073668311232ec94vboxsync guestOS->COMGETTER(Id)(guestId.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("ID: %lS\n", guestId.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr guestDescription;
78a072e1b56619e3230735ae073668311232ec94vboxsync guestOS->COMGETTER(Description)(guestDescription.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Description: %lS\n\n", guestDescription.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTHOSTDVDS:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHost> host;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox, COMGETTER(Host)(host.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray <IHostDVDDrive> coll;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(host, COMGETTER(DVDDrives)(ComSafeArrayAsOutParam(coll)));
78a072e1b56619e3230735ae073668311232ec94vboxsync if (SUCCEEDED(rc))
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < coll.size(); ++ i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHostDVDDrive> dvdDrive = coll[i];
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr name;
78a072e1b56619e3230735ae073668311232ec94vboxsync dvdDrive->COMGETTER(Name)(name.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Name: %lS\n\n", name.raw());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTHOSTFLOPPIES:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHost> host;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox, COMGETTER(Host)(host.asOutParam()));
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync com::SafeIfaceArray <IHostFloppyDrive> coll;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(host, COMGETTER(FloppyDrives)(ComSafeArrayAsOutParam(coll)));
78a072e1b56619e3230735ae073668311232ec94vboxsync if (SUCCEEDED(rc))
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < coll.size(); ++i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHostFloppyDrive> floppyDrive = coll[i];
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr name;
78a072e1b56619e3230735ae073668311232ec94vboxsync floppyDrive->COMGETTER(Name)(name.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Name: %lS\n\n", name.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTBRIDGEDIFS:
78a072e1b56619e3230735ae073668311232ec94vboxsync#if (defined(RT_OS_WINDOWS) && defined(VBOX_WITH_NETFLT))
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTHOSTONLYIFS:
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync {
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ComPtr<IHost> host;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync CHECK_ERROR(a->virtualBox, COMGETTER(Host)(host.asOutParam()));
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync com::SafeIfaceArray <IHostNetworkInterface> hostNetworkInterfaces;
78a072e1b56619e3230735ae073668311232ec94vboxsync#if (defined(RT_OS_WINDOWS) && defined(VBOX_WITH_NETFLT))
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(host,
78a072e1b56619e3230735ae073668311232ec94vboxsync FindHostNetworkInterfacesOfType (
78a072e1b56619e3230735ae073668311232ec94vboxsync command == LISTBRIDGEDIFS ? HostNetworkInterfaceType_Bridged : HostNetworkInterfaceType_HostOnly,
78a072e1b56619e3230735ae073668311232ec94vboxsync ComSafeArrayAsOutParam (hostNetworkInterfaces)));
78a072e1b56619e3230735ae073668311232ec94vboxsync#else
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(host,
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync COMGETTER(NetworkInterfaces) (ComSafeArrayAsOutParam (hostNetworkInterfaces)));
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync#endif
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync for (size_t i = 0; i < hostNetworkInterfaces.size(); ++i)
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHostNetworkInterface> networkInterface = hostNetworkInterfaces[i];
78a072e1b56619e3230735ae073668311232ec94vboxsync#ifndef VBOX_WITH_HOSTNETIF_API
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr interfaceName;
78a072e1b56619e3230735ae073668311232ec94vboxsync networkInterface->COMGETTER(Name)(interfaceName.asOutParam());
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync RTPrintf("Name: %lS\n", interfaceName.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync Guid interfaceGuid;
78a072e1b56619e3230735ae073668311232ec94vboxsync networkInterface->COMGETTER(Id)(interfaceGuid.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("GUID: %lS\n\n", Bstr(interfaceGuid.toString()).raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync#else /* VBOX_WITH_HOSTNETIF_API */
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync Bstr interfaceName;
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync networkInterface->COMGETTER(Name)(interfaceName.asOutParam());
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync RTPrintf("Name: %lS\n", interfaceName.raw());
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync Guid interfaceGuid;
156101683587682f6d63b4af322f611d90b77fcevboxsync networkInterface->COMGETTER(Id)(interfaceGuid.asOutParam());
156101683587682f6d63b4af322f611d90b77fcevboxsync RTPrintf("GUID: %lS\n", Bstr(interfaceGuid.toString()).raw());
156101683587682f6d63b4af322f611d90b77fcevboxsync ULONG IPAddress;
156101683587682f6d63b4af322f611d90b77fcevboxsync networkInterface->COMGETTER(IPAddress)(&IPAddress);
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync RTPrintf("IPAddress: %d.%d.%d.%d\n",
78a072e1b56619e3230735ae073668311232ec94vboxsync ((uint8_t*)&IPAddress)[0],
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ((uint8_t*)&IPAddress)[1],
78a072e1b56619e3230735ae073668311232ec94vboxsync ((uint8_t*)&IPAddress)[2],
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ((uint8_t*)&IPAddress)[3]);
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG NetworkMask;
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync networkInterface->COMGETTER(NetworkMask)(&NetworkMask);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("NetworkMask: %d.%d.%d.%d\n",
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ((uint8_t*)&NetworkMask)[0],
78a072e1b56619e3230735ae073668311232ec94vboxsync ((uint8_t*)&NetworkMask)[1],
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ((uint8_t*)&NetworkMask)[2],
78a072e1b56619e3230735ae073668311232ec94vboxsync ((uint8_t*)&NetworkMask)[3]);
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Bstr IPV6Address;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync networkInterface->COMGETTER(IPV6Address)(IPV6Address.asOutParam());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync RTPrintf("IPV6Address: %lS\n", IPV6Address.raw());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Bstr IPV6NetworkMask;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync networkInterface->COMGETTER(IPV6NetworkMask)(IPV6NetworkMask.asOutParam());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync RTPrintf("IPV6NetworkMask: %lS\n", IPV6NetworkMask.raw());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync Bstr HardwareAddress;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync networkInterface->COMGETTER(HardwareAddress)(HardwareAddress.asOutParam());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync RTPrintf("HardwareAddress: %lS\n", HardwareAddress.raw());
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync HostNetworkInterfaceMediumType_T Type;
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync networkInterface->COMGETTER(MediumType)(&Type);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("MediumType: %s\n", getHostIfMediumTypeText(Type));
78a072e1b56619e3230735ae073668311232ec94vboxsync HostNetworkInterfaceStatus_T Status;
78a072e1b56619e3230735ae073668311232ec94vboxsync networkInterface->COMGETTER(Status)(&Status);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Status: %s\n\n", getHostIfStatusText(Status));
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTHOSTINFO:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHost> Host;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (a->virtualBox, COMGETTER(Host)(Host.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Host Information:\n\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync LONG64 uTCTime = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(UTCTime)(&uTCTime));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTTIMESPEC timeSpec;
78a072e1b56619e3230735ae073668311232ec94vboxsync RTTimeSpecSetMilli(&timeSpec, uTCTime);
78a072e1b56619e3230735ae073668311232ec94vboxsync char pszTime[30] = {0};
78a072e1b56619e3230735ae073668311232ec94vboxsync RTTimeSpecToString(&timeSpec, pszTime, sizeof(pszTime));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Host time: %s\n", pszTime);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG processorOnlineCount = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(ProcessorOnlineCount)(&processorOnlineCount));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Processor online count: %lu\n", processorOnlineCount);
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG processorCount = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(ProcessorCount)(&processorCount));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Processor count: %lu\n", processorCount);
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG processorSpeed = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr processorDescription;
78a072e1b56619e3230735ae073668311232ec94vboxsync for (ULONG i = 0; i < processorCount; i++)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, GetProcessorSpeed(i, &processorSpeed));
78a072e1b56619e3230735ae073668311232ec94vboxsync if (processorSpeed)
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Processor#%u speed: %lu MHz\n", i, processorSpeed);
78a072e1b56619e3230735ae073668311232ec94vboxsync else
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Processor#%u speed: unknown\n", i, processorSpeed);
78a072e1b56619e3230735ae073668311232ec94vboxsync#if 0 /* not yet implemented in Main */
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, GetProcessorDescription(i, processorDescription.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Processor#%u description: %lS\n", i, processorDescription.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync }
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync#if 0 /* not yet implemented in Main */
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync ULONG memorySize = 0;
34aa2e97a2a6d7c3c0a5be5121edfd51a31281acvboxsync CHECK_ERROR (Host, COMGETTER(MemorySize)(&memorySize));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Memory size: %lu MByte\n", memorySize);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG memoryAvailable = 0;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(MemoryAvailable)(&memoryAvailable));
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync RTPrintf("Memory available: %lu MByte\n", memoryAvailable);
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync Bstr operatingSystem;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(OperatingSystem)(operatingSystem.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Operating system: %lS\n", operatingSystem.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr oSVersion;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR (Host, COMGETTER(OSVersion)(oSVersion.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Operating system version: %lS\n", oSVersion.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync#endif
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync }
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync break;
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync case LISTHDDBACKENDS:
ae072e31d733f2a7c9cb1b2b4c4901b66197aadavboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<ISystemProperties> systemProperties;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox,
78a072e1b56619e3230735ae073668311232ec94vboxsync COMGETTER(SystemProperties) (systemProperties.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray <IHardDiskFormat> hardDiskFormats;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(systemProperties,
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync COMGETTER(HardDiskFormats) (ComSafeArrayAsOutParam (hardDiskFormats)));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Supported hard disk backends:\n\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < hardDiskFormats.size(); ++ i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync /* General information */
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr id;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(hardDiskFormats [i],
78a072e1b56619e3230735ae073668311232ec94vboxsync COMGETTER(Id) (id.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr description;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(hardDiskFormats [i],
40d48df41519667fa639cfe552c097210b9685acvboxsync COMGETTER(Id) (description.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ULONG caps;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(hardDiskFormats [i],
78a072e1b56619e3230735ae073668311232ec94vboxsync COMGETTER(Capabilities) (&caps));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Backend %u: id='%ls' description='%ls' capabilities=%#06x extensions='",
78a072e1b56619e3230735ae073668311232ec94vboxsync i, id.raw(), description.raw(), caps);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /* File extensions */
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <BSTR> fileExtensions;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(hardDiskFormats [i],
78a072e1b56619e3230735ae073668311232ec94vboxsync COMGETTER(FileExtensions) (ComSafeArrayAsOutParam (fileExtensions)));
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t a = 0; a < fileExtensions.size(); ++ a)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf ("%ls", Bstr (fileExtensions [a]).raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync if (a != fileExtensions.size()-1)
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (",");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf ("'");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /* Configuration keys */
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <BSTR> propertyNames;
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <BSTR> propertyDescriptions;
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <DataType_T> propertyTypes;
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <ULONG> propertyFlags;
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeArray <BSTR> propertyDefaults;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(hardDiskFormats [i],
78a072e1b56619e3230735ae073668311232ec94vboxsync DescribeProperties (ComSafeArrayAsOutParam (propertyNames),
78a072e1b56619e3230735ae073668311232ec94vboxsync ComSafeArrayAsOutParam (propertyDescriptions),
78a072e1b56619e3230735ae073668311232ec94vboxsync ComSafeArrayAsOutParam (propertyTypes),
78a072e1b56619e3230735ae073668311232ec94vboxsync ComSafeArrayAsOutParam (propertyFlags),
78a072e1b56619e3230735ae073668311232ec94vboxsync ComSafeArrayAsOutParam (propertyDefaults)));
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (" properties=(");
78a072e1b56619e3230735ae073668311232ec94vboxsync if (propertyNames.size() > 0)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync for (size_t a = 0; a < propertyNames.size(); ++ a)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync RTPrintf ("\n name='%ls' desc='%ls' type=",
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr (propertyNames [a]).raw(), Bstr (propertyDescriptions [a]).raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync switch (propertyTypes [a])
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync case DataType_Int32: RTPrintf ("int"); break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case DataType_Int8: RTPrintf ("byte"); break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case DataType_String: RTPrintf ("string"); break;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (" flags=%#04x", propertyFlags [a]);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (" default='%ls'", Bstr (propertyDefaults [a]).raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync if (a != propertyNames.size()-1)
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (", ");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf (")\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync }
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync case LISTHDDS:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray<IHardDisk> hdds;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox, COMGETTER(HardDisks)(ComSafeArrayAsOutParam (hdds)));
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < hdds.size(); ++ i)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHardDisk> hdd = hdds[i];
78a072e1b56619e3230735ae073668311232ec94vboxsync Guid uuid;
78a072e1b56619e3230735ae073668311232ec94vboxsync hdd->COMGETTER(Id)(uuid.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("UUID: %s\n", uuid.toString().raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr format;
78a072e1b56619e3230735ae073668311232ec94vboxsync hdd->COMGETTER(Format)(format.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Format: %lS\n", format.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr filepath;
78a072e1b56619e3230735ae073668311232ec94vboxsync hdd->COMGETTER(Location)(filepath.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Location: %lS\n", filepath.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync MediaState_T enmState;
78a072e1b56619e3230735ae073668311232ec94vboxsync /// @todo NEWMEDIA check accessibility of all parents
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync /// @todo NEWMEDIA print the full state value
78a072e1b56619e3230735ae073668311232ec94vboxsync hdd->COMGETTER(State)(&enmState);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Accessible: %s\n", enmState != MediaState_Inaccessible ? "yes" : "no");
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeGUIDArray machineIds;
78a072e1b56619e3230735ae073668311232ec94vboxsync hdd->COMGETTER(MachineIds)(ComSafeArrayAsOutParam(machineIds));
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t j = 0; j < machineIds.size(); ++ j)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IMachine> machine;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox, GetMachine(machineIds[j], machine.asOutParam()));
78a072e1b56619e3230735ae073668311232ec94vboxsync ASSERT(machine);
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr name;
78a072e1b56619e3230735ae073668311232ec94vboxsync machine->COMGETTER(Name)(name.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync machine->COMGETTER(Id)(uuid.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("%s%lS (UUID: %RTuuid)\n",
78a072e1b56619e3230735ae073668311232ec94vboxsync j == 0 ? "Usage: " : " ",
78a072e1b56619e3230735ae073668311232ec94vboxsync name.raw(), &machineIds[j]);
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync /// @todo NEWMEDIA check usage in snapshots too
78a072e1b56619e3230735ae073668311232ec94vboxsync /// @todo NEWMEDIA also list children and say 'differencing' for
78a072e1b56619e3230735ae073668311232ec94vboxsync /// hard disks with the parent or 'base' otherwise.
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTDVDS:
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray<IDVDImage> dvds;
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync CHECK_ERROR(a->virtualBox, COMGETTER(DVDImages)(ComSafeArrayAsOutParam(dvds)));
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t i = 0; i < dvds.size(); ++ i)
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IDVDImage> dvdImage = dvds[i];
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Guid uuid;
78a072e1b56619e3230735ae073668311232ec94vboxsync dvdImage->COMGETTER(Id)(uuid.asOutParam());
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync RTPrintf("UUID: %s\n", uuid.toString().raw());
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync Bstr filePath;
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync dvdImage->COMGETTER(Location)(filePath.asOutParam());
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync RTPrintf("Path: %lS\n", filePath.raw());
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync MediaState_T enmState;
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync dvdImage->COMGETTER(State)(&enmState);
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync RTPrintf("Accessible: %s\n", enmState != MediaState_Inaccessible ? "yes" : "no");
78a072e1b56619e3230735ae073668311232ec94vboxsync /** @todo usage */
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync RTPrintf("\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTFLOPPIES:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync com::SafeIfaceArray<IFloppyImage> floppies;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR(a->virtualBox, COMGETTER(FloppyImages)(ComSafeArrayAsOutParam(floppies)));
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync for (size_t i = 0; i < floppies.size(); ++ i)
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync {
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync ComPtr<IFloppyImage> floppyImage = floppies[i];
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync Guid uuid;
78a072e1b56619e3230735ae073668311232ec94vboxsync floppyImage->COMGETTER(Id)(uuid.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("UUID: %s\n", uuid.toString().raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr filePath;
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync floppyImage->COMGETTER(Location)(filePath.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Path: %lS\n", filePath.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync MediaState_T enmState;
78a072e1b56619e3230735ae073668311232ec94vboxsync floppyImage->COMGETTER(State)(&enmState);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Accessible: %s\n", enmState != MediaState_Inaccessible ? "yes" : "no");
78a072e1b56619e3230735ae073668311232ec94vboxsync /** @todo usage */
ca7f7f38dae7697e6b3046bf4d80dfc98eb59210vboxsync RTPrintf("\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTUSBHOST:
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync {
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync ComPtr<IHost> Host;
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync CHECK_ERROR_RET (a->virtualBox, COMGETTER(Host)(Host.asOutParam()), 1);
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync
eb563d667bee4ab4ac0ba8be38d68f911f1d53eavboxsync ComPtr<IHostUSBDeviceCollection> CollPtr;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync CHECK_ERROR_RET (Host, COMGETTER(USBDevices)(CollPtr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHostUSBDeviceEnumerator> EnumPtr;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (CollPtr, Enumerate(EnumPtr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Host USB Devices:\n\n");
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync BOOL fMore = FALSE;
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync ASSERT(SUCCEEDED(rc = EnumPtr->HasMore (&fMore)));
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync if (FAILED(rc))
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync return rc;
78a072e1b56619e3230735ae073668311232ec94vboxsync
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync if (!fMore)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync RTPrintf("<none>\n\n");
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync }
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync else
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync while (fMore)
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync {
36dd9dabf3f64468206cb74145b51245cf7fde54vboxsync ComPtr <IHostUSBDevice> dev;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync ASSERT(SUCCEEDED(rc = EnumPtr->GetNext (dev.asOutParam())));
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync if (FAILED(rc))
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync return rc;
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /* Query info. */
78a072e1b56619e3230735ae073668311232ec94vboxsync Guid id;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(Id)(id.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync USHORT usVendorId;
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync CHECK_ERROR_RET (dev, COMGETTER(VendorId)(&usVendorId), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync USHORT usProductId;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(ProductId)(&usProductId), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync USHORT bcdRevision;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(Revision)(&bcdRevision), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("UUID: %S\n"
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync "VendorId: 0x%04x (%04X)\n"
78a072e1b56619e3230735ae073668311232ec94vboxsync "ProductId: 0x%04x (%04X)\n"
78a072e1b56619e3230735ae073668311232ec94vboxsync "Revision: %u.%u (%02u%02u)\n",
f06e830c9fdbc3d9e89867d4429404c5446bc513vboxsync id.toString().raw(),
78a072e1b56619e3230735ae073668311232ec94vboxsync usVendorId, usVendorId, usProductId, usProductId,
78a072e1b56619e3230735ae073668311232ec94vboxsync bcdRevision >> 8, bcdRevision & 0xff,
78a072e1b56619e3230735ae073668311232ec94vboxsync bcdRevision >> 8, bcdRevision & 0xff);
78a072e1b56619e3230735ae073668311232ec94vboxsync
c3d2b15ad840b405062f4c2c6b127d6fc107c7b2vboxsync /* optional stuff. */
78a072e1b56619e3230735ae073668311232ec94vboxsync Bstr bstr;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(Manufacturer)(bstr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync if (!bstr.isEmpty())
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync RTPrintf("Manufacturer: %lS\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(Product)(bstr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync if (!bstr.isEmpty())
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Product: %lS\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(SerialNumber)(bstr.asOutParam()), 1);
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync if (!bstr.isEmpty())
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("SerialNumber: %lS\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(Address)(bstr.asOutParam()), 1);
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync if (!bstr.isEmpty())
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync RTPrintf("Address: %lS\n", bstr.raw());
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync /* current state */
78a072e1b56619e3230735ae073668311232ec94vboxsync USBDeviceState_T state;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (dev, COMGETTER(State)(&state), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync const char *pszState = "?";
78a072e1b56619e3230735ae073668311232ec94vboxsync switch (state)
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync {
5142b6456c5cec38e0ee291e235201d4ac73f10bvboxsync case USBDeviceState_NotSupported:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszState = "Not supported"; break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceState_Unavailable:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszState = "Unavailable"; break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceState_Busy:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszState = "Busy"; break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceState_Available:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszState = "Available"; break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceState_Held:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszState = "Held"; break;
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceState_Captured:
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync pszState = "Captured"; break;
85668909c68b5d0e67c89d6042535b41c4bffeccvboxsync default:
78a072e1b56619e3230735ae073668311232ec94vboxsync ASSERT (false);
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync RTPrintf("Current State: %s\n\n", pszState);
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync
034b3d77b1a08b77b1fa9bfd7489997421713f15vboxsync ASSERT(SUCCEEDED(rc = EnumPtr->HasMore (&fMore)));
78a072e1b56619e3230735ae073668311232ec94vboxsync if (FAILED(rc))
78a072e1b56619e3230735ae073668311232ec94vboxsync return rc;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTUSBFILTERS:
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Global USB Device Filters:\n\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync
40fa6228bd9ab763bc67b51fe6290802e954eb8cvboxsync ComPtr <IHost> host;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (a->virtualBox, COMGETTER(Host) (host.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync SafeIfaceArray <IHostUSBDeviceFilter> coll;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (host, COMGETTER (USBDeviceFilters)(ComSafeArrayAsOutParam(coll)), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync if (coll.size() == 0)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
cc260ed3418d1fd2771d0395f818f76808b60238vboxsync RTPrintf("<none>\n\n");
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync else
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync for (size_t index = 0; index < coll.size(); ++index)
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<IHostUSBDeviceFilter> flt = coll[index];
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync /* Query info. */
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Index: %zu\n", index);
78a072e1b56619e3230735ae073668311232ec94vboxsync
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync BOOL active = FALSE;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (flt, COMGETTER (Active) (&active), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Active: %s\n", active ? "yes" : "no");
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync USBDeviceFilterAction_T action;
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (flt, COMGETTER (Action) (&action), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync const char *pszAction = "<invalid>";
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync switch (action)
78a072e1b56619e3230735ae073668311232ec94vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync case USBDeviceFilterAction_Ignore:
78a072e1b56619e3230735ae073668311232ec94vboxsync pszAction = "Ignore";
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync case USBDeviceFilterAction_Hold:
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync pszAction = "Hold";
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync break;
223d0cc6ed8bf5767cb97c734684460b8eae31a8vboxsync default:
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Action: %s\n", pszAction);
78a072e1b56619e3230735ae073668311232ec94vboxsync
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync Bstr bstr;
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync CHECK_ERROR_RET (flt, COMGETTER (Name) (bstr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Name: %lS\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (flt, COMGETTER (VendorId) (bstr.asOutParam()), 1);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("VendorId: %lS\n", bstr.raw());
b0c4bd49112a99f00ef48b7a8eae6fb310a62bdavboxsync CHECK_ERROR_RET (flt, COMGETTER (ProductId) (bstr.asOutParam()), 1);
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync RTPrintf("ProductId: %lS\n", bstr.raw());
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync CHECK_ERROR_RET (flt, COMGETTER (Revision) (bstr.asOutParam()), 1);
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync RTPrintf("Revision: %lS\n", bstr.raw());
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync CHECK_ERROR_RET (flt, COMGETTER (Manufacturer) (bstr.asOutParam()), 1);
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync RTPrintf("Manufacturer: %lS\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync CHECK_ERROR_RET (flt, COMGETTER (Product) (bstr.asOutParam()), 1);
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync RTPrintf("Product: %lS\n", bstr.raw());
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync CHECK_ERROR_RET (flt, COMGETTER (SerialNumber) (bstr.asOutParam()), 1);
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync RTPrintf("Serial Number: %lS\n\n", bstr.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync }
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync }
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync case LISTSYSTEMPROPERTIES:
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync {
78a072e1b56619e3230735ae073668311232ec94vboxsync ComPtr<ISystemProperties> systemProperties;
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync a->virtualBox->COMGETTER(SystemProperties)(systemProperties.asOutParam());
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync Bstr str;
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync ULONG ulValue;
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync ULONG64 ul64Value;
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync BOOL flag;
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync
04fb270f7378e5e38964b7da92abc2146c96e93avboxsync systemProperties->COMGETTER(MinGuestRAM)(&ulValue);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Minimum guest RAM size: %u Megabytes\n", ulValue);
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(MaxGuestRAM)(&ulValue);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Maximum guest RAM size: %u Megabytes\n", ulValue);
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(MaxGuestVRAM)(&ulValue);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Maximum video RAM size: %u Megabytes\n", ulValue);
e068057c82b010bc7cc663e8f57ac3ef1890a33cvboxsync systemProperties->COMGETTER(MaxVDISize)(&ul64Value);
3f6d4775faa373634b2f3fc2a90fc517733f6fd6vboxsync RTPrintf("Maximum VDI size: %lu Megabytes\n", ul64Value);
f001a45ec92f71f1e4c1015485fc1ddf84e8059cvboxsync systemProperties->COMGETTER(DefaultHardDiskFolder)(str.asOutParam());
0614bee07b5f88aa8803df43fde6d7185a9a7fffvboxsync RTPrintf("Default hard disk folder: %lS\n", str.raw());
0614bee07b5f88aa8803df43fde6d7185a9a7fffvboxsync systemProperties->COMGETTER(DefaultMachineFolder)(str.asOutParam());
0614bee07b5f88aa8803df43fde6d7185a9a7fffvboxsync RTPrintf("Default machine folder: %lS\n", str.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(RemoteDisplayAuthLibrary)(str.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("VRDP authentication library: %lS\n", str.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(WebServiceAuthLibrary)(str.asOutParam());
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Webservice auth. library: %lS\n", str.raw());
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(HWVirtExEnabled)(&flag);
78a072e1b56619e3230735ae073668311232ec94vboxsync RTPrintf("Hardware virt. extensions: %s\n", flag ? "yes" : "no");
78a072e1b56619e3230735ae073668311232ec94vboxsync systemProperties->COMGETTER(LogHistoryCount)(&ulValue);
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync RTPrintf("Log history count: %u\n", ulValue);
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync
78a072e1b56619e3230735ae073668311232ec94vboxsync }
78a072e1b56619e3230735ae073668311232ec94vboxsync break;
78a072e1b56619e3230735ae073668311232ec94vboxsync } // end switch
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync return SUCCEEDED(rc) ? 0 : 1;
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync}
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync#endif /* !VBOX_ONLY_DOCS */
2d86fd6bcfe35a4bb83bb8a4fe68090693cdce95vboxsync/* vi: set tabstop=4 shiftwidth=4 expandtab: */
7a731cb139828206e59b084166bebe09e1e4d7c2vboxsync