[ros-diffs] [greatlrd] 49992: implement VBEVideoUnShareVideoMemmory for DdUnlock and DdMapmemmory

greatlrd at svn.reactos.org greatlrd at svn.reactos.org
Thu Dec 9 08:58:47 UTC 2010


Author: greatlrd
Date: Thu Dec  9 08:58:46 2010
New Revision: 49992

URL: http://svn.reactos.org/svn/reactos?rev=49992&view=rev
Log:
implement VBEVideoUnShareVideoMemmory 
for DdUnlock and DdMapmemmory


Modified:
    branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c
    branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.h

Modified: branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c?rev=49992&r1=49991&r2=49992&view=diff
==============================================================================
--- branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c [iso-8859-1] (original)
+++ branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.c [iso-8859-1] Thu Dec  9 08:58:46 2010
@@ -538,6 +538,17 @@
             (PVIDEO_SHARE_MEMORY_INFORMATION)RequestPacket->OutputBuffer,
             RequestPacket->StatusBlock);
          break;
+      case IOCTL_VIDEO_UNSHARE_VIDEO_MEMORY:
+         if (RequestPacket->InputBufferLength < sizeof(VIDEO_SHARE_MEMORY)) 
+         {
+           RequestPacket->StatusBlock->Status = ERROR_INSUFFICIENT_BUFFER;
+           return TRUE;
+         }
+         Result = VBEVideoUnShareVideoMemmory(
+            (PVBE_DEVICE_EXTENSION)HwDeviceExtension,
+            (PVIDEO_SHARE_MEMORY)RequestPacket->InputBufferLength,
+            RequestPacket->StatusBlock);
+         break;
 
       default:
          RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION;
@@ -853,7 +864,7 @@
 }
 
 /*
- * VBEQueryNumAvailModes
+ * VBEVideoShareVideoMemmory
  *
  */
 BOOLEAN FASTCALL
@@ -877,8 +888,8 @@
      */
 
     if ( ((DeviceExtension->ModeInfo[DeviceExtension->CurrentMode].ModeAttributes & VBE_MODEATTR_LINEAR) != VBE_MODEATTR_LINEAR) ||
-         (pShareMemory->ViewOffset > VBEDeviceExtension->VbeInfo.TotalMemory) ||
-         ((pShareMemory->ViewOffset + pShareMemory->ViewSize) > VBEDeviceExtension->VbeInfo.TotalMemory) )
+         (pShareMemory->ViewOffset > DeviceExtension->VbeInfo.TotalMemory) ||
+         ((pShareMemory->ViewOffset + pShareMemory->ViewSize) > DeviceExtension->VbeInfo.TotalMemory) )
     {
         retvalue = FALSE;
     }
@@ -912,9 +923,35 @@
         }
     }
 
-
     return retvalue;
 }
+
+/*
+ * VBEVideoUnShareVideoMemmory
+ *
+ */
+BOOLEAN FASTCALL
+VBEVideoUnShareVideoMemmory(
+   PVBE_DEVICE_EXTENSION DeviceExtension,
+   PVIDEO_SHARE_MEMORY pShareMemory,
+   PSTATUS_BLOCK StatusBlock)
+{
+    BOOLEAN retvalue;
+
+    StatusBlock->Status = VideoPortUnmapMemory( DeviceExtension,
+                                                pShareMemory->RequestedVirtualAddress,
+                                                pShareMemory->ProcessHandle);
+    if (StatusBlock->Status == NO_ERROR)
+    {
+        retvalue = TRUE;
+    }
+    else
+    {
+        retvalue = FALSE;
+    }
+    return retvalue;
+}
+
 /*
  * VBEQueryNumAvailModes
  *
@@ -1091,7 +1128,7 @@
     * For VGA compatible adapters program the color registers directly.
     */
 
-   if (!(DeviceExtension->VbeInfo.Capabilities & 2))
+   if (!(DeviceExtension->VbeInfo.Capabilities & VBE_CHECK_VGA_COMPATIBLE))
    {
       for (Entry = ColorLookUpTable->FirstEntry;
            Entry < ColorLookUpTable->NumEntries + ColorLookUpTable->FirstEntry;

Modified: branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.h
URL: http://svn.reactos.org/svn/reactos/branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.h?rev=49992&r1=49991&r2=49992&view=diff
==============================================================================
--- branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.h [iso-8859-1] (original)
+++ branches/reactx/reactos/drivers/video/miniport/vbe/vbemp.h [iso-8859-1] Thu Dec  9 08:58:46 2010
@@ -101,6 +101,12 @@
 #define VBE_GETRETURNCODE(x) (x & 0xFFFF)
 
 /*
+ * VBE checkflags Codes
+ */
+#define VBE_CHECK_VGA_COMPATIBLE            0x02
+#define VBE_CHECK_STEROSCOPIC_HW_SUPPORT    0x08
+
+/*
  * VBE specification defined structure for general adapter info
  * returned by function VBE_GET_CONTROLLER_INFORMATION command.
  */
@@ -312,3 +318,9 @@
    PVIDEO_SHARE_MEMORY pShareMemory,
    PVIDEO_SHARE_MEMORY_INFORMATION pShareMemoryInformation,
    PSTATUS_BLOCK StatusBlock);
+
+BOOLEAN FASTCALL
+VBEVideoUnShareVideoMemmory(
+   PVBE_DEVICE_EXTENSION DeviceExtension,
+   PVIDEO_SHARE_MEMORY pShareMemory,
+   PSTATUS_BLOCK StatusBlock);




More information about the Ros-diffs mailing list