VirtualBox

Ignore:
Timestamp:
Mar 22, 2023 5:30:14 PM (23 months ago)
Author:
vboxsync
Message:

Guest Control: Added ability of specifying an optional current working directory to started guest processes. This needs Guest Additions which support this. bugref:8053

File:
1 edited

Legend:

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

    r99088 r99120  
    13911391 * @param   pStartupInfo        Process startup info to initializes.
    13921392 * @param   cbCmd               Size (in bytes) to use for the command buffer.
     1393 * @param   cbCwd               Size (in bytes) to use for the current working directory.
    13931394 * @param   cbUser              Size (in bytes) to use for the user name buffer.
    13941395 * @param   cbPassword          Size (in bytes) to use for the password buffer.
     
    13991400VBGLR3DECL(int) VbglR3GuestCtrlProcStartupInfoInitEx(PVBGLR3GUESTCTRLPROCSTARTUPINFO pStartupInfo,
    14001401                                                     size_t cbCmd,
     1402                                                     size_t cbCwd,
    14011403                                                     size_t cbUser, size_t cbPassword, size_t cbDomain,
    14021404                                                     size_t cbArgs, size_t cbEnv)
     
    14041406    AssertPtrReturn(pStartupInfo, VERR_INVALID_POINTER);
    14051407    AssertReturn(cbCmd,           VERR_INVALID_PARAMETER);
     1408    AssertReturn(cbCwd,           VERR_INVALID_PARAMETER);
    14061409    AssertReturn(cbUser,          VERR_INVALID_PARAMETER);
    14071410    AssertReturn(cbPassword,      VERR_INVALID_PARAMETER);
     
    14231426    {
    14241427        ALLOC_STR(Cmd,      cbCmd);
     1428        ALLOC_STR(Cwd,      cbCwd);
    14251429        ALLOC_STR(Args,     cbArgs);
    14261430        ALLOC_STR(Env,      cbEnv);
     
    14481452    return VbglR3GuestCtrlProcStartupInfoInitEx(pStartupInfo,
    14491453                                                GUEST_PROC_DEF_CMD_LEN,
     1454                                                GUEST_PROC_DEF_CWD_LEN,
    14501455                                                GUEST_PROC_DEF_USER_LEN     /* Deprecated, now handled via session creation. */,
    14511456                                                GUEST_PROC_DEF_PASSWORD_LEN /* Ditto. */,
     
    14651470
    14661471    RTStrFree(pStartupInfo->pszCmd);
     1472    RTStrFree(pStartupInfo->pszCwd);
    14671473    RTStrFree(pStartupInfo->pszArgs);
    14681474    RTStrFree(pStartupInfo->pszEnv);
     
    16051611            VbglHGCMParmUInt32Set(&Msg.u.v2.num_affinity, 0);
    16061612            VbglHGCMParmPtrSet(&Msg.u.v2.affinity, pStartupInfo->uAffinity, sizeof(pStartupInfo->uAffinity));
     1613            /* v2.cwd was added in 7.1.  If the host is older, the Msg struct it sends is
     1614             * shorter and these fields are zero-filled, which equals 'no cwd requested'. */
     1615            VbglHGCMParmPtrSet(&Msg.u.v2.cwd, pStartupInfo->pszCwd, pStartupInfo->cbCwd);
    16071616        }
    16081617
     
    16101619        if (RT_FAILURE(rc))
    16111620        {
    1612             LogRel(("VbglR3GuestCtrlProcGetStart: 1 - %Rrc (retry %u, cbCmd=%RU32, cbArgs=%RU32, cbEnv=%RU32)\n",
    1613                     rc, cRetries, pStartupInfo->cbCmd, pStartupInfo->cbArgs, pStartupInfo->cbEnv));
     1621            LogRel(("VbglR3GuestCtrlProcGetStart: 1 - %Rrc (retry %u, cbCmd=%RU32, cbCwd=%RU32, cbArgs=%RU32, cbEnv=%RU32)\n",
     1622                    rc, cRetries, pStartupInfo->cbCmd, pStartupInfo->cbCwd, pStartupInfo->cbArgs, pStartupInfo->cbEnv));
    16141623
    16151624            if (   rc == VERR_BUFFER_OVERFLOW
     
    16241633                /* We can't tell which parameter doesn't fit, so we have to resize all. */
    16251634                GROW_STR(Cmd , GUEST_PROC_MAX_CMD_LEN);
     1635                GROW_STR(Cwd,  GUEST_PROC_MAX_CWD_LEN);
    16261636                GROW_STR(Args, GUEST_PROC_MAX_ARGS_LEN);
    16271637                GROW_STR(Env,  GUEST_PROC_MAX_ENV_LEN);
    16281638
    16291639#undef GROW_STR
    1630                 LogRel(("VbglR3GuestCtrlProcGetStart: 2 - %Rrc (retry %u, cbCmd=%RU32, cbArgs=%RU32, cbEnv=%RU32)\n",
    1631                         rc, cRetries, pStartupInfo->cbCmd, pStartupInfo->cbArgs, pStartupInfo->cbEnv));
     1640                LogRel(("VbglR3GuestCtrlProcGetStart: 2 - %Rrc (retry %u, cbCmd=%RU32, cbCwd=%RU32, cbArgs=%RU32, cbEnv=%RU32)\n",
     1641                        rc, cRetries, pStartupInfo->cbCmd, pStartupInfo->cbCwd, pStartupInfo->cbArgs, pStartupInfo->cbEnv));
    16321642                LogRel(("g_fVbglR3GuestCtrlHavePeekGetCancel=%RTbool\n", RT_BOOL(g_fVbglR3GuestCtrlHavePeekGetCancel)));
    16331643            }
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