VirtualBox

Ignore:
Timestamp:
Feb 24, 2023 8:49:40 AM (2 years ago)
Author:
vboxsync
Message:

Guest Control: Implemented directory handling / walking as non-toolbox variants. bugref:9783

File:
1 edited

Legend:

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

    r98665 r98709  
    10091009        VbglHGCMParmUInt32Set(&Msg.context, HOST_MSG_DIR_OPEN);
    10101010        VbglHGCMParmPtrSet(&Msg.path, pszPath, cbPath);
    1011         VbglHGCMParmUInt64Set(&Msg.flags, 0);
    1012         VbglHGCMParmUInt64Set(&Msg.filter, 0);
     1011        VbglHGCMParmUInt32Set(&Msg.filter, 0);
     1012        VbglHGCMParmUInt32Set(&Msg.flags, 0);
    10131013
    10141014        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     
    10161016        {
    10171017            Msg.context.GetUInt32(&pCtx->uContextID);
     1018            Msg.filter.GetUInt32((uint32_t *)penmFilter);
    10181019            Msg.flags.GetUInt32(pfFlags);
    1019             Msg.filter.GetUInt32((uint32_t *)penmFilter);
    10201020        }
    10211021    } while (rc == VERR_INTERRUPTED && g_fVbglR3GuestCtrlHavePeekGetCancel);
     
    10441044        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, vbglR3GuestCtrlGetMsgFunctionNo(pCtx->uClientID), pCtx->uNumParms);
    10451045        VbglHGCMParmUInt32Set(&Msg.context, HOST_MSG_DIR_CLOSE);
    1046         VbglHGCMParmUInt64Set(&Msg.handle, 0);
     1046        VbglHGCMParmUInt32Set(&Msg.handle, 0);
    10471047
    10481048        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     
    10711071{
    10721072    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
    1073     AssertReturn(pCtx->uNumParms == 4, VERR_INVALID_PARAMETER);
     1073    AssertReturn(pCtx->uNumParms == 5, VERR_INVALID_PARAMETER);
    10741074
    10751075    AssertPtrReturn(puHandle, VERR_INVALID_POINTER);
     
    10841084        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, vbglR3GuestCtrlGetMsgFunctionNo(pCtx->uClientID), pCtx->uNumParms);
    10851085        VbglHGCMParmUInt32Set(&Msg.context, HOST_MSG_DIR_READ);
    1086         VbglHGCMParmUInt64Set(&Msg.handle, 0);
    1087         VbglHGCMParmUInt32Set(&Msg.entry_size, 0);
     1086        VbglHGCMParmUInt32Set(&Msg.handle, 0);
     1087        VbglHGCMParmUInt32Set(&Msg.max_entry_size, 0);
    10881088        VbglHGCMParmUInt32Set(&Msg.add_attributes, 0);
    10891089        VbglHGCMParmUInt32Set(&Msg.flags, 0);
     
    10941094            Msg.context.GetUInt32(&pCtx->uContextID);
    10951095            Msg.handle.GetUInt32(puHandle);
    1096             Msg.entry_size.GetUInt32(pcbDirEntry);
     1096            Msg.max_entry_size.GetUInt32(pcbDirEntry);
    10971097            Msg.add_attributes.GetUInt32(penmAddAttrib);
    10981098            Msg.flags.GetUInt32(pfFlags);
     
    22362236
    22372237    HGCMReplyDirNotify Msg;
    2238     VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_DIR_NOTIFY,
    2239                        RT_SUCCESS((int)uRc) ? GSTCTL_HGCM_REPLY_HDR_PARMS + 1 : GSTCTL_HGCM_REPLY_HDR_PARMS);
     2238    VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_DIR_NOTIFY, GSTCTL_HGCM_REPLY_HDR_PARMS + 1);
    22402239    VbglHGCMParmUInt32Set(&Msg.reply_hdr.context, pCtx->uContextID);
    22412240    VbglHGCMParmUInt32Set(&Msg.reply_hdr.type, GUEST_DIR_NOTIFYTYPE_OPEN);
    22422241    VbglHGCMParmUInt32Set(&Msg.reply_hdr.rc, uRc);
    22432242
    2244     if (RT_SUCCESS((int)uRc))
    2245         VbglHGCMParmUInt32Set(&Msg.u.open.handle, uDirHandle);
     2243    VbglHGCMParmUInt32Set(&Msg.u.open.handle, uDirHandle);
    22462244
    22472245    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyDirNotify, u.open));
     
    22662264    VbglHGCMParmUInt32Set(&Msg.reply_hdr.rc, uRc);
    22672265
    2268     return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyDirNotify, u));
     2266    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyDirNotify, reply_hdr));
    22692267}
    22702268
     
    22902288{
    22912289    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
    2292     AssertReturn(RT_FAILURE((int)uRc) || pszUser, VERR_INVALID_POINTER);
    2293     AssertReturn(RT_FAILURE((int)uRc) || pszGroups, VERR_INVALID_POINTER);
    2294     AssertReturn(RT_FAILURE((int)uRc) || pvACL, VERR_INVALID_POINTER);
    2295     AssertReturn(RT_FAILURE((int)uRc) || cbACL, VERR_INVALID_PARAMETER);
     2290    AssertPtrReturn(pszUser, VERR_INVALID_POINTER);
     2291    AssertPtrReturn(pszGroups, VERR_INVALID_POINTER);
     2292    AssertPtrReturn(pvACL, VERR_INVALID_POINTER);
     2293    AssertReturn(cbACL, VERR_INVALID_PARAMETER);
    22962294
    22972295    HGCMReplyDirNotify Msg;
    2298     VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_DIR_NOTIFY,
    2299                        RT_SUCCESS((int)uRc) ? GSTCTL_HGCM_REPLY_HDR_PARMS + 4 : GSTCTL_HGCM_REPLY_HDR_PARMS);
     2296    VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_DIR_NOTIFY, GSTCTL_HGCM_REPLY_HDR_PARMS + 4);
    23002297    VbglHGCMParmUInt32Set(&Msg.reply_hdr.context, pCtx->uContextID);
    23012298    VbglHGCMParmUInt32Set(&Msg.reply_hdr.type, GUEST_DIR_NOTIFYTYPE_READ);
    23022299    VbglHGCMParmUInt32Set(&Msg.reply_hdr.rc, uRc);
    23032300
    2304     if (RT_SUCCESS((int)uRc))
    2305     {
    2306         VbglHGCMParmPtrSet(&Msg.u.read.entry, pEntry, cbSize);
    2307         VbglHGCMParmPtrSetString(&Msg.u.read.user,   pszUser);
    2308         VbglHGCMParmPtrSetString(&Msg.u.read.groups, pszGroups);
    2309         VbglHGCMParmPtrSet      (&Msg.u.read.acl,    pvACL, cbACL);
    2310     }
     2301    VbglHGCMParmPtrSet      (&Msg.u.read.entry,   pEntry, cbSize);
     2302    VbglHGCMParmPtrSetString(&Msg.u.read.user,    pszUser);
     2303    VbglHGCMParmPtrSetString(&Msg.u.read.groups,  pszGroups);
     2304    VbglHGCMParmPtrSet      (&Msg.u.read.acl,     pvACL, cbACL);
    23112305
    23122306    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyDirNotify, u.read));
     
    23272321VBGLR3DECL(int) VbglR3GuestCtrlDirCbRead(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, PGSTCTLDIRENTRYEX pEntry, uint32_t cbSize)
    23282322{
    2329     char szIgnored[1];
     2323    char szIgnored[1] = { 0 };
    23302324    return VbglR3GuestCtrlDirCbReadEx(pCtx, uRc, pEntry, cbSize, szIgnored /* pszUser */, szIgnored /* pszGroups */,
    23312325                                      szIgnored /* pvACL */, sizeof(szIgnored) /* cbACL */);
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