VirtualBox

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


Ignore:
Timestamp:
Mar 16, 2018 9:58:05 AM (7 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
121315
Message:

GuestControl: Added and implemented IGuestSession::userHome and IGuestSession::userDocuments attributes. Untested.

Location:
trunk/src/VBox/Additions/common
Files:
2 edited

Legend:

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

    r70389 r71364  
    365365        Msg.flags.GetUInt32(pfFlags);
    366366    }
     367    return rc;
     368}
     369
     370
     371VBGLR3DECL(int) VbglR3GuestCtrlPathGetUserDocuments(PVBGLR3GUESTCTRLCMDCTX pCtx)
     372{
     373    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     374    AssertReturn(pCtx->uNumParms == 1, VERR_INVALID_PARAMETER);
     375
     376    HGCMMsgPathUserDocuments Msg;
     377    VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, GUEST_MSG_WAIT, pCtx->uNumParms);
     378    VbglHGCMParmUInt32Set(&Msg.context, 0);
     379
     380    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     381    if (RT_SUCCESS(rc))
     382        Msg.context.GetUInt32(&pCtx->uContextID);
     383
     384    return rc;
     385}
     386
     387
     388VBGLR3DECL(int) VbglR3GuestCtrlPathGetUserHome(PVBGLR3GUESTCTRLCMDCTX pCtx)
     389{
     390    AssertPtrReturn(pCtx, VERR_INVALID_POINTER);
     391    AssertReturn(pCtx->uNumParms == 1, VERR_INVALID_PARAMETER);
     392
     393    HGCMMsgPathUserHome Msg;
     394    VBGL_HGCM_HDR_INIT(&Msg.hdr, pCtx->uClientID, GUEST_MSG_WAIT, pCtx->uNumParms);
     395    VbglHGCMParmUInt32Set(&Msg.context, 0);
     396
     397    int rc = VbglR3HGCMCall(&Msg.hdr, sizeof(Msg));
     398    if (RT_SUCCESS(rc))
     399        Msg.context.GetUInt32(&pCtx->uContextID);
     400
    367401    return rc;
    368402}
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp

    r71320 r71364  
    630630
    631631
     632/**
     633 * Handles getting the user's documents directory.
     634 *
     635 * @returns VBox status code.
     636 * @param   pSession        Guest session.
     637 * @param   pHostCtx        Host context.
     638 */
    632639static int vgsvcGstCtrlSessionHandlePathUserDocuments(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    633640{
     
    635642    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
    636643
    637     char szPath[RTPATH_MAX];
    638     int rc = RTPathUserDocuments(szPath, sizeof(szPath));
    639 
    640     /* Report back in any case. */
    641     int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
    642                                         szPath, (uint32_t)strlen(szPath) + 1 /* Include terminating zero */);
    643     if (RT_FAILURE(rc2))
    644         VGSvcError("Failed to report user documents, rc=%Rrc\n", rc2);
    645     if (RT_SUCCESS(rc))
    646         rc = rc2;
    647 
    648 #ifdef DEBUG
    649     VGSvcVerbose(4, "User documents is '%s', rc=%Rrc\n", szPath, rc);
    650 #endif
    651     return rc;
    652 }
    653 
    654 
     644    int rc = VbglR3GuestCtrlPathGetUserDocuments(pHostCtx);
     645    if (RT_SUCCESS(rc))
     646    {
     647        char szPath[RTPATH_MAX];
     648        rc = RTPathUserDocuments(szPath, sizeof(szPath));
     649
     650#ifdef DEBUG
     651        VGSvcVerbose(2, "User documents is '%s', rc=%Rrc\n", szPath, rc);
     652#endif
     653        /* Report back in any case. */
     654        int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
     655                                            szPath, (uint32_t)strlen(szPath) + 1 /* Include terminating zero */);
     656        if (RT_FAILURE(rc2))
     657            VGSvcError("Failed to report user documents, rc=%Rrc\n", rc2);
     658        if (RT_SUCCESS(rc))
     659            rc = rc2;
     660    }
     661
     662    return rc;
     663}
     664
     665
     666/**
     667 * Handles getting the user's home directory.
     668 *
     669 * @returns VBox status code.
     670 * @param   pSession        Guest session.
     671 * @param   pHostCtx        Host context.
     672 */
    655673static int vgsvcGstCtrlSessionHandlePathUserHome(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    656674{
     
    658676    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
    659677
    660     char szPath[RTPATH_MAX];
    661     int rc = RTPathUserHome(szPath, sizeof(szPath));
    662 
    663     /* Report back in any case. */
    664     int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
    665                                         szPath, (uint32_t)strlen(szPath) + 1 /* Include terminating zero */);
    666     if (RT_FAILURE(rc2))
    667         VGSvcError("Failed to report user home, rc=%Rrc\n", rc2);
    668     if (RT_SUCCESS(rc))
    669         rc = rc2;
    670 
    671 #ifdef DEBUG
    672     VGSvcVerbose(4, "User home is '%s', rc=%Rrc\n", szPath, rc);
    673 #endif
     678    int rc = VbglR3GuestCtrlPathGetUserHome(pHostCtx);
     679    if (RT_SUCCESS(rc))
     680    {
     681        char szPath[RTPATH_MAX];
     682        rc = RTPathUserHome(szPath, sizeof(szPath));
     683
     684#ifdef DEBUG
     685        VGSvcVerbose(2, "User home is '%s', rc=%Rrc\n", szPath, rc);
     686#endif
     687        /* Report back in any case. */
     688        int rc2 = VbglR3GuestCtrlMsgReplyEx(pHostCtx, rc, 0 /* Type */,
     689                                            szPath, (uint32_t)strlen(szPath) + 1 /* Include terminating zero */);
     690        if (RT_FAILURE(rc2))
     691            VGSvcError("Failed to report user home, rc=%Rrc\n", rc2);
     692        if (RT_SUCCESS(rc))
     693            rc = rc2;
     694    }
     695
    674696    return rc;
    675697}
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