Index: /trunk/src/VBox/Main/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Main/Makefile.kmk	(revision 49909)
+++ /trunk/src/VBox/Main/Makefile.kmk	(revision 49910)
@@ -963,5 +963,6 @@
 + $(VBoxCOM_0_OUTDIR)/VirtualBox.tlb: $(VBOX_IDL_FILE.MSCOM) | $$(dir $$@)
 	$(VBOX_WIN_MIDL) /nologo \
-		$(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64" && "$(KBUILD_HOST)" == "win",/env amd64,/env win32) /target NT51 \
+		$(if-expr "$(KBUILD_TARGET_ARCH)" == "amd64" && "$(KBUILD_HOST)" == "win",/env amd64,/env win32) \
+		/robust /protocol all /target NT51 \
 		/out $(call VBOX_FN_MAKE_WIN_PATH,$(VBoxCOM_0_OUTDIR)) \
 		/cpp_cmd $(subst $(EXEC_X86_WIN32),,$(call VBOX_FN_MAKE_WIN_PATH,$(TOOL_$(VBOX_VCC_TOOL)_CC))) \
Index: /trunk/src/VBox/Main/testcase/tstVBoxAPIPerf.cpp
===================================================================
--- /trunk/src/VBox/Main/testcase/tstVBoxAPIPerf.cpp	(revision 49909)
+++ /trunk/src/VBox/Main/testcase/tstVBoxAPIPerf.cpp	(revision 49910)
@@ -162,4 +162,37 @@
 
 
+static void tstApiPrf4(IVirtualBox *pVBox)
+{
+    RTTestSub(g_hTest, "IHost::GetProcessorFeature performance");
+
+    IHost      *pHost = NULL;
+    HRESULT     hrc = pVBox->COMGETTER(Host)(&pHost);
+    if (FAILED(hrc))
+    {
+        tstComExpr(hrc, "IVirtualBox::Host", __LINE__);
+        return;
+    }
+
+    uint32_t const  cCalls   = 65536;
+    uint32_t        cLeft    = cCalls;
+    uint64_t        uStartTS = RTTimeNanoTS();
+    while (cLeft-- > 0)
+    {
+        BOOL fSupported;
+        HRESULT hrc = pHost->GetProcessorFeature(ProcessorFeature_PAE, &fSupported);
+        if (FAILED(hrc))
+        {
+            tstComExpr(hrc, "IHost::GetProcessorFeature", __LINE__);
+            pHost->Release();
+            return;
+        }
+    }
+    uint64_t uElapsed = RTTimeNanoTS() - uStartTS;
+    RTTestValue(g_hTest, "IHost::GetProcessorFeature average", uElapsed / cCalls, RTTESTUNIT_NS_PER_CALL);
+    pHost->Release();
+    RTTestSubDone(g_hTest);
+}
+
+
 
 int main(int argc, char **argv)
@@ -197,4 +230,5 @@
                 /** @todo Find something that returns a 2nd instance of an interface and see
                  *        how if wrapper stuff is reused in any way. */
+                tstApiPrf4(ptrVBox);
             }
         }
