Index: /trunk/src/VBox/Additions/WINNT/Graphics/Display/Makefile.kmk
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Display/Makefile.kmk	(revision 27515)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Display/Makefile.kmk	(revision 27516)
@@ -92,17 +92,6 @@
  ifeq ($(KBUILD_TARGET_ARCH), amd64)
 DLLS += VBoxDispD3D64
- if defined(VBOX_SIGNING_MODE)
-VBoxDispD3D64_NOINST = true
- endif
-VBoxDispD3D64_TEMPLATE = VBOXGUESTR3DLL
-VBoxDispD3D64_DEFS     = UNICODE _UNICODE
-VBoxDispD3D64_SOURCES  = \
-	wddm/VBoxDispD3D.cpp \
-	wddm/VBoxDispD3D64.def \
-	wddm/VBoxDispD3D.rc
-VBoxDispD3D64_LIBS     = \
-	$(VBOX_LIB_IPRT_GUEST_R3) \
-	$(VBOX_LIB_VBGL_R3)
-VBoxDispD3D64_SDKS     = WINDDKWLH
+VBoxDispD3D64_EXTENDS  = VBoxDispD3D
+VBoxDispD3D64_SOURCES  = $(subst VBoxDispD3D.def,VBoxDispD3D64.def,$(VBoxDispD3D_SOURCES))
  endif
 endif
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp	(revision 27515)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Display/wddm/VBoxDispD3D.cpp	(revision 27516)
@@ -89,21 +89,61 @@
 {
     vboxVDbgPrint(("==> "__FUNCTION__", hAdapter(0x%p), caps type(%d)\n", hAdapter, pData->Type));
-    AssertBreakpoint();
+
+    HRESULT hr = S_OK;
 
     switch (pData->Type)
     {
         case D3DDDICAPS_DDRAW:
+            Assert(pData->DataSize >= sizeof (DDRAW_CAPS));
+            if (pData->DataSize >= sizeof (DDRAW_CAPS))
+                memset(pData->pData, 0, sizeof (DDRAW_CAPS));
+            else
+                hr = E_INVALIDARG;
+            break;
         case D3DDDICAPS_DDRAW_MODE_SPECIFIC:
+            Assert(pData->DataSize >= sizeof (DDRAW_MODE_SPECIFIC_CAPS));
+            if (pData->DataSize >= sizeof (DDRAW_MODE_SPECIFIC_CAPS))
+                memset(pData->pData, 0, sizeof (DDRAW_MODE_SPECIFIC_CAPS));
+            else
+                hr = E_INVALIDARG;
+            break;
         case D3DDDICAPS_GETFORMATCOUNT:
+            *((uint32_t*)pData->pData) = 0;
+            break;
         case D3DDDICAPS_GETFORMATDATA:
+            /* TODO: fill the array of FORMATOP structures of size reported with D3DDDICAPS_GETFORMATCOUNT (currently 0) */
+            break;
+        case D3DDDICAPS_GETD3DQUERYCOUNT:
+            *((uint32_t*)pData->pData) = 0;
+            break;
+        case D3DDDICAPS_GETD3D3CAPS:
+            Assert(pData->DataSize >= sizeof (D3DHAL_GLOBALDRIVERDATA));
+            if (pData->DataSize >= sizeof (D3DHAL_GLOBALDRIVERDATA))
+                memset (pData->pData, 0, sizeof (D3DHAL_GLOBALDRIVERDATA));
+            else
+                hr = E_INVALIDARG;
+            break;
+        case D3DDDICAPS_GETD3D7CAPS:
+            Assert(pData->DataSize >= sizeof (D3DHAL_D3DEXTENDEDCAPS));
+            if (pData->DataSize >= sizeof (D3DHAL_D3DEXTENDEDCAPS))
+                memset(pData->pData, 0, sizeof (D3DHAL_D3DEXTENDEDCAPS));
+            else
+                hr = E_INVALIDARG;
+            break;
+        case D3DDDICAPS_GETD3D9CAPS:
+            Assert(pData->DataSize >= sizeof (D3DCAPS9));
+            if (pData->DataSize >= sizeof (D3DCAPS9))
+                memset(pData->pData, 0, sizeof (D3DCAPS9));
+            else
+                hr = E_INVALIDARG;
+            break;
+        case D3DDDICAPS_GETGAMMARAMPCAPS:
+            *((uint32_t*)pData->pData) = 0;
+            break;
         case D3DDDICAPS_GETMULTISAMPLEQUALITYLEVELS:
-        case D3DDDICAPS_GETD3DQUERYCOUNT:
         case D3DDDICAPS_GETD3DQUERYDATA:
-        case D3DDDICAPS_GETD3D3CAPS:
         case D3DDDICAPS_GETD3D5CAPS:
         case D3DDDICAPS_GETD3D6CAPS:
-        case D3DDDICAPS_GETD3D7CAPS:
         case D3DDDICAPS_GETD3D8CAPS:
-        case D3DDDICAPS_GETD3D9CAPS:
         case D3DDDICAPS_GETDECODEGUIDCOUNT:
         case D3DDDICAPS_GETDECODEGUIDS:
@@ -126,9 +166,11 @@
         case D3DDDICAPS_GETEXTENSIONGUIDS:
         case D3DDDICAPS_GETEXTENSIONCAPS:
-        case D3DDDICAPS_GETGAMMARAMPCAPS:
+            vboxVDbgPrint((__FUNCTION__": unimplemented caps type(%d)\n", pData->Type));
+            AssertBreakpoint();
             if (pData->pData && pData->DataSize)
                 memset(pData->pData, 0, pData->DataSize);
             break;
         default:
+            vboxVDbgPrint((__FUNCTION__": unknown caps type(%d)\n", pData->Type));
             AssertBreakpoint();
     }
