VirtualBox

Changeset 80968 in vbox for trunk/src/VBox/Additions/common


Ignore:
Timestamp:
Sep 24, 2019 11:40:42 AM (5 years ago)
Author:
vboxsync
Message:

Shared Clipboard/VbglR3: Fixes for legacy protocol handling.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp

    r80918 r80968  
    172172                           VBOX_SHCL_GUEST_FN_MSG_GET, 3);
    173173
    174         Msg.uContext.SetUInt32(VBOX_SHCL_HOST_MSG_FORMATS_REPORT);
    175         Msg.uFormats.SetUInt32(0);
    176         Msg.fFlags.SetUInt32(0);
    177     }
    178 
    179     int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
    180     if (RT_SUCCESS(rc))
    181     {
    182         rc = Msg.uContext.GetUInt32(&pCtx->uContextID);
    183         if (RT_SUCCESS(rc))
    184             rc = Msg.uFormats.GetUInt32(&pFormats->uFormats);
    185         if (RT_SUCCESS(rc))
    186             rc = Msg.fFlags.GetUInt32(&pFormats->fFlags);
     174        Msg.u.v1.uContext.SetUInt32(VBOX_SHCL_HOST_MSG_FORMATS_REPORT);
     175        Msg.u.v1.uFormats.SetUInt32(0);
     176        Msg.u.v1.fFlags.SetUInt32(0);
     177    }
     178
     179    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     180    if (RT_SUCCESS(rc))
     181    {
     182        rc = Msg.u.v1.uContext.GetUInt32(&pCtx->uContextID);
     183        if (RT_SUCCESS(rc))
     184            rc = Msg.u.v1.uFormats.GetUInt32(&pFormats->uFormats);
     185        if (RT_SUCCESS(rc))
     186            rc = Msg.u.v1.fFlags.GetUInt32(&pFormats->fFlags);
    187187    }
    188188
     
    12901290                 uTransferID,
    12911291                 enmDir    == SHCLTRANSFERDIR_READ ? "reading from" : "writing to",
    1292                  enmSource == SHCLSOURCE_LOCAL     ? "local"   : "remote"));
     1292                 enmSource == SHCLSOURCE_LOCAL     ? "local"        : "remote"));
    12931293    }
    12941294    else
     
    13681368                const SHCLTRANSFERID uTransferID = VBOX_SHCL_CONTEXTID_GET_TRANSFER(pCmdCtx->uContextID);
    13691369
    1370                 LogFlowFunc(("[Transfer %RU16] %s\n", uTransferID, VBoxShClTransferStatusToStr(transferReport.uStatus)));
     1370                LogFlowFunc(("[Transfer %RU16] enmDir=%RU32, status=%s\n",
     1371                             uTransferID, enmDir, VBoxShClTransferStatusToStr(transferReport.uStatus)));
    13711372
    13721373                switch (transferReport.uStatus)
     
    18901891    VBoxShClFormatsMsg Msg;
    18911892
     1893    int rc;
     1894
    18921895    if (pCtx->uProtocolVer == 0)
    18931896    {
    18941897        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 1);
    1895         VbglHGCMParmUInt32Set(&Msg.uFormats, pFormats->uFormats);
     1898        Msg.u.v0.uFormats.SetUInt32(pFormats->uFormats);
     1899
     1900        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
    18961901    }
    18971902    else
     
    18991904        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 3);
    19001905
    1901         Msg.uContext.SetUInt32(pCtx->uContextID);
    1902         Msg.uFormats.SetUInt32(pFormats->uFormats);
    1903         Msg.fFlags.SetUInt32(pFormats->fFlags);
    1904     }
    1905 
    1906     int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     1906        Msg.u.v1.uContext.SetUInt32(pCtx->uContextID);
     1907        Msg.u.v1.uFormats.SetUInt32(pFormats->uFormats);
     1908        Msg.u.v1.fFlags.SetUInt32(pFormats->fFlags);
     1909
     1910        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v1));
     1911    }
    19071912
    19081913    LogFlowFuncLeaveRC(rc);
     
    19241929
    19251930    VBGL_HGCM_HDR_INIT(&Msg.hdr, idClient, VBOX_SHCL_GUEST_FN_FORMATS_REPORT, 1);
    1926     VbglHGCMParmUInt32Set(&Msg.uFormats, fFormats);
    1927 
    1928     return VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     1931    VbglHGCMParmUInt32Set(&Msg.u.v0.uFormats, fFormats);
     1932
     1933    return VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
    19291934}
    19301935
     
    19521957    VbglHGCMParmPtrSet(&Msg.u.v0.ptr, pv, cb);
    19531958
    1954     int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     1959    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg.hdr) + sizeof(Msg.u.v0));
    19551960
    19561961    LogFlowFuncLeaveRC(rc);
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