VirtualBox

Changeset 76143 in vbox for trunk/src/VBox/HostServices


Ignore:
Timestamp:
Dec 10, 2018 9:24:46 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
127388
Message:

SharedFolders,os2/VBoxSF: Added SHFL_FN_SET_FILE_SIZE for setting the file size without needing to passing an mostly unused buffer (SHFLOBJINFO). Deprecated most of VbglR0SfXxxx and continued hacking on replacements using OS/2 as testbed. bugref:9172

Location:
trunk/src/VBox/HostServices/SharedFolders
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/HostServices/SharedFolders/service.cpp

    r75993 r76143  
    9191static STAMPROFILE g_StatFlushFail;
    9292static STAMPROFILE g_StatSetUtf8;
     93static STAMPROFILE g_StatSetFileSize;
     94static STAMPROFILE g_StatSetFileSizeFail;
    9395static STAMPROFILE g_StatSymlink;
    9496static STAMPROFILE g_StatSymlinkFail;
     
    14971499            /* Execute the function: */
    14981500            rc = vbsfMappingsCancelChangesWaits(pClient);
     1501            break;
     1502        }
     1503
     1504        case SHFL_FN_SET_FILE_SIZE:
     1505        {
     1506            pStat     = &g_StatSetFileSize;
     1507            pStatFail = &g_StatSetFileSizeFail;
     1508            Log(("SharedFolders host service: svcCall: SHFL_FN_SET_FILE_SIZE\n"));
     1509
     1510            /* Validate input: */
     1511            ASSERT_GUEST_STMT_BREAK(cParms == SHFL_CPARMS_SET_FILE_SIZE,         rc = VERR_WRONG_PARAMETER_COUNT);
     1512            ASSERT_GUEST_STMT_BREAK(paParms[0].type == VBOX_HGCM_SVC_PARM_32BIT, rc = VERR_WRONG_PARAMETER_TYPE); /* id32Root */
     1513            ASSERT_GUEST_STMT_BREAK(paParms[1].type == VBOX_HGCM_SVC_PARM_64BIT, rc = VERR_WRONG_PARAMETER_TYPE); /* u64Handle */
     1514            ASSERT_GUEST_STMT_BREAK(paParms[2].type == VBOX_HGCM_SVC_PARM_64BIT, rc = VERR_WRONG_PARAMETER_TYPE); /* cb64NewSize */
     1515
     1516            /* Execute the function: */
     1517            rc = vbsfSetFileSize(pClient, paParms[0].u.uint32, paParms[1].u.uint64, paParms[2].u.uint64);
    14991518            break;
    15001519        }
  • trunk/src/VBox/HostServices/SharedFolders/vbsf.cpp

    r75993 r76143  
    3030#include "shflhandle.h"
    3131
     32#include <VBox/AssertGuest.h>
    3233#include <iprt/alloc.h>
    3334#include <iprt/assert.h>
     
    15831584
    15841585
     1586/**
     1587 * Handles SHFL_FN_SET_FILE_SIZE.
     1588 */
     1589int vbsfSetFileSize(SHFLCLIENTDATA *pClient, SHFLROOT idRoot, SHFLHANDLE hHandle, uint64_t cbNewSize)
     1590{
     1591    /*
     1592     * Resolve handle and validate write access.
     1593     */
     1594    SHFLFILEHANDLE *pHandle = vbsfQueryFileHandle(pClient, hHandle);
     1595    ASSERT_GUEST_RETURN(pHandle, VERR_INVALID_HANDLE);
     1596
     1597    int rc = vbsfCheckHandleAccess(pClient, idRoot, pHandle, VBSF_CHECK_ACCESS_WRITE);
     1598    if (RT_SUCCESS(rc))
     1599    {
     1600        /*
     1601         * Execute the request.
     1602         */
     1603        rc = RTFileSetSize(pHandle->file.Handle, cbNewSize);
     1604    }
     1605    return rc;
     1606}
     1607
     1608
    15851609static int vbsfSetEndOfFile(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, uint32_t flags,
    15861610                            uint32_t *pcbBuffer, uint8_t *pBuffer)
  • trunk/src/VBox/HostServices/SharedFolders/vbsf.h

    r75407 r76143  
    3434int vbsfDirList(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, SHFLSTRING *pPath, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer, uint32_t *pIndex, uint32_t *pcFiles);
    3535int vbsfFileInfo(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer);
     36int vbsfSetFileSize(SHFLCLIENTDATA *pClient, SHFLROOT idRoot, SHFLHANDLE hHandle, uint64_t cbNewSize);
    3637int vbsfQueryFSInfo(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer);
    3738int vbsfSetFSInfo(SHFLCLIENTDATA *pClient, SHFLROOT root, SHFLHANDLE Handle, uint32_t flags, uint32_t *pcbBuffer, uint8_t *pBuffer);
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