Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 17552)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.cpp	(revision 17553)
@@ -591,8 +591,9 @@
                 else
                 {
-                    ComPtr <IUSBDeviceCollection> coll;
-                    CHECK_ERROR_BREAK (console, COMGETTER(USBDevices)(coll.asOutParam()));
+                    SafeIfaceArray <IUSBDevice> coll;
+                    CHECK_ERROR_BREAK (console, COMGETTER(USBDevices)(ComSafeArrayAsOutParam(coll)));
                     ComPtr <IUSBDevice> dev;
-                    CHECK_ERROR_BREAK (coll, FindByAddress (Bstr (a->argv [2]), dev.asOutParam()));
+                    CHECK_ERROR_BREAK (console, FindUSBDeviceByAddress (Bstr (a->argv [2]),
+                                                       dev.asOutParam()));
                     CHECK_ERROR_BREAK (dev, COMGETTER(Id) (usbId.asOutParam()));
                 }
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 17552)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageInfo.cpp	(revision 17553)
@@ -1313,16 +1313,8 @@
                     RTPrintf ("Currently Attached USB Devices:\n\n");
 
-                ComPtr <IUSBDeviceCollection> coll;
-                CHECK_ERROR_RET (console, COMGETTER(USBDevices) (coll.asOutParam()), rc);
-
-                ComPtr <IUSBDeviceEnumerator> en;
-                CHECK_ERROR_RET (coll, Enumerate (en.asOutParam()), rc);
-
-                BOOL more = FALSE;
-                ASSERT(SUCCEEDED(rc = en->HasMore (&more)));
-                if (FAILED(rc))
-                    return rc;
-
-                if (!more)
+                SafeIfaceArray <IUSBDevice> coll;
+                CHECK_ERROR_RET (console, COMGETTER(USBDevices) (ComSafeArrayAsOutParam(coll)), rc);
+
+                if (coll.size() == 0)
                 {
                     if (details != VMINFO_MACHINEREADABLE)
@@ -1330,83 +1322,76 @@
                 }
                 else
-                while (more)
                 {
-                    ComPtr <IUSBDevice> dev;
-                    ASSERT(SUCCEEDED(rc = en->GetNext (dev.asOutParam())));
-                    if (FAILED(rc))
-                        return rc;
-
-                    /* Query info. */
-                    Guid id;
-                    CHECK_ERROR_RET (dev, COMGETTER(Id)(id.asOutParam()), rc);
-                    USHORT usVendorId;
-                    CHECK_ERROR_RET (dev, COMGETTER(VendorId)(&usVendorId), rc);
-                    USHORT usProductId;
-                    CHECK_ERROR_RET (dev, COMGETTER(ProductId)(&usProductId), rc);
-                    USHORT bcdRevision;
-                    CHECK_ERROR_RET (dev, COMGETTER(Revision)(&bcdRevision), rc);
-
-                    if (details == VMINFO_MACHINEREADABLE)
-                        RTPrintf("USBAttachedUUID%d=\"%S\"\n"
-                                 "USBAttachedVendorId%d=\"%#06x\"\n"
-                                 "USBAttachedProductId%d=\"%#06x\"\n"
-                                 "USBAttachedRevision%d=\"%#04x%02x\"\n",
-                                 index + 1, id.toString().raw(),
-                                 index + 1, usVendorId,
-                                 index + 1, usProductId,
-                                 index + 1, bcdRevision >> 8, bcdRevision & 0xff);
-                    else
-                        RTPrintf("UUID:               %S\n"
-                                 "VendorId:           0x%04x (%04X)\n"
-                                 "ProductId:          0x%04x (%04X)\n"
-                                 "Revision:           %u.%u (%02u%02u)\n",
-                                 id.toString().raw(),
-                                 usVendorId, usVendorId, usProductId, usProductId,
-                                 bcdRevision >> 8, bcdRevision & 0xff,
-                                 bcdRevision >> 8, bcdRevision & 0xff);
-
-                    /* optional stuff. */
-                    Bstr bstr;
-                    CHECK_ERROR_RET (dev, COMGETTER(Manufacturer)(bstr.asOutParam()), rc);
-                    if (!bstr.isEmpty())
+                    for (index = 0; index < coll.size(); ++index)
                     {
+                        ComPtr <IUSBDevice> dev = coll[index];
+
+                        /* Query info. */
+                        Guid id;
+                        CHECK_ERROR_RET (dev, COMGETTER(Id)(id.asOutParam()), rc);
+                        USHORT usVendorId;
+                        CHECK_ERROR_RET (dev, COMGETTER(VendorId)(&usVendorId), rc);
+                        USHORT usProductId;
+                        CHECK_ERROR_RET (dev, COMGETTER(ProductId)(&usProductId), rc);
+                        USHORT bcdRevision;
+                        CHECK_ERROR_RET (dev, COMGETTER(Revision)(&bcdRevision), rc);
+
                         if (details == VMINFO_MACHINEREADABLE)
-                            RTPrintf("USBAttachedManufacturer%d=\"%lS\"\n", index + 1, bstr.raw());
+                            RTPrintf("USBAttachedUUID%zu=\"%S\"\n"
+                                     "USBAttachedVendorId%zu=\"%#06x\"\n"
+                                     "USBAttachedProductId%zu=\"%#06x\"\n"
+                                     "USBAttachedRevision%zu=\"%#04x%02x\"\n",
+                                     index + 1, id.toString().raw(),
+                                     index + 1, usVendorId,
+                                     index + 1, usProductId,
+                                     index + 1, bcdRevision >> 8, bcdRevision & 0xff);
                         else
-                            RTPrintf("Manufacturer:       %lS\n", bstr.raw());
+                            RTPrintf("UUID:               %S\n"
+                                     "VendorId:           0x%04x (%04X)\n"
+                                     "ProductId:          0x%04x (%04X)\n"
+                                     "Revision:           %u.%u (%02u%02u)\n",
+                                     id.toString().raw(),
+                                     usVendorId, usVendorId, usProductId, usProductId,
+                                     bcdRevision >> 8, bcdRevision & 0xff,
+                                     bcdRevision >> 8, bcdRevision & 0xff);
+
+                        /* optional stuff. */
+                        Bstr bstr;
+                        CHECK_ERROR_RET (dev, COMGETTER(Manufacturer)(bstr.asOutParam()), rc);
+                        if (!bstr.isEmpty())
+                        {
+                            if (details == VMINFO_MACHINEREADABLE)
+                                RTPrintf("USBAttachedManufacturer%zu=\"%lS\"\n", index + 1, bstr.raw());
+                            else
+                                RTPrintf("Manufacturer:       %lS\n", bstr.raw());
+                        }
+                        CHECK_ERROR_RET (dev, COMGETTER(Product)(bstr.asOutParam()), rc);
+                        if (!bstr.isEmpty())
+                        {
+                            if (details == VMINFO_MACHINEREADABLE)
+                                RTPrintf("USBAttachedProduct%zu=\"%lS\"\n", index + 1, bstr.raw());
+                            else
+                                RTPrintf("Product:            %lS\n", bstr.raw());
+                        }
+                        CHECK_ERROR_RET (dev, COMGETTER(SerialNumber)(bstr.asOutParam()), rc);
+                        if (!bstr.isEmpty())
+                        {
+                            if (details == VMINFO_MACHINEREADABLE)
+                                RTPrintf("USBAttachedSerialNumber%zu=\"%lS\"\n", index + 1, bstr.raw());
+                            else
+                                RTPrintf("SerialNumber:       %lS\n", bstr.raw());
+                        }
+                        CHECK_ERROR_RET (dev, COMGETTER(Address)(bstr.asOutParam()), rc);
+                        if (!bstr.isEmpty())
+                        {
+                            if (details == VMINFO_MACHINEREADABLE)
+                                RTPrintf("USBAttachedAddress%zu=\"%lS\"\n", index + 1, bstr.raw());
+                            else
+                                RTPrintf("Address:            %lS\n", bstr.raw());
+                        }
+
+                        if (details != VMINFO_MACHINEREADABLE)
+                            RTPrintf("\n");
                     }
-                    CHECK_ERROR_RET (dev, COMGETTER(Product)(bstr.asOutParam()), rc);
-                    if (!bstr.isEmpty())
-                    {
-                        if (details == VMINFO_MACHINEREADABLE)
-                            RTPrintf("USBAttachedProduct%d=\"%lS\"\n", index + 1, bstr.raw());
-                        else
-                            RTPrintf("Product:            %lS\n", bstr.raw());
-                    }
-                    CHECK_ERROR_RET (dev, COMGETTER(SerialNumber)(bstr.asOutParam()), rc);
-                    if (!bstr.isEmpty())
-                    {
-                        if (details == VMINFO_MACHINEREADABLE)
-                            RTPrintf("USBAttachedSerialNumber%d=\"%lS\"\n", index + 1, bstr.raw());
-                        else
-                            RTPrintf("SerialNumber:       %lS\n", bstr.raw());
-                    }
-                    CHECK_ERROR_RET (dev, COMGETTER(Address)(bstr.asOutParam()), rc);
-                    if (!bstr.isEmpty())
-                    {
-                        if (details == VMINFO_MACHINEREADABLE)
-                            RTPrintf("USBAttachedAddress%d=\"%lS\"\n", index + 1, bstr.raw());
-                        else
-                            RTPrintf("Address:            %lS\n", bstr.raw());
-                    }
-
-                    if (details != VMINFO_MACHINEREADABLE)
-                        RTPrintf("\n");
-
-                    ASSERT(SUCCEEDED(rc = en->HasMore (&more)));
-                    if (FAILED(rc))
-                        return rc;
-
-                    index ++;
                 }
             }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 17552)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.cpp	(revision 17553)
@@ -1976,8 +1976,8 @@
                 mDevicesUSBMenu->setEnabled (isRunningOrPaused);
 
-                CUSBDeviceEnumerator en = cconsole.GetUSBDevices().Enumerate();
-                while (en.HasMore())
+                CUSBDeviceVector devsvec = cconsole.GetUSBDevices();
+                for (int i = 0; i < devsvec.size(); ++i)
                 {
-                    CUSBDevice usb = en.GetNext();
+                    CUSBDevice usb = devsvec[i];
                     info += QString ("<br><b><nobr>%1</nobr></b>")
                                      .arg (vboxGlobal().details (usb));
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 17552)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxGlobal.cpp	(revision 17553)
@@ -5544,5 +5544,5 @@
             {
                 CUSBDevice attachedUSB =
-                    mConsole.GetUSBDevices().FindById (usb.GetId());
+                    mConsole.FindUSBDeviceById (usb.GetId());
                 action->setChecked (!attachedUSB.isNull());
                 action->setEnabled (dev.GetState() !=
Index: /trunk/src/VBox/Main/ConsoleImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 17552)
+++ /trunk/src/VBox/Main/ConsoleImpl.cpp	(revision 17553)
@@ -1265,7 +1265,7 @@
 }
 
-STDMETHODIMP Console::COMGETTER(USBDevices) (IUSBDeviceCollection **aUSBDevices)
-{
-    CheckComArgOutPointerValid(aUSBDevices);
+STDMETHODIMP Console::COMGETTER(USBDevices) (ComSafeArrayOut (IUSBDevice *, aUSBDevices))
+{
+    CheckComArgOutSafeArrayPointerValid(aUSBDevices);
 
     AutoCaller autoCaller (this);
@@ -1274,8 +1274,6 @@
     AutoReadLock alock (this);
 
-    ComObjPtr <OUSBDeviceCollection> collection;
-    collection.createObject();
-    collection->init (mUSBDevices);
-    collection.queryInterfaceTo (aUSBDevices);
+    SafeIfaceArray <IUSBDevice> collection (mUSBDevices);
+    collection.detachTo (ComSafeArrayOutArg(aUSBDevices));
 
     return S_OK;
@@ -1333,6 +1331,8 @@
 }
 
+
 // IConsole methods
 /////////////////////////////////////////////////////////////////////////////
+
 
 STDMETHODIMP Console::PowerUp (IProgress **aProgress)
@@ -2073,4 +2073,74 @@
     return setError (VBOX_E_PDM_ERROR,
         tr ("The virtual machine does not have a USB controller"));
+#endif  /* !VBOX_WITH_USB */
+}
+
+STDMETHODIMP Console::FindUSBDeviceByAddress(IN_BSTR aAddress, IUSBDevice **aDevice)
+{
+#ifdef VBOX_WITH_USB
+    CheckComArgNotNull(aAddress);
+    CheckComArgOutPointerValid(aDevice);
+
+    *aDevice = NULL;
+
+    SafeIfaceArray <IUSBDevice> devsvec;
+    HRESULT rc = COMGETTER(USBDevices) (ComSafeArrayAsOutParam(devsvec));
+    CheckComRCReturnRC (rc);
+
+    for (size_t i = 0; i < devsvec.size(); ++i)
+    {
+        Bstr address;
+        rc = devsvec[i]->COMGETTER(Address) (address.asOutParam());
+        CheckComRCReturnRC (rc);
+        if (address == aAddress)
+        {
+            ComObjPtr<OUSBDevice> found;
+            found.createObject();
+            found->init (devsvec[i]);
+            return found.queryInterfaceTo (aDevice);
+        }
+    }
+
+    return setErrorNoLog (VBOX_E_OBJECT_NOT_FOUND, tr (
+        "Could not find a USB device with address '%ls'"),
+        aAddress);
+
+#else   /* !VBOX_WITH_USB */
+    return E_NOTIMPL;
+#endif  /* !VBOX_WITH_USB */
+}
+
+STDMETHODIMP Console::FindUSBDeviceById(IN_GUID aId, IUSBDevice **aDevice)
+{
+#ifdef VBOX_WITH_USB
+    CheckComArgExpr(aId, Guid (aId).isEmpty() == false);
+    CheckComArgOutPointerValid(aDevice);
+
+    *aDevice = NULL;
+
+    SafeIfaceArray <IUSBDevice> devsvec;
+    HRESULT rc = COMGETTER(USBDevices) (ComSafeArrayAsOutParam(devsvec));
+    CheckComRCReturnRC (rc);
+
+    for (size_t i = 0; i < devsvec.size(); ++i)
+    {
+        Guid id;
+        rc = devsvec[i]->COMGETTER(Id) (id.asOutParam());
+        CheckComRCReturnRC (rc);
+        if (id == aId)
+        {
+            ComObjPtr<OUSBDevice> found;
+            found.createObject();
+            found->init(devsvec[i]);
+            return found.queryInterfaceTo (aDevice);
+        }
+    }
+
+    return setErrorNoLog (VBOX_E_OBJECT_NOT_FOUND, tr (
+        "Could not find a USB device with uuid {%RTuuid}"),
+        Guid (aId).raw());
+
+#else   /* !VBOX_WITH_USB */
+    return E_NOTIMPL;
 #endif  /* !VBOX_WITH_USB */
 }
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 17552)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 17553)
@@ -5568,5 +5568,5 @@
   <interface
      name="IConsole" extends="$unknown"
-     uuid="e3c6d4a1-a935-47ca-b16d-f9e9c496e53e"
+     uuid="3d458cf1-d8aa-4593-84db-41de9e7242d8"
      wsmap="managed"
      >
@@ -5650,5 +5650,5 @@
     </attribute>
 
-    <attribute name="USBDevices" type="IUSBDeviceCollection" readonly="yes">
+    <attribute name="USBDevices" type="IUSBDevice" readonly="yes" safearray="yes">
       <desc>
         Collection of USB devices currently attached to the virtual
@@ -6020,4 +6020,43 @@
       <param name="device" type="IUSBDevice" dir="return">
         <desc>Detached USB device.</desc>
+      </param>
+    </method>
+
+    <method name="findUSBDeviceByAddress">
+      <desc>
+        Searches for a USB device with the given host address.
+
+        <result name="VBOX_E_OBJECT_NOT_FOUND">
+          Given @c name does not correspond to any USB device.
+        </result>
+
+        <see>IUSBDevice::address</see>
+      </desc>
+      <param name="name" type="wstring" dir="in">
+        <desc>
+          Address of the USB device (as assigned by the host) to
+          search for.
+        </desc>
+      </param>
+      <param name="device" type="IUSBDevice" dir="return">
+        <desc>Found USB device object.</desc>
+      </param>
+    </method>
+
+    <method name="findUSBDeviceById">
+      <desc>
+        Searches for a USB device with the given UUID.
+
+        <result name="VBOX_E_OBJECT_NOT_FOUND">
+          Given @c id does not correspond to any USB device.
+        </result>
+
+        <see>IUSBDevice::id</see>
+      </desc>
+      <param name="id" type="uuid" dir="in">
+        <desc>UUID of the USB device to search for.</desc>
+      </param>
+      <param name="device" type="IUSBDevice" dir="return">
+        <desc>Found USB device object.</desc>
       </param>
     </method>
@@ -10998,55 +11037,4 @@
   -->
 
-  <enumerator
-     name="IUSBDeviceEnumerator" type="IUSBDevice"
-     uuid="aefe00f7-eb8a-454b-9ea4-fd5ad93c0e99"
-     />
-
-  <collection
-     name="IUSBDeviceCollection" type="IUSBDevice"
-     enumerator="IUSBDeviceEnumerator"
-     uuid="e31f3248-90dd-4ca2-95f0-6b36042d96a2"
-     readonly="yes"
-     >
-    <method name="findById">
-      <desc>
-        Searches this collection for a USB device with the given UUID.
-        <note>
-          The method returns an error if the given UUID does not
-          correspond to any USB device in the collection.
-        </note>
-        <see>IUSBDevice::id</see>
-      </desc>
-      <param name="id" type="uuid" dir="in">
-        <desc>UUID of the USB device to search for.</desc>
-      </param>
-      <param name="device" type="IUSBDevice" dir="return">
-        <desc>Found USB device object.</desc>
-      </param>
-    </method>
-
-    <method name="findByAddress">
-      <desc>
-        Searches this collection for a USB device with the given
-        host address.
-        <note>
-          The method returns an error if the given address does not
-          correspond to any USB device in the collection.
-        </note>
-        <see>IUSBDevice::address</see>
-      </desc>
-      <param name="name" type="wstring" dir="in">
-        <desc>
-          Address of the USB device (as assigned by the host) to
-          search for.
-        </desc>
-      </param>
-      <param name="device" type="IUSBDevice" dir="return">
-        <desc>Found USB device object.</desc>
-      </param>
-    </method>
-
-  </collection>
-
   <interface
      name="IUSBDevice" extends="$unknown"
Index: /trunk/src/VBox/Main/include/ConsoleImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/ConsoleImpl.h	(revision 17552)
+++ /trunk/src/VBox/Main/include/ConsoleImpl.h	(revision 17553)
@@ -115,5 +115,5 @@
     STDMETHOD(COMGETTER(Display)) (IDisplay **aDisplay);
     STDMETHOD(COMGETTER(Debugger)) (IMachineDebugger **aDebugger);
-    STDMETHOD(COMGETTER(USBDevices)) (IUSBDeviceCollection **aUSBDevices);
+    STDMETHOD(COMGETTER(USBDevices)) (ComSafeArrayOut (IUSBDevice *, aUSBDevices));
     STDMETHOD(COMGETTER(RemoteUSBDevices)) (IHostUSBDeviceCollection **aRemoteUSBDevices);
     STDMETHOD(COMGETTER(RemoteDisplayInfo)) (IRemoteDisplayInfo **aRemoteDisplayInfo);
@@ -139,4 +139,6 @@
     STDMETHOD(AttachUSBDevice) (IN_GUID aId);
     STDMETHOD(DetachUSBDevice) (IN_GUID aId, IUSBDevice **aDevice);
+    STDMETHOD(FindUSBDeviceByAddress) (IN_BSTR aAddress, IUSBDevice **aDevice);
+    STDMETHOD(FindUSBDeviceById) (IN_GUID aId, IUSBDevice **aDevice);
     STDMETHOD(CreateSharedFolder) (IN_BSTR aName, IN_BSTR aHostPath, BOOL aWritable);
     STDMETHOD(RemoveSharedFolder) (IN_BSTR aName);
Index: /trunk/src/VBox/Main/include/USBDeviceImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/USBDeviceImpl.h	(revision 17552)
+++ /trunk/src/VBox/Main/include/USBDeviceImpl.h	(revision 17553)
@@ -6,5 +6,5 @@
 
 /*
- * Copyright (C) 2006-2008 Sun Microsystems, Inc.
+ * Copyright (C) 2006-2009 Sun Microsystems, Inc.
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -25,5 +25,4 @@
 
 #include "VirtualBoxBase.h"
-#include "Collection.h"
 #include "Logging.h"
 
@@ -121,65 +120,4 @@
 };
 
-COM_DECL_READONLY_ENUM_AND_COLLECTION_EX_BEGIN (ComObjPtr <OUSBDevice>, IUSBDevice, OUSBDevice)
-
-    STDMETHOD(FindById) (IN_GUID aId, IUSBDevice **aDevice)
-    {
-        Guid idToFind = aId;
-        if (idToFind.isEmpty())
-            return E_INVALIDARG;
-        if (!aDevice)
-            return E_POINTER;
-
-        *aDevice = NULL;
-        Vector::value_type found;
-        Vector::iterator it = vec.begin();
-        while (!found && it != vec.end())
-        {
-            Guid id;
-            (*it)->COMGETTER(Id) (id.asOutParam());
-            if (id == idToFind)
-                found = *it;
-            ++ it;
-        }
-
-        if (!found)
-        {
-            return setErrorNoLog (E_INVALIDARG, OUSBDeviceCollection::tr (
-                "Could not find a USB device with UUID {%s}"),
-                idToFind.toString().raw());
-        }
-
-        return found.queryInterfaceTo (aDevice);
-    }
-
-    STDMETHOD(FindByAddress) (IN_BSTR aAddress, IUSBDevice **aDevice)
-    {
-        if (!aAddress)
-            return E_INVALIDARG;
-        if (!aDevice)
-            return E_POINTER;
-
-        *aDevice = NULL;
-        Vector::value_type found;
-        Vector::iterator it = vec.begin();
-        while (!found && it != vec.end())
-        {
-            Bstr address;
-            (*it)->COMGETTER(Address) (address.asOutParam());
-            if (address == aAddress)
-                found = *it;
-            ++ it;
-        }
-
-        if (!found)
-            return setErrorNoLog (E_INVALIDARG, OUSBDeviceCollection::tr (
-                "Could not find a USB device with address '%ls'"),
-                aAddress);
-
-        return found.queryInterfaceTo (aDevice);
-    }
-
-COM_DECL_READONLY_ENUM_AND_COLLECTION_EX_END (ComObjPtr <OUSBDevice>, IUSBDevice, OUSBDevice)
-
 #endif // ____H_USBDEVICEIMPL
 /* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/xpcom/module.cpp
===================================================================
--- /trunk/src/VBox/Main/xpcom/module.cpp	(revision 17552)
+++ /trunk/src/VBox/Main/xpcom/module.cpp	(revision 17553)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2007 Sun Microsystems, Inc.
+ * Copyright (C) 2006-2009 Sun Microsystems, Inc.
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -83,5 +83,4 @@
 NS_IMPL_THREADSAFE_ISUPPORTS1_CI(Console, IConsole)
 
-COM_IMPL_READONLY_ENUM_AND_COLLECTION_EX(ComObjPtr <OUSBDevice>, IUSBDevice, OUSBDevice)
 COM_IMPL_READONLY_ENUM_AND_COLLECTION_EX(ComObjPtr <RemoteUSBDevice>, IHostUSBDevice, RemoteUSBDevice)
 
@@ -163,3 +162,3 @@
 
 NS_IMPL_NSGETMODULE (VirtualBox_Client_Module, components)
-
+/* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/xpcom/server.cpp
===================================================================
--- /trunk/src/VBox/Main/xpcom/server.cpp	(revision 17552)
+++ /trunk/src/VBox/Main/xpcom/server.cpp	(revision 17553)
@@ -246,8 +246,4 @@
 #endif
 
-#ifdef VBOX_WITH_USB
-COM_IMPL_READONLY_ENUM_AND_COLLECTION_AS(IfaceUSBDevice, IUSBDevice)
-#endif
-
 ////////////////////////////////////////////////////////////////////////////////
 
