PVIDEO_PALETTE_DATA PaletteBuffer,
ULONG PaletteBufferSize
);
-
+
VP_STATUS
VgaSetColorLookup(
PHW_DEVICE_EXTENSION HwDeviceExtension,
case IOCTL_VIDEO_QUERY_PUBLIC_ACCESS_RANGES:
{
- VideoDebugPrint((2, "VgaStartIO - Query Public Address Ranges\n"));
-
PVIDEO_PUBLIC_ACCESS_RANGES portAccess;
ULONG physicalPortLength;
+ VideoDebugPrint((2, "VgaStartIO - Query Public Address Ranges\n"));
+
if (RequestPacket->OutputBufferLength <
sizeof(VIDEO_PUBLIC_ACCESS_RANGES))
{
// eVb: 1.17 [END]
VideoDebugPrint((2, "VgaStartIO - mapping ports to (%x)\n", portAccess->VirtualAddress));
}
-
+
break;
case IOCTL_VIDEO_FREE_PUBLIC_ACCESS_RANGES:
status = ERROR_INVALID_FUNCTION;
break;
-
+
//
// if we get here, an invalid IoControlCode was specified.
//
{
PVIDEOMODE CurrentMode = HwDeviceExtension->CurrentMode;
USHORT i;
-
+
//
// Check if the size of the data in the input buffer is large enough.
//
//
// Check SVGA mode
//
-
+
if (CurrentMode->bitsPerPlane >= 8) return VbeSetColorLookup(HwDeviceExtension, ClutBuffer);
-// eVb: 1.14 [END]
+// eVb: 1.14 [END]
//
// Path for VGA mode
//
{
VP_STATUS Status = NO_ERROR;
ULONG Ranges, i;
-
+
//
// Try exclusive ranges (vga + ati)
//
-
+
Ranges = NUM_VGA_ACCESS_RANGES;
for (i = 0; i < Ranges; i++) VgaAccessRange[i].RangeShareable = FALSE;
if (VideoPortVerifyAccessRanges(DeviceExtension, Ranges, VgaAccessRange) != NO_ERROR)
//
// Not worked, try vga only
//
-
+
Ranges = 3;
if (VideoPortVerifyAccessRanges(DeviceExtension, Ranges, VgaAccessRange) != NO_ERROR)
{
//
// Still not, try shared ranges
//
-
+
for (i = 0; i < Ranges; i++) VgaAccessRange[i].RangeShareable = TRUE;
Status = VideoPortVerifyAccessRanges(DeviceExtension, Ranges, VgaAccessRange);
if (Status == NO_ERROR)
//
// It did work
//
-
+
VideoPortVerifyAccessRanges(DeviceExtension, 0, 0);
Status = NO_ERROR;
}
//
// Worked with exclusive, also try shared
//
-
+
for (i = 0; i < Ranges; i++) VgaAccessRange[i].RangeShareable = TRUE;
Status = VideoPortVerifyAccessRanges(DeviceExtension, Ranges, VgaAccessRange);
}