Index: /trunk/src/VBox/Additions/WINNT/Graphics/Display/screen.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Display/screen.c	(revision 17664)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Display/screen.c	(revision 17665)
@@ -99,6 +99,7 @@
     if (ppdev->bHGSMISupported)
     {
+        /* In HGSMI mode the display driver decides about the size. */
         iDevice = info.iDevice;
-        u32DisplayInfoSize = 4096; /* In HGSMI mode the display driver decides about the size. */
+        u32DisplayInfoSize = VBVA_DISPLAY_INFORMATION_SIZE;
     }
 #endif /* VBOX_WITH_HGSMI */
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Display/vbox.c
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Display/vbox.c	(revision 17664)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Display/vbox.c	(revision 17665)
@@ -366,6 +366,6 @@
             VBVAENABLE *pEnable = (VBVAENABLE *)p;
 
-            pEnable->u32Flags    = bEnable? VBVA_F_ENABLE: VBVA_F_DISABLE;
-            pEnable->u32Reserved = 0;
+            pEnable->u32Flags  = bEnable? VBVA_F_ENABLE: VBVA_F_DISABLE;
+            pEnable->u32Offset = ppdev->layout.offVBVABuffer;
 
             vboxHGSMIBufferSubmit (ppdev, p);
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp	(revision 17664)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp	(revision 17665)
@@ -732,7 +732,13 @@
 void VBoxComputeFrameBufferSizes (PDEVICE_EXTENSION PrimaryExtension)
 {
+#ifndef VBOX_WITH_HGSMI
     ULONG ulAvailable = PrimaryExtension->u.primary.cbVRAM
                         - PrimaryExtension->u.primary.cbMiniportHeap
                         - VBOX_VIDEO_ADAPTER_INFORMATION_SIZE;
+#else
+    ULONG ulAvailable = PrimaryExtension->u.primary.cbVRAM
+                        - PrimaryExtension->u.primary.cbMiniportHeap
+                        - VBVA_ADAPTER_INFORMATION_SIZE;
+#endif /* VBOX_WITH_HGSMI */
 
     /* Size of a framebuffer. */
@@ -748,4 +754,5 @@
              ulAvailable - ulSize * PrimaryExtension->u.primary.cDisplays));
 
+#ifndef VBOX_WITH_HGSMI
     if (ulSize > VBOX_VIDEO_DISPLAY_INFORMATION_SIZE)
     {
@@ -758,8 +765,11 @@
         ulSize = 0;
     }
+#endif /* !VBOX_WITH_HGSMI */
 
     /* Update the primary info. */
     PrimaryExtension->u.primary.ulMaxFrameBufferSize     = ulSize;
+#ifndef VBOX_WITH_HGSMI
     PrimaryExtension->u.primary.ulDisplayInformationSize = VBOX_VIDEO_DISPLAY_INFORMATION_SIZE;
+#endif /* !VBOX_WITH_HGSMI */
 
     /* Update the per extension info. */
@@ -775,6 +785,10 @@
                  Extension->iDevice, ulFrameBufferOffset));
 
+#ifndef VBOX_WITH_HGSMI
         ulFrameBufferOffset += PrimaryExtension->u.primary.ulMaxFrameBufferSize
                                + PrimaryExtension->u.primary.ulDisplayInformationSize;
+#else
+        ulFrameBufferOffset += PrimaryExtension->u.primary.ulMaxFrameBufferSize;
+#endif /* VBOX_WITH_HGSMI */
 
         Extension = Extension->pNext;
@@ -825,4 +839,5 @@
 }
 
+#ifndef VBOX_WITH_HGSMI
 static void vboxQueryConf (PDEVICE_EXTENSION PrimaryExtension, uint32_t u32Index, ULONG *pulValue)
 {
@@ -1106,4 +1121,5 @@
     dprintf(("VBoxVideo::VBoxSetupDisplays: finished\n"));
 }
+#endif /* VBOX_WITH_HGSMI */
 
 VP_STATUS VBoxVideoFindAdapter(IN PVOID HwDeviceExtension,
@@ -1692,4 +1708,5 @@
         }
 
+#ifndef VBOX_WITH_HGSMI
         case IOCTL_VIDEO_QUERY_DISPLAY_INFO:
         {
@@ -1714,4 +1731,5 @@
             break;
         }
+#endif /* !VBOX_WITH_HGSMI */
 
         case IOCTL_VIDEO_VBVA_ENABLE:
@@ -2049,6 +2067,10 @@
 
     MapInformation->VideoRamBase = RequestedAddress->RequestedVirtualAddress;
+#ifndef VBOX_WITH_HGSMI
     MapInformation->VideoRamLength = DeviceExtension->pPrimary->u.primary.ulMaxFrameBufferSize
                                      + DeviceExtension->pPrimary->u.primary.ulDisplayInformationSize;
+#else
+    MapInformation->VideoRamLength = DeviceExtension->pPrimary->u.primary.ulMaxFrameBufferSize;
+#endif /* VBOX_WITH_HGSMI */
 
     Status = VideoPortMapMemory(DeviceExtension, FrameBuffer,
Index: /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h
===================================================================
--- /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h	(revision 17664)
+++ /trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.h	(revision 17665)
@@ -117,7 +117,9 @@
            ULONG ulMaxFrameBufferSize;         /* The size of the VRAM allocated for the a single framebuffer. */
            
+#ifndef VBOX_WITH_HGSMI
            ULONG ulDisplayInformationSize;     /* The size of the Display information, which is at offset:
                                                 * ulFrameBufferOffset + ulMaxFrameBufferSize.
                                                 */
+#endif /* !VBOX_WITH_HGSMI */
            
 #ifdef VBOX_WITH_HGSMI
