VirtualBox

Changeset 3586 in vbox


Ignore:
Timestamp:
Jul 12, 2007 2:38:12 PM (18 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
22835
Message:

Added request for generic guest capability reporting

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxGuest.h

    r3585 r3586  
    136136    VMMDevReq_GetHeightReduction         = 53,
    137137    VMMDevReq_GetDisplayChangeRequest2   = 54,
     138    VMMDevReq_ReportGuestCapabilities    = 55,
    138139#ifdef VBOX_HGCM
    139140    VMMDevReq_HGCMConnect                = 60,
     
    260261    uint32_t build;
    261262} VMMDevReqHostVersion;
     263
     264/** guest capabilites structure */
     265typedef struct
     266{
     267    /** header */
     268    VMMDevRequestHeader header;
     269    /** capabilities (VMMDEV_GUEST_*) */
     270    uint32_t    caps;
     271} VMMDevReqGuestCapabilities;
    262272
    263273/** idle request structure */
     
    11841194        case VMMDevReq_GetHeightReduction:
    11851195            return sizeof(VMMDevGetHeightReductionRequest);
     1196        case VMMDevReq_ReportGuestCapabilities:
     1197            return sizeof(VMMDevReqGuestCapabilities);
    11861198#ifdef VBOX_HGCM
    11871199        case VMMDevReq_HGCMConnect:
  • trunk/src/VBox/Devices/VMMDev/VBoxDev.cpp

    r3565 r3586  
    499499                    requestHeader->rc = VERR_VERSION_MISMATCH;
    500500                }
     501            }
     502            break;
     503        }
     504
     505        /* Report guest capabilities */
     506        case VMMDevReq_ReportGuestCapabilities:
     507        {
     508            if (requestHeader->size != sizeof(VMMDevReqGuestCapabilities))
     509            {
     510                AssertMsgFailed(("VMMDev guest caps structure has invalid size!\n"));
     511                requestHeader->rc = VERR_INVALID_PARAMETER;
     512            }
     513            else
     514            {
     515                VMMDevReqGuestCapabilities *guestCaps = (VMMDevReqGuestCapabilities*)requestHeader;
     516
     517                if (pData->guestCaps != guestCaps->caps)
     518                {
     519                    /* make a copy of supplied information */
     520                    pData->guestCaps = guestCaps->caps;
     521
     522                    pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, guestCaps->caps);
     523                }
     524                requestHeader->rc = VINF_SUCCESS;
    501525            }
    502526            break;
     
    15891613
    15901614
    1591 #define VMMDEV_SSM_VERSION 3
     1615#define VMMDEV_SSM_VERSION  4
    15921616
    15931617/**
     
    16181642    SSMR3PutU32(pSSMHandle, pData->u32VideoAccelEnabled);
    16191643
     1644    SSMR3PutU32(pSSMHandle, pData->guestCaps);
     1645
    16201646#ifdef VBOX_HGCM
    16211647    vmmdevHGCMSaveState (pData, pSSMHandle);
     
    16551681    SSMR3GetU32(pSSMHandle, &pData->u32VideoAccelEnabled);
    16561682
     1683    SSMR3GetU32(pSSMHandle, &pData->guestCaps);
     1684
    16571685#ifdef VBOX_HGCM
    16581686    vmmdevHGCMLoadState (pData, pSSMHandle);
     
    16791707        pData->pDrv->pfnUpdateGuestVersion(pData->pDrv, &pData->guestInfo);
    16801708    }
     1709    pData->pDrv->pfnUpdateGuestCapabilities(pData->pDrv, pData->guestCaps);
    16811710
    16821711    return VINF_SUCCESS;
     
    19121941    pData->fu32AdditionsOk = false;
    19131942    memset (&pData->guestInfo, 0, sizeof (pData->guestInfo));
     1943    pData->guestCaps = 0;
    19141944
    19151945    memset (&pData->lastReadDisplayChangeRequest, 0, sizeof (pData->lastReadDisplayChangeRequest));
  • trunk/src/VBox/Devices/VMMDev/VMMDevState.h

    r3379 r3586  
    9696    VBoxGuestInfo guestInfo;
    9797
     98    /** Information reported by guest via VMMDevReportGuestCapabilities
     99     */
     100    uint32_t      guestCaps;
     101
    98102    /** "Additions are Ok" indicator, set to true after processing VMMDevReportGuestInfo,
    99103     * if additions version is compatible. This flag is here to avoid repeated comparing
Note: See TracChangeset for help on using the changeset viewer.

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