Index: /trunk/src/VBox/Main/include/ExtPackManagerImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/ExtPackManagerImpl.h	(revision 73547)
+++ /trunk/src/VBox/Main/include/ExtPackManagerImpl.h	(revision 73548)
@@ -209,4 +209,5 @@
     HRESULT     i_doUninstall(const Utf8Str *a_pstrName, bool a_fForcedRemoval, const Utf8Str *a_pstrDisplayInfo);
     void        i_callAllVirtualBoxReadyHooks(void);
+    HRESULT     i_queryObjects(const com::Utf8Str &aObjUuid, std::vector<ComPtr<IUnknown> > &aObjects);
 #endif
 #ifdef VBOX_COM_INPROC
Index: /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp	(revision 73547)
+++ /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp	(revision 73548)
@@ -2894,4 +2894,43 @@
 }
 
+
+/**
+ * Queries objects of type @a aObjUuid from all the extension packs.
+ *
+ * @returns COM status code.
+ * @param   aObjUuid        The UUID of the kind of objects we're querying.
+ * @param   aObjects        Where to return the objects.
+ *
+ * @remarks The caller must not hold any locks.
+ */
+HRESULT ExtPackManager::i_queryObjects(const com::Utf8Str &aObjUuid, std::vector<ComPtr<IUnknown> > &aObjects)
+{
+    aObjects.clear();
+
+    AutoCaller autoCaller(this);
+    HRESULT hrc = autoCaller.rc();
+    if (SUCCEEDED(hrc))
+    {
+        AutoWriteLock autoLock(this COMMA_LOCKVAL_SRC_POS);
+        ComPtr<ExtPackManager> ptrSelfRef = this;
+
+        for (ExtPackList::iterator it = m->llInstalledExtPacks.begin();
+             it != m->llInstalledExtPacks.end();
+             /* advancing below */)
+        {
+            ComPtr<IUnknown> ptrIf;
+            HRESULT hrc2 = (*it)->queryObject(aObjUuid, ptrIf);
+            if (SUCCEEDED(hrc2))
+                aObjects.push_back(ptrIf);
+            else if (hrc2 != E_NOINTERFACE)
+                hrc = hrc2;
+        }
+
+        if (aObjects.size() > 0)
+            hrc = S_OK;
+    }
+    return hrc;
+}
+
 #endif /* !VBOX_COM_INPROC */
 
