Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.cpp	(revision 75403)
@@ -40,12 +40,18 @@
 
 /*Returns the windows version we're running on*/
-vboxWinVersion_t VBoxQueryWinVersion()
-{
-    ULONG major, minor, build;
+vboxWinVersion_t VBoxQueryWinVersion(uint32_t *pbuild)
+{
+    ULONG major, minor;
+    static ULONG build = 0;
     BOOLEAN checkedBuild;
     static vboxWinVersion_t s_WinVersion = WINVERSION_UNKNOWN;
 
     if (s_WinVersion != WINVERSION_UNKNOWN)
+    {
+        if (pbuild)
+            *pbuild = build;
+
         return s_WinVersion;
+    }
 
     checkedBuild = PsGetVersion(&major, &minor, &build, NULL);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.h	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPUtils.h	(revision 75403)
@@ -68,5 +68,5 @@
 
 RT_C_DECLS_BEGIN
-vboxWinVersion_t VBoxQueryWinVersion(void);
+vboxWinVersion_t VBoxQueryWinVersion(uint32_t *pbuild);
 uint32_t VBoxGetHeightReduction(void);
 bool     VBoxLikesVideoMode(uint32_t display, uint32_t width, uint32_t height, uint32_t bpp);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/common/VBoxMPVidModes.cpp	(revision 75403)
@@ -356,5 +356,5 @@
                      * if the framebuffer window requires scrolling to fit the guest resolution.
                      * So add 1024x768 resolution for win8 guest to allow user switch to it */
-                       (   (VBoxQueryWinVersion() != WIN8 && VBoxQueryWinVersion() != WIN81)
+                       (   (VBoxQueryWinVersion(NULL) != WIN8 && VBoxQueryWinVersion(NULL) != WIN81)
                         || resolutionMatrix[resIndex].xRes != 1024
                         || resolutionMatrix[resIndex].yRes != 768)
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPMisc.cpp	(revision 75403)
@@ -621,9 +621,15 @@
         return STATUS_UNSUCCESSFUL;
 
-    vboxWinVersion_t ver = VBoxQueryWinVersion();
+    uint32_t build;
+    vboxWinVersion_t ver = VBoxQueryWinVersion(&build);
     if (ver == WINVERSION_VISTA)
     {
         pKeyPrefix = VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_VISTA;
         cbKeyPrefix = sizeof (VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_VISTA);
+    }
+    else if (ver >= WINVERSION_10 && build >= 17763)
+    {
+        pKeyPrefix = VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_WIN10_17763;
+        cbKeyPrefix = sizeof (VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_WIN10_17763);
     }
     else
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.cpp	(revision 75403)
@@ -52,5 +52,5 @@
 PVOID vboxWddmMemAlloc(IN SIZE_T cbSize)
 {
-    POOL_TYPE enmPoolType = (VBoxQueryWinVersion() >= WINVERSION_8) ? NonPagedPoolNx : NonPagedPool;
+    POOL_TYPE enmPoolType = (VBoxQueryWinVersion(NULL) >= WINVERSION_8) ? NonPagedPoolNx : NonPagedPool;
     return ExAllocatePoolWithTag(enmPoolType, cbSize, VBOXWDDM_MEMTAG);
 }
@@ -1290,5 +1290,5 @@
                     Status = STATUS_SUCCESS;
 
-                    if (VBoxQueryWinVersion() >= WINVERSION_8)
+                    if (VBoxQueryWinVersion(NULL) >= WINVERSION_8)
                     {
                         DXGK_DISPLAY_INFORMATION DisplayInfo;
@@ -2260,5 +2260,5 @@
                 pCaps->GpuEngineTopology.NbAsymetricProcessingNodes = VBOXWDDM_NUM_NODES;
 
-                if (VBoxQueryWinVersion() >= WINVERSION_8)
+                if (VBoxQueryWinVersion(NULL) >= WINVERSION_8)
                     pCaps->WDDMVersion = DXGKDDI_WDDMv1;
             }
@@ -7505,5 +7505,5 @@
 
     // Fill in the DriverInitializationData structure and call DxgkInitialize()
-    if (VBoxQueryWinVersion() >= WINVERSION_8)
+    if (VBoxQueryWinVersion(NULL) >= WINVERSION_8)
         DriverInitializationData.Version = DXGKDDI_INTERFACE_VERSION_WIN8;
     else
@@ -7610,5 +7610,5 @@
 
     LOGREL(("VBox WDDM Driver for Windows %s version %d.%d.%dr%d, %d bit; Built %s %s",
-            VBoxQueryWinVersion() >= WINVERSION_8 ? "8+" : "Vista and 7",
+            VBoxQueryWinVersion(NULL) >= WINVERSION_8 ? "8+" : "Vista and 7",
             VBOX_VERSION_MAJOR, VBOX_VERSION_MINOR, VBOX_VERSION_BUILD, VBOX_SVN_REV,
             (sizeof (void*) << 3), __DATE__, __TIME__));
@@ -7709,5 +7709,5 @@
             {
                 /* No 3D support by the host. */
-                if (VBoxQueryWinVersion() >= WINVERSION_8)
+                if (VBoxQueryWinVersion(NULL) >= WINVERSION_8)
                 {
                     /* Use display only driver for Win8+. */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/wddm/VBoxMPWddm.h	(revision 75403)
@@ -53,4 +53,5 @@
 #define VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_VISTA L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\Current\\System\\CurrentControlSet\\Control\\VIDEO\\"
 #define VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_WIN7 L"\\Registry\\Machine\\System\\CurrentControlSet\\Hardware Profiles\\UnitedVideo\\CONTROL\\VIDEO\\"
+#define VBOXWDDM_REG_DISPLAYSETTINGSKEY_PREFIX_WIN10_17763 L"\\Registry\\Machine\\System\\CurrentControlSet\\Control\\UnitedVideo\\CONTROL\\VIDEO\\"
 
 #define VBOXWDDM_REG_DISPLAYSETTINGS_ATTACH_RELX L"Attach.RelativeX"
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPDriver.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPDriver.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPDriver.cpp	(revision 75403)
@@ -114,5 +114,5 @@
         VideoPortZeroMemory(tmpRanges, sizeof(tmpRanges));
 
-        if (VBoxQueryWinVersion() == WINVERSION_NT4)
+        if (VBoxQueryWinVersion(NULL) == WINVERSION_NT4)
         {
             /* NT crashes if either of 'vendorId, 'deviceId' or 'slot' parameters is NULL,
@@ -774,5 +774,5 @@
      *to allow our driver to be loaded.
      */
-    switch (VBoxQueryWinVersion())
+    switch (VBoxQueryWinVersion(NULL))
     {
         case WINVERSION_NT4:
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPVideoPortAPI.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPVideoPortAPI.cpp	(revision 75402)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Video/mp/xpdm/VBoxMPVideoPortAPI.cpp	(revision 75403)
@@ -97,5 +97,5 @@
     VideoPortZeroMemory(pAPI, sizeof(VBOXVIDEOPORTPROCS));
 
-    if (VBoxQueryWinVersion() <= WINVERSION_NT4)
+    if (VBoxQueryWinVersion(NULL) <= WINVERSION_NT4)
     {
         /* VideoPortGetProcAddress is available for >= win2k */
