Index: /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h	(revision 46819)
+++ /trunk/src/VBox/Main/include/HostNetworkInterfaceImpl.h	(revision 46820)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2006-2012 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -79,6 +79,8 @@
 
     HRESULT setVirtualBox(VirtualBox *pVBox);
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
     void registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
     void unregisterMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr);
+#endif
 
 private:
Index: /trunk/src/VBox/Main/include/SharedFolderImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/SharedFolderImpl.h	(revision 46819)
+++ /trunk/src/VBox/Main/include/SharedFolderImpl.h	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -100,7 +100,10 @@
 
     /* weak parents (only one of them is not null) */
+#if !defined(VBOX_COM_INPROC)
     Machine * const         mMachine;
+    VirtualBox * const      mVirtualBox;
+#else
     Console * const         mConsole;
-    VirtualBox * const      mVirtualBox;
+#endif
 
     struct Data;            // opaque data struct, defined in SharedFolderImpl.cpp
Index: /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-all/ExtPackManagerImpl.cpp	(revision 46820)
@@ -46,5 +46,7 @@
 #include "ProgressImpl.h"
 #include "SystemPropertiesImpl.h"
+#if !defined(VBOX_COM_INPROC)
 #include "VirtualBoxImpl.h"
+#endif
 
 
@@ -81,4 +83,5 @@
 };
 
+#if !defined(VBOX_COM_INPROC)
 /**
  * Private extension pack data.
@@ -102,4 +105,5 @@
     RTMEMEF_NEW_AND_DELETE_OPERATORS();
 };
+#endif
 
 /**
@@ -151,6 +155,8 @@
     /** The list of installed extension packs. */
     ExtPackList         llInstalledExtPacks;
+#if !defined(VBOX_COM_INPROC)
     /** Pointer to the VirtualBox object, our parent. */
     VirtualBox         *pVirtualBox;
+#endif
     /** The current context. */
     VBOXEXTPACKCTX      enmContext;
@@ -163,4 +169,5 @@
 };
 
+#if !defined(VBOX_COM_INPROC)
 /**
  * Extension pack installation job.
@@ -706,4 +713,5 @@
 }
 
+#endif
 
 
@@ -1884,5 +1892,7 @@
     m->strBaseDir           = szBaseDir;
     m->strCertificatDirPath = szCertificatDir;
+#if !defined(VBOX_COM_INPROC)
     m->pVirtualBox          = a_pVirtualBox;
+#endif
     m->enmContext           = a_enmContext;
 
@@ -2029,4 +2039,5 @@
 }
 
+#if !defined(VBOX_COM_INPROC)
 STDMETHODIMP ExtPackManager::OpenExtPackFile(IN_BSTR a_bstrTarballAndDigest, IExtPackFile **a_ppExtPackFile)
 {
@@ -2117,4 +2128,5 @@
     return hrc;
 }
+#endif
 
 STDMETHODIMP ExtPackManager::Cleanup(void)
@@ -2449,4 +2461,5 @@
 }
 
+#if !defined(VBOX_COM_INPROC)
 /**
  * Refreshes the specified extension pack.
@@ -2849,4 +2862,5 @@
     }
 }
+#endif
 
 /**
@@ -2876,4 +2890,5 @@
 }
 
+#if !defined(VBOX_COM_INPROC)
 /**
  * Calls the pfnVMCreated hook for all working extension packs.
@@ -2894,4 +2909,5 @@
         (*it)->callVmCreatedHook(m->pVirtualBox, a_pMachine, &autoLock);
 }
+#endif
 
 /**
Index: /trunk/src/VBox/Main/src-all/ProgressImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/ProgressImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-all/ProgressImpl.cpp	(revision 46820)
@@ -28,5 +28,7 @@
 #include "ProgressImpl.h"
 
-#include "VirtualBoxImpl.h"
+#if !defined(VBOX_COM_INPROC)
+# include "VirtualBoxImpl.h"
+#endif
 #include "VirtualBoxErrorInfoImpl.h"
 
Index: /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-all/SharedFolderImpl.cpp	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2011 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -17,6 +17,8 @@
 
 #include "SharedFolderImpl.h"
-#include "VirtualBoxImpl.h"
-#include "MachineImpl.h"
+#if !defined(VBOX_COM_INPROC)
+# include "VirtualBoxImpl.h"
+# include "MachineImpl.h"
+#endif
 #include "ConsoleImpl.h"
 
@@ -51,7 +53,10 @@
 SharedFolder::SharedFolder()
     : mParent(NULL),
+#if !defined(VBOX_COM_INPROC)
       mMachine(NULL),
-      mConsole(NULL),
       mVirtualBox(NULL)
+#else
+      mConsole(NULL)
+#endif
 {
     m = new Data;
@@ -78,4 +83,5 @@
 /////////////////////////////////////////////////////////////////////////////
 
+#if !defined(VBOX_COM_INPROC)
 /**
  *  Initializes the shared folder object.
@@ -148,4 +154,45 @@
 }
 
+# if 0
+
+/**
+ *  Initializes the shared folder object.
+ *
+ *  This variant initializes a global instance that lives in the server address space. It is not presently used.
+ *
+ *  @param aVirtualBox  VirtualBox parent object
+ *  @param aName        logical name of the shared folder
+ *  @param aHostPath    full path to the shared folder on the host
+ *  @param aWritable    writable if true, readonly otherwise
+ *  @param fFailOnError Whether to fail with an error if the shared folder path is bad.
+ *
+ *  @return          COM result indicator
+ */
+HRESULT SharedFolder::init(VirtualBox *aVirtualBox,
+                           const Utf8Str &aName,
+                           const Utf8Str &aHostPath,
+                           bool aWritable,
+                           bool aAutoMount,
+                           bool fFailOnError)
+{
+    /* Enclose the state transition NotReady->InInit->Ready */
+    AutoInitSpan autoInitSpan(this);
+    AssertReturn(autoInitSpan.isOk(), E_FAIL);
+
+    unconst(mVirtualBox) = aVirtualBox;
+
+    HRESULT rc = protectedInit(aVirtualBox, aName, aHostPath, aWritable, aAutoMount);
+
+    /* Confirm a successful initialization when it's the case */
+    if (SUCCEEDED(rc))
+        autoInitSpan.setSucceeded();
+
+    return rc;
+}
+
+# endif
+
+#else
+
 /**
  *  Initializes the shared folder object.
@@ -182,42 +229,4 @@
     return rc;
 }
-
-#if 0
-
-/**
- *  Initializes the shared folder object.
- *
- *  This variant initializes a global instance that lives in the server address space. It is not presently used.
- *
- *  @param aVirtualBox  VirtualBox parent object
- *  @param aName        logical name of the shared folder
- *  @param aHostPath    full path to the shared folder on the host
- *  @param aWritable    writable if true, readonly otherwise
- *  @param fFailOnError Whether to fail with an error if the shared folder path is bad.
- *
- *  @return          COM result indicator
- */
-HRESULT SharedFolder::init(VirtualBox *aVirtualBox,
-                           const Utf8Str &aName,
-                           const Utf8Str &aHostPath,
-                           bool aWritable,
-                           bool aAutoMount,
-                           bool fFailOnError)
-{
-    /* Enclose the state transition NotReady->InInit->Ready */
-    AutoInitSpan autoInitSpan(this);
-    AssertReturn(autoInitSpan.isOk(), E_FAIL);
-
-    unconst(mVirtualBox) = aVirtualBox;
-
-    HRESULT rc = protectedInit(aVirtualBox, aName, aHostPath, aWritable, aAutoMount);
-
-    /* Confirm a successful initialization when it's the case */
-    if (SUCCEEDED(rc))
-        autoInitSpan.setSucceeded();
-
-    return rc;
-}
-
 #endif
 
@@ -305,7 +314,10 @@
     unconst(mParent) = NULL;
 
+#if !defined(VBOX_COM_INPROC)
     unconst(mMachine) = NULL;
+    unconst(mVirtualBox) = NULL;
+#else
     unconst(mConsole) = NULL;
-    unconst(mVirtualBox) = NULL;
+#endif
 }
 
Index: /trunk/src/VBox/Main/src-server/BandwidthControlImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/BandwidthControlImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/BandwidthControlImpl.cpp	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2006-2012 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -26,4 +26,6 @@
 
 #include <iprt/cpp/utils.h>
+#include <VBox/com/array.h>
+#include <algorithm>
 
 // defines
Index: /trunk/src/VBox/Main/src-server/HostImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/HostImpl.cpp	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2004-2012 Oracle Corporation
+ * Copyright (C) 2004-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -158,4 +158,5 @@
 
 #include "VBox/com/MultiResult.h"
+#include "VBox/com/array.h"
 
 #include <stdio.h>
@@ -2894,5 +2895,7 @@
     listCopy = list;
     HostNetworkInterfaceList::iterator itOld, itNew;
+# ifdef VBOX_WITH_RESOURCE_USAGE_API
     PerformanceCollector *aCollector = m->pParent->performanceCollector();
+# endif
     for (itOld = m->llNetIfs.begin(); itOld != m->llNetIfs.end(); ++itOld)
     {
@@ -2912,5 +2915,9 @@
         }
         if (fGone)
+        {
+# ifdef VBOX_WITH_RESOURCE_USAGE_API
             (*itOld)->unregisterMetrics(aCollector, this);
+# endif
+        }
     }
     /*
@@ -2932,5 +2939,9 @@
         }
         else if (t == HostNetworkInterfaceType_Bridged)
+        {
+# ifdef VBOX_WITH_RESOURCE_USAGE_API
             (*itNew)->registerMetrics(aCollector, this);
+# endif
+        }
     }
     m->llNetIfs = list;
@@ -3171,4 +3182,6 @@
 }
 
+#endif /* VBOX_WITH_RESOURCE_USAGE_API */
+
 
 /* static */
@@ -3186,5 +3199,3 @@
 }
 
-#endif /* VBOX_WITH_RESOURCE_USAGE_API */
-
 /* vi: set tabstop=4 shiftwidth=4 expandtab: */
Index: /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/HostNetworkInterfaceImpl.cpp	(revision 46820)
@@ -7,5 +7,5 @@
 
 /*
- * Copyright (C) 2006-2012 Oracle Corporation
+ * Copyright (C) 2006-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -22,6 +22,8 @@
 #include "Logging.h"
 #include "netif.h"
-#include "Performance.h"
-#include "PerformanceImpl.h"
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
+# include "Performance.h"
+# include "PerformanceImpl.h"
+#endif
 
 #include <iprt/cpp/utils.h>
@@ -86,4 +88,6 @@
     return S_OK;
 }
+
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
 
 void HostNetworkInterface::registerMetrics(PerformanceCollector *aCollector, ComPtr<IUnknown> objptr)
@@ -140,4 +144,6 @@
     aCollector->unregisterBaseMetricsFor(objptr, name);
 }
+
+#endif /* VBOX_WITH_RESOURCE_USAGE_API */
 
 #ifdef VBOX_WITH_HOSTNETIF_API
Index: /trunk/src/VBox/Main/src-server/MachineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/MachineImpl.cpp	(revision 46820)
@@ -252,11 +252,13 @@
 /////////////////////////////////////////////////////////////////////////////
 
-Machine::Machine()
-    : mCollectorGuest(NULL),
-      mPeer(NULL),
-      mParent(NULL),
-      mSerialPorts(),
-      mParallelPorts(),
-      uRegistryNeedsSaving(0)
+Machine::Machine() :
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
+    mCollectorGuest(NULL),
+#endif
+    mPeer(NULL),
+    mParent(NULL),
+    mSerialPorts(),
+    mParallelPorts(),
+    uRegistryNeedsSaving(0)
 {}
 
@@ -12582,10 +12584,5 @@
     AutoMultiWriteLock3 multilock(mParent, mParent->host(), this COMMA_LOCKVAL_SRC_POS);
 
-#if 0
-    // Trigger async cleanup tasks, avoid doing things here which are not
-    // vital to be done immediately and maybe need more locks. This calls
-    // Machine::unregisterMetrics().
-    mParent->onMachineUninit(mPeer);
-#else
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
     /*
      * It is safe to call Machine::unregisterMetrics() here because
@@ -12594,5 +12591,4 @@
      */
     unregisterMetrics(mParent->performanceCollector(), mPeer);
-#endif
     /* The guest must be unregistered after its metrics (@bugref{5949}). */
     LogAleksey(("{%p} " LOG_FN_FMT ": mCollectorGuest=%p\n",
@@ -12604,4 +12600,5 @@
         mCollectorGuest = NULL;
     }
+#endif
 
     if (aReason == Uninit::Abnormal)
@@ -12797,4 +12794,5 @@
                                                 ULONG aVmNetRx, ULONG aVmNetTx)
 {
+#ifdef VBOX_WITH_RESOURCE_USAGE_API
     if (mCollectorGuest)
         mCollectorGuest->updateStats(aValidStats, aCpuUser, aCpuKernel, aCpuIdle,
@@ -12804,4 +12802,23 @@
 
     return S_OK;
+#else
+    NOREF(aValidStats);
+    NOREF(aCpuUser);
+    NOREF(aCpuKernel);
+    NOREF(aCpuIdle);
+    NOREF(aMemTotal);
+    NOREF(aMemFree);
+    NOREF(aMemBalloon);
+    NOREF(aMemShared);
+    NOREF(aMemCache);
+    NOREF(aPageTotal);
+    NOREF(aAllocVMM);
+    NOREF(aFreeVMM);
+    NOREF(aBalloonedVMM);
+    NOREF(aSharedVMM);
+    NOREF(aVmNetRx);
+    NOREF(aVmNetTx);
+    return E_NOTIMPL;
+#endif
 }
 
Index: /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/NATEngineImpl.cpp	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2010-2012 Oracle Corporation
+ * Copyright (C) 2010-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -27,4 +27,5 @@
 #include <VBox/err.h>
 #include <VBox/settings.h>
+#include <VBox/com/array.h>
 
 
Index: /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/USBControllerImpl.cpp	(revision 46820)
@@ -5,5 +5,5 @@
 
 /*
- * Copyright (C) 2005-2012 Oracle Corporation
+ * Copyright (C) 2005-2013 Oracle Corporation
  *
  * This file is part of VirtualBox Open Source Edition (OSE), as
@@ -34,4 +34,5 @@
 #include <VBox/err.h>
 #include <VBox/settings.h>
+#include <VBox/com/array.h>
 
 #include <algorithm>
Index: /trunk/src/VBox/Main/src-server/VRDEServerImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/src-server/VRDEServerImpl.cpp	(revision 46819)
+++ /trunk/src/VBox/Main/src-server/VRDEServerImpl.cpp	(revision 46820)
@@ -30,4 +30,5 @@
 #include <VBox/err.h>
 #include <VBox/sup.h>
+#include <VBox/com/array.h>
 
 #include <VBox/RemoteDesktop/VRDE.h>
