VirtualBox

Ignore:
Timestamp:
Apr 3, 2023 3:17:07 PM (2 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
156645
Message:

Guest Control: Implements IGuestSession::fsQueryInfo() and IGuestSession::fsQueryFreeSpace(). bugref:10414

File:
1 edited

Legend:

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

    r99257 r99262  
    12601260#ifdef VBOX_WITH_GSTCTL_TOOLBOX_AS_CMDS
    12611261/**
     1262 * Retrieves a HOST_MSG_FS_QUERY_INFO message.
     1263 *
     1264 * @returns VBox status code.
     1265 * @param   pCtx                Guest control command context to use.
     1266 * @param   pszPath             Where to return the path of the file system object to query.
     1267 * @param   cbPath              Size (in bytes) of \a pszPath.
     1268 */
     1269VBGLR3DECL(int) VbglR3GuestCtrlFsGetQueryInfo(PVBGLR3GUESTCTRLCMDCTX pCtx, char *pszPath, uint32_t cbPath)
     1270{
     1271    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     1272
     1273    AssertPtrReturn(pszPath, VERR_INVALID_POINTER);
     1274    AssertReturn(cbPath, VERR_INVALID_PARAMETER);
     1275
     1276    int rc;
     1277    do
     1278    {
     1279        HGCMMsgFsQueryInfo Msg;
     1280        VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, vbglR3GuestCtrlGetMsgFunctionNo(pCtx->uClientID), pCtx->uNumParms);
     1281        VbglHGCMParmUInt32Set(&Msg.context, HOST_MSG_FS_QUERY_INFO);
     1282        VbglHGCMParmPtrSet(&Msg.path, pszPath, cbPath);
     1283
     1284        rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     1285        if (RT_SUCCESS(rc))
     1286            Msg.context.GetUInt32(&pCtx->uContextID);
     1287
     1288    } while (rc == VERR_INTERRUPTED && g_fVbglR3GuestCtrlHavePeekGetCancel);
     1289    return rc;
     1290}
     1291
     1292/**
    12621293 * Retrieves a HOST_MSG_FS_OBJ_QUERY_INFO message.
    12631294 *
     
    26832714    VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_FS_NOTIFY, GSTCTL_HGCM_REPLY_HDR_PARMS + 3);
    26842715    VbglHGCMParmUInt32Set(&Msg.reply_hdr.context, pCtx->uContextID);
    2685     VbglHGCMParmUInt32Set(&Msg.reply_hdr.type, GUEST_FS_NOTIFYTYPE_QUERY_INFO);
     2716    VbglHGCMParmUInt32Set(&Msg.reply_hdr.type, GUEST_FS_NOTIFYTYPE_QUERY_OBJ_INFO);
    26862717    VbglHGCMParmUInt32Set(&Msg.reply_hdr.rc, uRc);
    26872718
    2688     VbglHGCMParmPtrSet      (&Msg.u.queryinfo.obj_info, pFsObjInfo, sizeof(GSTCTLFSOBJINFO));
    2689     VbglHGCMParmPtrSetString(&Msg.u.queryinfo.user,   pszUser);
    2690     VbglHGCMParmPtrSetString(&Msg.u.queryinfo.groups, pszGroups);
     2719    VbglHGCMParmPtrSet      (&Msg.u.queryobjinfo.obj_info, pFsObjInfo, sizeof(GSTCTLFSOBJINFO));
     2720    VbglHGCMParmPtrSetString(&Msg.u.queryobjinfo.user,   pszUser);
     2721    VbglHGCMParmPtrSetString(&Msg.u.queryobjinfo.groups, pszGroups);
    26912722
    26922723    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyFsNotify, u.queryinfo));
     
    27322763
    27332764    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyFsNotify, u.createtemp));
     2765}
     2766
     2767/**
     2768 * Replies to a HOST_MSG_FS_QUERY_INFO message.
     2769 *
     2770 * @returns VBox status code.
     2771 * @param   pCtx                Guest control command context to use.
     2772 * @param   uRc                 Guest rc of operation (note: IPRT-style signed int).
     2773 * @param   pFsInfo             File system information to return.
     2774 * @param   cbFsInfo            Size (in bytes) of \a pFsInfo.
     2775 */
     2776VBGLR3DECL(int) VbglR3GuestCtrlFsCbQueryInfo(PVBGLR3GUESTCTRLCMDCTX pCtx, uint32_t uRc, PGSTCTLFSINFO pFsInfo, uint32_t cbFsInfo)
     2777{
     2778    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     2779    AssertPtrReturn(pFsInfo, VERR_INVALID_POINTER);
     2780    AssertReturn(cbFsInfo, VERR_INVALID_PARAMETER);
     2781
     2782    HGCMReplyFsNotify Msg;
     2783    VBGL_HGCM_HDR_INIT(&Msg.reply_hdr.hdr, pCtx->uClientID, GUEST_MSG_FS_NOTIFY, GSTCTL_HGCM_REPLY_HDR_PARMS + 1);
     2784    VbglHGCMParmUInt32Set(&Msg.reply_hdr.context, pCtx->uContextID);
     2785    VbglHGCMParmUInt32Set(&Msg.reply_hdr.type, GUEST_FS_NOTIFYTYPE_QUERY_INFO);
     2786    VbglHGCMParmUInt32Set(&Msg.reply_hdr.rc, uRc);
     2787
     2788    VbglHGCMParmPtrSet(&Msg.u.queryinfo.fs_info, pFsInfo, cbFsInfo);
     2789
     2790    return VbglR3HGCMCall(&Msg.reply_hdr.hdr, RT_UOFFSET_AFTER(HGCMReplyFsNotify, u.queryinfo));
    27342791}
    27352792#endif /* VBOX_WITH_GSTCTL_TOOLBOX_AS_CMDS */
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