VirtualBox

Ignore:
Timestamp:
Jul 11, 2007 3:48:34 PM (17 years ago)
Author:
vboxsync
Message:

Implemented IOCTL_VIDEO_VBOX_SETVISIBLEREGION

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/WINNT/Graphics/Miniport/VBoxVideo.cpp

    r3552 r3558  
    14641464        case IOCTL_VIDEO_VBOX_SETVISIBLEREGION:
    14651465        {
    1466             if (RequestPacket->InputBufferLength < sizeof(RTRECT))
     1466            uint32_t cRect = RequestPacket->InputBufferLength/sizeof(RTRECT);
     1467            int      rc;
     1468
     1469            dprintf(("IOCTL_VIDEO_VBOX_SETVISIBLEREGION cRect=%d\n", cRect));
     1470            if (    RequestPacket->InputBufferLength < sizeof(RTRECT)
     1471                ||  RequestPacket->InputBufferLength != cRect*sizeof(RTRECT))
    14671472            {
    14681473                dprintf(("VBoxVideo::IOCTL_VIDEO_VBOX_SETVISIBLEREGION: output buffer too small: %d needed: %d!!!\n",
     
    14711476                return FALSE;
    14721477            }
    1473             break;
     1478            /*
     1479             * Inform the host about the visible region
     1480             */
     1481            VMMDevVideoSetVisibleRegion *req = NULL;
     1482
     1483            rc = VbglGRAlloc ((VMMDevRequestHeader **)&req,
     1484                              sizeof (VMMDevVideoSetVisibleRegion) + (cRect-1)*sizeof(RTRECT),
     1485                              VMMDevReq_VideoSetVisibleRegion);
     1486
     1487            if (VBOX_SUCCESS(rc))
     1488            {
     1489                memcpy(&req->Rect, RequestPacket->InputBuffer, cRect*sizeof(RTRECT));
     1490
     1491                rc = VbglGRPerform (&req->header);
     1492
     1493                if (VBOX_SUCCESS(rc) && VBOX_SUCCESS(req->header.rc))
     1494                {
     1495                    RequestPacket->StatusBlock->Status = NO_ERROR;
     1496                    break;
     1497                }
     1498            }
     1499            dprintf(("VBoxVideo: failed with rc=%x (hdr.rc=%x)\n", rc, req->header.rc));
     1500            RequestPacket->StatusBlock->Status = ERROR_INVALID_FUNCTION;
     1501            return FALSE;
    14741502        }
    14751503
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette