VirtualBox

Changeset 84996 in vbox for trunk


Ignore:
Timestamp:
Jun 29, 2020 4:21:34 PM (4 years ago)
Author:
vboxsync
Message:

Shared Clipboard/Transfers: Removed some superfluous HGCM parameters. Untested.

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/HostServices/VBoxClipboardSvc.h

    r83621 r84996  
    828828
    829829/**
    830  * Status messag for lists and objects.
     830 * Status message for lists and objects.
    831831 */
    832832typedef struct _VBoxShClStatusMsg
     
    838838    /** uint32_t, in: Transfer status of type SHCLTRANSFERSTATUS. */
    839839    HGCMFunctionParameter uStatus;
    840     /** uint32_t, in: Size of payload of this status, based on the status type. */
    841     HGCMFunctionParameter cbPayload;
    842840    /** pointer, in: Optional payload of this status, based on the status type. */
    843841    HGCMFunctionParameter pvPayload;
    844842} VBoxShClStatusMsg;
    845843
    846 #define VBOX_SHCL_CPARMS_STATUS 4
     844#define VBOX_SHCL_CPARMS_STATUS 3
    847845
    848846/** Invalid message type, do not use. */
     
    872870    /** uint32_t, out: IPRT result of overall operation. */
    873871    HGCMFunctionParameter rc;
    874     /** uint32_t, out: Size of optional payload of this reply, based on the message type. */
    875     HGCMFunctionParameter cbPayload;
    876872    /** pointer, out: Optional payload of this reply, based on the message type. */
    877873    HGCMFunctionParameter pvPayload;
     
    898894
    899895/** Minimum parameters (HGCM function parameters minus the union) a reply message must have. */
    900 #define VBOX_SHCL_CPARMS_REPLY_MIN 5
     896#define VBOX_SHCL_CPARMS_REPLY_MIN 4
    901897
    902898/**
     
    911907} VBoxShClRootListParms;
    912908
     909#define VBOX_SHCL_CPARMS_ROOT_LIST 2
     910
    913911/**
    914912 * Requests to read the root list header.
     
    921919} VBoxShClRootListReadReqMsg;
    922920
    923 #define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_READ_REQ 2
     921#define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_READ_REQ VBOX_SHCL_CPARMS_ROOT_LIST
    924922
    925923/**
     
    935933} VBoxShClRootListHdrMsg;
    936934
    937 #define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_READ  3
    938 #define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_WRITE 3
     935#define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_READ  VBOX_SHCL_CPARMS_ROOT_LIST + 1
     936#define VBOX_SHCL_CPARMS_ROOT_LIST_HDR_WRITE VBOX_SHCL_CPARMS_ROOT_LIST + 1
    939937
    940938/**
     
    951949} VBoxShClRootListEntryParms;
    952950
     951#define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY 3
     952
    953953/**
    954954 * Request to read a list root entry.
     
    962962} VBoxShClRootListEntryReadReqMsg;
    963963
    964 #define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_READ_REQ 3
     964#define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_READ_REQ VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY
    965965
    966966/**
     
    982982} VBoxShClRootListEntryMsg;
    983983
    984 #define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_READ  6
    985 #define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_WRITE 6
     984#define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_READ  VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY + 3
     985#define VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY_WRITE VBOX_SHCL_CPARMS_ROOT_LIST_ENTRY + 3
    986986
    987987/**
     
    996996    /** uint32_t, in: Listing flags (see VBOX_SHCL_LIST_FLAG_XXX). */
    997997    HGCMFunctionParameter fList;
    998     /** uint32_t, in: Size (in bytes) of the filter string. */
    999     HGCMFunctionParameter cbFilter;
    1000998    /** pointer, in: Filter string. */
    1001999    HGCMFunctionParameter pvFilter;
    1002     /** uint32_t, in: Size (in bytes) of the listing path. */
    1003     HGCMFunctionParameter cbPath;
    10041000    /** pointer, in: Listing poth. If empty or NULL the listing's root path will be opened. */
    10051001    HGCMFunctionParameter pvPath;
     
    10081004} VBoxShClListOpenMsg;
    10091005
    1010 #define VBOX_SHCL_CPARMS_LIST_OPEN 7
     1006#define VBOX_SHCL_CPARMS_LIST_OPEN 5
    10111007
    10121008/**
     
    10351031} VBoxShClListHdrReqParms;
    10361032
     1033#define VBOX_SHCL_CPARMS_LIST_HDR_REQ 3
     1034
    10371035/**
    10381036 * Request to read a list header.
     
    10451043} VBoxShClListHdrReadReqMsg;
    10461044
    1047 #define VBOX_SHCL_CPARMS_LIST_HDR_READ_REQ 3
     1045#define VBOX_SHCL_CPARMS_LIST_HDR_READ_REQ VBOX_SHCL_CPARMS_LIST_HDR_REQ
    10481046
    10491047/**
     
    10571055    /** uint32_t, in/out: Feature flags (see VBOX_SHCL_FEATURE_FLAG_XXX). */
    10581056    HGCMFunctionParameter   fFeatures;
    1059     /** uint64_t, in/out:  Number of total objects to transfer. */
     1057    /** uint64_t, in/out: Number of total objects to transfer. */
    10601058    HGCMFunctionParameter   cTotalObjects;
    1061     /** uint64_t, in/out:  Number of total bytes to transfer. */
     1059    /** uint64_t, in/out: Number of total bytes to transfer. */
    10621060    HGCMFunctionParameter   cbTotalSize;
    10631061} VBoxShClListHdrMsg;
    10641062
    1065 #define VBOX_SHCL_CPARMS_LIST_HDR 6
     1063#define VBOX_SHCL_CPARMS_LIST_HDR VBOX_SHCL_CPARMS_LIST_HDR_REQ + 3
    10661064
    10671065typedef struct _VBoxShClListEntryReqParms
     
    10751073} VBoxShClListEntryReqParms;
    10761074
     1075#define VBOX_SHCL_CPARMS_LIST_ENTRY_REQ 3
     1076
    10771077/**
    10781078 * Request to read a list entry.
     
    10851085} VBoxShClListEntryReadReqMsg;
    10861086
    1087 #define VBOX_SHCL_CPARMS_LIST_ENTRY_READ 3
     1087#define VBOX_SHCL_CPARMS_LIST_ENTRY_READ VBOX_SHCL_CPARMS_LIST_ENTRY_REQ
    10881088
    10891089/**
     
    10971097    VBoxShClListEntryReqParms ReqParms;
    10981098    /** pointer, in/out: Entry name. */
    1099     HGCMFunctionParameter          szName;
     1099    HGCMFunctionParameter     szName;
    11001100    /** uint32_t, out: Bytes to be used for information/How many bytes were used.  */
    1101     HGCMFunctionParameter          cbInfo;
     1101    HGCMFunctionParameter     cbInfo;
    11021102    /** pointer, in/out: Information to be set/get (SHCLFSOBJINFO only currently).
    11031103     *  Do not forget to set the SHCLFSOBJINFO::Attr::enmAdditional for Get operation as well.  */
    1104     HGCMFunctionParameter          pvInfo;
     1104    HGCMFunctionParameter     pvInfo;
    11051105} VBoxShClListEntryMsg;
    11061106
    1107 #define VBOX_SHCL_CPARMS_LIST_ENTRY 6
     1107#define VBOX_SHCL_CPARMS_LIST_ENTRY VBOX_SHCL_CPARMS_LIST_ENTRY_REQ + 3
    11081108
    11091109/**
     
    11161116    /** uint64_t, in/out: Context ID. */
    11171117    HGCMFunctionParameter uContext;
    1118     /** uint64_t, in/out: Object handle. */
     1118    /** uint64_t, out: Object handle. */
    11191119    HGCMFunctionParameter uHandle;
    1120     /** uint32_t, in/out: Size (in bytes) of absoulte path of object to open/create. */
    1121     HGCMFunctionParameter cbPath;
    1122     /** pointer, in/out: Absoulte path of object to open/create. */
     1120    /** pointer, in: Absoulte path of object to open/create. */
    11231121    HGCMFunctionParameter szPath;
    1124     /** uint32_t in/out: Open / Create flags of type SHCL_OBJ_CF_. */
     1122    /** uint32_t in: Open / Create flags of type SHCL_OBJ_CF_. */
    11251123    HGCMFunctionParameter fCreate;
    11261124} VBoxShClObjOpenMsg;
    11271125
    1128 #define VBOX_SHCL_CPARMS_OBJ_OPEN 5
     1126#define VBOX_SHCL_CPARMS_OBJ_OPEN 4
    11291127
    11301128/**
     
    11851183    /** uint64_t, in/out: SHCLOBJHANDLE of object to write to. */
    11861184    HGCMFunctionParameter uHandle;
    1187     /** uint32_t, in/out: Size (in bytes) of current data chunk. */
     1185    /** uint32_t, out: Size (in bytes) read/written. */
    11881186    HGCMFunctionParameter cbData;
    11891187    /** pointer, in/out: Current data chunk. */
  • trunk/src/VBox/Additions/common/VBoxGuest/lib/VBoxGuestR3LibClipboard.cpp

    r84733 r84996  
    817817    Msg.enmType.SetUInt32(VBOX_SHCL_REPLYMSGTYPE_TRANSFER_STATUS);
    818818    Msg.rc.SetUInt32((uint32_t )rcTransfer); /* int vs. uint32_t */
    819     Msg.cbPayload.SetUInt32(0);
    820819    Msg.pvPayload.SetPtr(NULL, 0);
    821820
     
    986985    Msg.uContext.SetUInt64(pCtx->idContext);
    987986    Msg.fList.SetUInt32(0);
    988     Msg.cbFilter.SetUInt32(pOpenParms->cbFilter);
    989987    Msg.pvFilter.SetPtr(pOpenParms->pszFilter, pOpenParms->cbFilter);
    990     Msg.cbPath.SetUInt32(pOpenParms->cbPath);
    991988    Msg.pvPath.SetPtr(pOpenParms->pszPath, pOpenParms->cbPath);
    992989    Msg.uHandle.SetUInt64(0);
     
    10221019    Msg.uContext.SetUInt64(VBOX_SHCL_HOST_MSG_TRANSFER_LIST_OPEN);
    10231020    Msg.fList.SetUInt32(0);
    1024     Msg.cbPath.SetUInt32(pOpenParms->cbPath);
    10251021    Msg.pvPath.SetPtr(pOpenParms->pszPath, pOpenParms->cbPath);
    1026     Msg.cbFilter.SetUInt32(pOpenParms->cbFilter);
    10271022    Msg.pvFilter.SetPtr(pOpenParms->pszFilter, pOpenParms->cbFilter);
    10281023    Msg.uHandle.SetUInt64(0);
     
    10341029        if (RT_SUCCESS(rc))
    10351030            rc = Msg.fList.GetUInt32(&pOpenParms->fList);
    1036         if (RT_SUCCESS(rc))
    1037             rc = Msg.cbFilter.GetUInt32(&pOpenParms->cbFilter);
    1038         if (RT_SUCCESS(rc))
    1039             rc = Msg.cbPath.GetUInt32(&pOpenParms->cbPath);
    10401031    }
    10411032
     
    10651056    Msg.enmType.SetUInt32(VBOX_SHCL_REPLYMSGTYPE_LIST_OPEN);
    10661057    Msg.rc.SetUInt32((uint32_t)rcReply); /** int vs. uint32_t */
    1067     Msg.cbPayload.SetUInt32(0);
    10681058    Msg.pvPayload.SetPtr(NULL, 0);
    10691059
     
    11301120    Msg.enmType.SetUInt32(VBOX_SHCL_REPLYMSGTYPE_LIST_CLOSE);
    11311121    Msg.rc.SetUInt32((uint32_t)rcReply); /** int vs. uint32_t */
    1132     Msg.cbPayload.SetUInt32(0);
    11331122    Msg.pvPayload.SetPtr(NULL, 0);
    11341123
     
    14141403    Msg.uContext.SetUInt64(VBOX_SHCL_HOST_MSG_TRANSFER_OBJ_OPEN);
    14151404    Msg.uHandle.SetUInt64(0);
    1416     Msg.cbPath.SetUInt32(pCreateParms->cbPath);
    14171405    Msg.szPath.SetPtr(pCreateParms->pszPath, pCreateParms->cbPath);
    14181406    Msg.fCreate.SetUInt32(0);
     
    14221410    {
    14231411        rc = Msg.uContext.GetUInt64(&pCtx->idContext);
    1424         if (RT_SUCCESS(rc))
    1425             rc = Msg.cbPath.GetUInt32(&pCreateParms->cbPath);
    14261412        if (RT_SUCCESS(rc))
    14271413            rc = Msg.fCreate.GetUInt32(&pCreateParms->fCreate);
     
    14531439    Msg.enmType.SetUInt32(VBOX_SHCL_REPLYMSGTYPE_OBJ_OPEN);
    14541440    Msg.rc.SetUInt32((uint32_t)rcReply); /** int vs. uint32_t */
    1455     Msg.cbPayload.SetUInt32(0);
    14561441    Msg.pvPayload.SetPtr(NULL, 0);
    14571442
     
    14871472    Msg.uContext.SetUInt64(pCtx->idContext);
    14881473    Msg.uHandle.SetUInt64(0);
    1489     Msg.cbPath.SetUInt32(pCreateParms->cbPath);
    14901474    Msg.szPath.SetPtr((void *)pCreateParms->pszPath, pCreateParms->cbPath);
    14911475    Msg.fCreate.SetUInt32(pCreateParms->fCreate);
     
    15551539    Msg.enmType.SetUInt32(VBOX_SHCL_REPLYMSGTYPE_OBJ_CLOSE);
    15561540    Msg.rc.SetUInt32((uint32_t)rcReply); /** int vs. uint32_t */
    1557     Msg.cbPayload.SetUInt32(0);
    15581541    Msg.pvPayload.SetPtr(NULL, 0);
    15591542
     
    17101693    Msg.uHandle.SetUInt64(hObj);
    17111694    Msg.pvData.SetPtr(pvData, cbData);
    1712     Msg.cbData.SetUInt32(cbData);
    17131695    Msg.pvChecksum.SetPtr(NULL, 0);
    1714     Msg.cbChecksum.SetUInt32(0);
    17151696
    17161697    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
  • trunk/src/VBox/HostServices/SharedClipboard/VBoxSharedClipboardSvc-transfers.cpp

    r84142 r84996  
    791791    if (cParms >= VBOX_SHCL_CPARMS_REPLY_MIN)
    792792    {
    793         uint32_t cbPayload = 0;
    794 
    795793        /* aParms[0] has the context ID. */
    796794        rc = HGCMSvcGetU32(&aParms[1], &pReply->uType);
     
    798796            rc = HGCMSvcGetU32(&aParms[2], &pReply->rc);
    799797        if (RT_SUCCESS(rc))
    800             rc = HGCMSvcGetU32(&aParms[3], &cbPayload);
    801         if (RT_SUCCESS(rc))
    802         {
    803             rc = HGCMSvcGetPv(&aParms[4], &pReply->pvPayload, &pReply->cbPayload);
    804             AssertReturn(cbPayload == pReply->cbPayload, VERR_INVALID_PARAMETER);
    805         }
     798            rc = HGCMSvcGetPv(&aParms[3], &pReply->pvPayload, &pReply->cbPayload);
    806799
    807800        if (RT_SUCCESS(rc))
     
    809802            rc = VERR_INVALID_PARAMETER; /* Play safe. */
    810803
     804            const unsigned idxParm = VBOX_SHCL_CPARMS_REPLY_MIN;
     805
    811806            switch (pReply->uType)
    812807            {
    813808                case VBOX_SHCL_REPLYMSGTYPE_TRANSFER_STATUS:
    814809                {
    815                     if (cParms >= 6)
    816                         rc = HGCMSvcGetU32(&aParms[5], &pReply->u.TransferStatus.uStatus);
     810                    if (cParms > idxParm)
     811                        rc = HGCMSvcGetU32(&aParms[idxParm], &pReply->u.TransferStatus.uStatus);
    817812
    818813                    LogFlowFunc(("uTransferStatus=%RU32\n", pReply->u.TransferStatus.uStatus));
     
    822817                case VBOX_SHCL_REPLYMSGTYPE_LIST_OPEN:
    823818                {
    824                     if (cParms >= 6)
    825                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ListOpen.uHandle);
     819                    if (cParms > idxParm)
     820                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ListOpen.uHandle);
    826821
    827822                    LogFlowFunc(("hListOpen=%RU64\n", pReply->u.ListOpen.uHandle));
     
    831826                case VBOX_SHCL_REPLYMSGTYPE_LIST_CLOSE:
    832827                {
    833                     if (cParms >= 6)
    834                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ListClose.uHandle);
     828                    if (cParms > idxParm)
     829                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ListClose.uHandle);
    835830
    836831                    LogFlowFunc(("hListClose=%RU64\n", pReply->u.ListClose.uHandle));
     
    840835                case VBOX_SHCL_REPLYMSGTYPE_OBJ_OPEN:
    841836                {
    842                     if (cParms >= 6)
    843                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ObjOpen.uHandle);
     837                    if (cParms > idxParm)
     838                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ObjOpen.uHandle);
    844839
    845840                    LogFlowFunc(("hObjOpen=%RU64\n", pReply->u.ObjOpen.uHandle));
     
    849844                case VBOX_SHCL_REPLYMSGTYPE_OBJ_CLOSE:
    850845                {
    851                     if (cParms >= 6)
    852                         rc = HGCMSvcGetU64(&aParms[5], &pReply->u.ObjClose.uHandle);
     846                    if (cParms > idxParm)
     847                        rc = HGCMSvcGetU64(&aParms[idxParm], &pReply->u.ObjClose.uHandle);
    853848
    854849                    LogFlowFunc(("hObjClose=%RU64\n", pReply->u.ObjClose.uHandle));
     
    947942    if (cParms == VBOX_SHCL_CPARMS_LIST_OPEN)
    948943    {
    949         uint32_t cbPath   = 0;
    950         uint32_t cbFilter = 0;
    951 
    952944        rc = HGCMSvcGetU32(&aParms[1], &pOpenParms->fList);
    953945        if (RT_SUCCESS(rc))
    954             rc = HGCMSvcGetU32(&aParms[2], &cbFilter);
    955         if (RT_SUCCESS(rc))
    956         {
    957             rc = HGCMSvcGetStr(&aParms[3], &pOpenParms->pszFilter, &pOpenParms->cbFilter);
    958             AssertReturn(cbFilter == pOpenParms->cbFilter, VERR_INVALID_PARAMETER);
    959         }
    960         if (RT_SUCCESS(rc))
    961             rc = HGCMSvcGetU32(&aParms[4], &cbPath);
    962         if (RT_SUCCESS(rc))
    963         {
    964             rc = HGCMSvcGetStr(&aParms[5], &pOpenParms->pszPath, &pOpenParms->cbPath);
    965             AssertReturn(cbPath == pOpenParms->cbPath, VERR_INVALID_PARAMETER);
    966         }
     946            rc = HGCMSvcGetStr(&aParms[2], &pOpenParms->pszFilter, &pOpenParms->cbFilter);
     947        if (RT_SUCCESS(rc))
     948            rc = HGCMSvcGetStr(&aParms[3], &pOpenParms->pszPath, &pOpenParms->cbPath);
    967949
    968950        /** @todo Some more validation. */
     
    993975        HGCMSvcSetU64(&aParms[0], idCtx);
    994976        HGCMSvcSetU32(&aParms[1], pOpenParms->fList);
    995         HGCMSvcSetU32(&aParms[2], pOpenParms->cbFilter);
    996         HGCMSvcSetPv (&aParms[3], pOpenParms->pszFilter, pOpenParms->cbFilter);
    997         HGCMSvcSetU32(&aParms[4], pOpenParms->cbPath);
    998         HGCMSvcSetPv (&aParms[5], pOpenParms->pszPath, pOpenParms->cbPath);
    999         HGCMSvcSetU64(&aParms[6], 0); /* OUT: uHandle */
     977        HGCMSvcSetPv (&aParms[2], pOpenParms->pszFilter, pOpenParms->cbFilter);
     978        HGCMSvcSetPv (&aParms[3], pOpenParms->pszPath, pOpenParms->cbPath);
     979        HGCMSvcSetU64(&aParms[4], 0); /* OUT: uHandle */
    1000980
    1001981        rc = VINF_SUCCESS;
     
    16231603            RT_ZERO(openCreateParms);
    16241604
    1625             uint32_t cbPath;
    1626             rc = HGCMSvcGetU32(&aParms[2], &cbPath); /** @todo r=bird: This is an pointless parameter. */
    1627             if (RT_SUCCESS(rc))
    1628             {
    1629                 /** @todo r=bird: This is the wrong way of getting a string!   */
    1630                 rc = HGCMSvcGetPv(&aParms[3], (void **)&openCreateParms.pszPath, &openCreateParms.cbPath);
    1631                 if (cbPath != openCreateParms.cbPath)
    1632                     rc = VERR_INVALID_PARAMETER;
    1633             }
    1634             if (RT_SUCCESS(rc))
    1635                 rc = HGCMSvcGetU32(&aParms[4], &openCreateParms.fCreate);
     1605            /* aParms[1] will return the object handle on success; see below. */
     1606            rc = HGCMSvcGetStr(&aParms[2], &openCreateParms.pszPath, &openCreateParms.cbPath);
     1607            if (RT_SUCCESS(rc))
     1608                rc = HGCMSvcGetU32(&aParms[3], &openCreateParms.fCreate);
    16361609
    16371610            if (RT_SUCCESS(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