VirtualBox

Changeset 58029 in vbox


Ignore:
Timestamp:
Oct 5, 2015 8:50:18 PM (9 years ago)
Author:
vboxsync
Message:

VBoxService: Using prefix 'VGSvc', code style/width cleanups. No real changes.

Location:
trunk
Files:
24 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/VBox/VBoxGuestLib.h

    r57006 r58029  
    586586    uint32_t u32Root;
    587587} VBGLR3SHAREDFOLDERMAPPING;
    588 /** Pointer to a shared folder mapping information struct. */
     588/** Pointer to a shared folder mapping information structure. */
    589589typedef VBGLR3SHAREDFOLDERMAPPING *PVBGLR3SHAREDFOLDERMAPPING;
     590/** Pointer to a const shared folder mapping information structure. */
     591typedef VBGLR3SHAREDFOLDERMAPPING const *PCVBGLR3SHAREDFOLDERMAPPING;
    590592
    591593VBGLR3DECL(int)     VbglR3SharedFolderConnect(uint32_t *pu32ClientId);
  • trunk/src/VBox/Additions/common/VBoxService/VBoxService-os2.def

    r56294 r58029  
     1; $Id$
    12;; @file
    23; VBoxService - OS/2 definition file.
  • trunk/src/VBox/Additions/common/VBoxService/VBoxService-win.cpp

    r57358 r58029  
    3434*   Internal Functions                                                                                                           *
    3535*********************************************************************************************************************************/
    36 static void WINAPI vboxServiceWinMain(DWORD argc, LPTSTR *argv);
     36static void WINAPI vgsvcWinMain(DWORD argc, LPTSTR *argv);
    3737
    3838
     
    4747static SERVICE_TABLE_ENTRY const g_aServiceTable[] =
    4848{
    49     { VBOXSERVICE_NAME, vboxServiceWinMain },
     49    { VBOXSERVICE_NAME, vgsvcWinMain },
    5050    { NULL,             NULL}
    5151};
     
    5757 * @todo Add event log capabilities / check return values.
    5858 */
    59 static DWORD vboxServiceWinAddAceToObjectsSecurityDescriptor(LPTSTR pszObjName,
     59static DWORD vgsvcWinAddAceToObjectsSecurityDescriptor(LPTSTR pszObjName,
    6060                                                             SE_OBJECT_TYPE ObjectType,
    6161                                                             LPTSTR pszTrustee,
     
    8080    {
    8181        if (dwRes == ERROR_FILE_NOT_FOUND)
    82             VBoxServiceError("AddAceToObjectsSecurityDescriptor: Object not found/installed: %s\n", pszObjName);
     82            VGSvcError("AddAceToObjectsSecurityDescriptor: Object not found/installed: %s\n", pszObjName);
    8383        else
    84             VBoxServiceError("AddAceToObjectsSecurityDescriptor: GetNamedSecurityInfo: Error %u\n", dwRes);
     84            VGSvcError("AddAceToObjectsSecurityDescriptor: GetNamedSecurityInfo: Error %u\n", dwRes);
    8585        goto l_Cleanup;
    8686    }
     
    9898    if (ERROR_SUCCESS != dwRes)
    9999    {
    100         VBoxServiceError("AddAceToObjectsSecurityDescriptor: SetEntriesInAcl: Error %u\n", dwRes);
     100        VGSvcError("AddAceToObjectsSecurityDescriptor: SetEntriesInAcl: Error %u\n", dwRes);
    101101        goto l_Cleanup;
    102102    }
     
    108108    if (ERROR_SUCCESS != dwRes)
    109109    {
    110         VBoxServiceError("AddAceToObjectsSecurityDescriptor: SetNamedSecurityInfo: Error %u\n", dwRes);
     110        VGSvcError("AddAceToObjectsSecurityDescriptor: SetNamedSecurityInfo: Error %u\n", dwRes);
    111111        goto l_Cleanup;
    112112    }
     
    125125
    126126/** Reports our current status to the SCM. */
    127 static BOOL vboxServiceWinSetStatus(DWORD dwStatus, DWORD dwCheckPoint)
     127static BOOL vgsvcWinSetStatus(DWORD dwStatus, DWORD dwCheckPoint)
    128128{
    129129    if (g_hWinServiceStatus == NULL) /* Program could be in testing mode, so no service environment available. */
    130130        return FALSE;
    131131
    132     VBoxServiceVerbose(2, "Setting service status to: %ld\n", dwStatus);
     132    VGSvcVerbose(2, "Setting service status to: %ld\n", dwStatus);
    133133    g_dwWinServiceLastStatus = dwStatus;
    134134
     
    154154        }
    155155        else
    156             VBoxServiceError("Error determining OS version, rc=%Rrc\n", rc);
     156            VGSvcError("Error determining OS version, rc=%Rrc\n", rc);
    157157#endif
    158158    }
     
    165165    BOOL fStatusSet = SetServiceStatus(g_hWinServiceStatus, &ss);
    166166    if (!fStatusSet)
    167         VBoxServiceError("Error reporting service status=%ld (controls=%x, checkpoint=%ld) to SCM: %ld\n",
     167        VGSvcError("Error reporting service status=%ld (controls=%x, checkpoint=%ld) to SCM: %ld\n",
    168168                         dwStatus, ss.dwControlsAccepted, dwCheckPoint, GetLastError());
    169169    return fStatusSet;
     
    176176 * @param   uCheckPoint         Some number.
    177177 */
    178 void VBoxServiceWinSetStopPendingStatus(uint32_t uCheckPoint)
    179 {
    180     vboxServiceWinSetStatus(SERVICE_STOP_PENDING, uCheckPoint);
    181 }
    182 
    183 
    184 static RTEXITCODE vboxServiceWinSetDesc(SC_HANDLE hService)
     178void VGSvcWinSetStopPendingStatus(uint32_t uCheckPoint)
     179{
     180    vgsvcWinSetStatus(SERVICE_STOP_PENDING, uCheckPoint);
     181}
     182
     183
     184static RTEXITCODE vgsvcWinSetDesc(SC_HANDLE hService)
    185185{
    186186#ifndef TARGET_NT4
     
    194194                              &desc))
    195195    {
    196         VBoxServiceError("Cannot set the service description! Error: %ld\n", GetLastError());
     196        VGSvcError("Cannot set the service description! Error: %ld\n", GetLastError());
    197197        return RTEXITCODE_FAILURE;
    198198    }
     
    205205 * Installs the service.
    206206 */
    207 RTEXITCODE VBoxServiceWinInstall(void)
    208 {
    209     VBoxServiceVerbose(1, "Installing service ...\n");
     207RTEXITCODE VGSvcWinInstall(void)
     208{
     209    VGSvcVerbose(1, "Installing service ...\n");
    210210
    211211    TCHAR imagePath[MAX_PATH] = { 0 };
     
    215215    if (hSCManager == NULL)
    216216    {
    217         VBoxServiceError("Could not open SCM! Error: %ld\n", GetLastError());
     217        VGSvcError("Could not open SCM! Error: %ld\n", GetLastError());
    218218        return RTEXITCODE_FAILURE;
    219219    }
     
    227227                                        imagePath, NULL, NULL, NULL, NULL, NULL);
    228228    if (hService != NULL)
    229         VBoxServiceVerbose(0, "Service successfully installed!\n");
     229        VGSvcVerbose(0, "Service successfully installed!\n");
    230230    else
    231231    {
     
    234234        {
    235235            case ERROR_SERVICE_EXISTS:
    236                 VBoxServiceVerbose(1, "Service already exists, just updating the service config.\n");
     236                VGSvcVerbose(1, "Service already exists, just updating the service config.\n");
    237237                hService = OpenService(hSCManager, VBOXSERVICE_NAME, SERVICE_ALL_ACCESS);
    238238                if (hService)
     
    249249                                             NULL,
    250250                                             VBOXSERVICE_FRIENDLY_NAME))
    251                         VBoxServiceVerbose(1, "The service config has been successfully updated.\n");
     251                        VGSvcVerbose(1, "The service config has been successfully updated.\n");
    252252                    else
    253                         rc = VBoxServiceError("Could not change service config! Error: %ld\n", GetLastError());
     253                        rc = VGSvcError("Could not change service config! Error: %ld\n", GetLastError());
    254254                }
    255255                else
    256                     rc = VBoxServiceError("Could not open service! Error: %ld\n", GetLastError());
     256                    rc = VGSvcError("Could not open service! Error: %ld\n", GetLastError());
    257257                break;
    258258
    259259            default:
    260                 rc = VBoxServiceError("Could not create service! Error: %ld\n", dwErr);
     260                rc = VGSvcError("Could not create service! Error: %ld\n", dwErr);
    261261                break;
    262262        }
     
    264264
    265265    if (rc == RTEXITCODE_SUCCESS)
    266         rc = vboxServiceWinSetDesc(hService);
     266        rc = vgsvcWinSetDesc(hService);
    267267
    268268    CloseServiceHandle(hService);
     
    274274 * Uninstalls the service.
    275275 */
    276 RTEXITCODE VBoxServiceWinUninstall(void)
    277 {
    278     VBoxServiceVerbose(1, "Uninstalling service ...\n");
     276RTEXITCODE VGSvcWinUninstall(void)
     277{
     278    VGSvcVerbose(1, "Uninstalling service ...\n");
    279279
    280280    SC_HANDLE hSCManager = OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
    281281    if (hSCManager == NULL)
    282282    {
    283         VBoxServiceError("Could not open SCM! Error: %d\n", GetLastError());
     283        VGSvcError("Could not open SCM! Error: %d\n", GetLastError());
    284284        return RTEXITCODE_FAILURE;
    285285    }
     
    306306            }
    307307
    308             VBoxServiceVerbose(0, "Service successfully uninstalled!\n");
     308            VGSvcVerbose(0, "Service successfully uninstalled!\n");
    309309            rcExit = RTEXITCODE_SUCCESS;
    310310        }
    311311        else
    312             rcExit = VBoxServiceError("Could not remove service! Error: %d\n", GetLastError());
     312            rcExit = VGSvcError("Could not remove service! Error: %d\n", GetLastError());
    313313        CloseServiceHandle(hService);
    314314    }
    315315    else
    316         rcExit = VBoxServiceError("Could not open service! Error: %d\n", GetLastError());
     316        rcExit = VGSvcError("Could not open service! Error: %d\n", GetLastError());
    317317    CloseServiceHandle(hSCManager);
    318318
     
    321321
    322322
    323 static int vboxServiceWinStart(void)
     323static int vgsvcWinStart(void)
    324324{
    325325    int rc = VINF_SUCCESS;
     
    339339    else
    340340    {
    341         DWORD dwRes = vboxServiceWinAddAceToObjectsSecurityDescriptor(TEXT("\\\\.\\VBoxMiniRdrDN"),
     341        DWORD dwRes = vgsvcWinAddAceToObjectsSecurityDescriptor(TEXT("\\\\.\\VBoxMiniRdrDN"),
    342342                                                                      SE_FILE_OBJECT,
    343343                                                                      (LPTSTR)pBuiltinUsersSID,
     
    363363    if (RT_SUCCESS(rc))
    364364    {
    365         vboxServiceWinSetStatus(SERVICE_START_PENDING, 0);
    366 
    367         rc = VBoxServiceStartServices();
     365        vgsvcWinSetStatus(SERVICE_START_PENDING, 0);
     366
     367        rc = VGSvcStartServices();
    368368        if (RT_SUCCESS(rc))
    369369        {
    370             vboxServiceWinSetStatus(SERVICE_RUNNING, 0);
    371             VBoxServiceMainWait();
     370            vgsvcWinSetStatus(SERVICE_RUNNING, 0);
     371            VGSvcMainWait();
    372372        }
    373373        else
    374374        {
    375             vboxServiceWinSetStatus(SERVICE_STOPPED, 0);
     375            vgsvcWinSetStatus(SERVICE_STOPPED, 0);
    376376#if 0 /** @todo r=bird: Enable this if SERVICE_CONTROL_STOP isn't triggered automatically */
    377             VBoxServiceStopServices();
     377            VGSvcStopServices();
    378378#endif
    379379        }
    380380    }
    381381    else
    382         vboxServiceWinSetStatus(SERVICE_STOPPED, 0);
     382        vgsvcWinSetStatus(SERVICE_STOPPED, 0);
    383383
    384384    if (RT_FAILURE(rc))
    385         VBoxServiceError("Service failed to start with rc=%Rrc!\n", rc);
     385        VGSvcError("Service failed to start with rc=%Rrc!\n", rc);
    386386
    387387    return rc;
     
    398398 *          Something else on failure, error will have been reported.
    399399 */
    400 RTEXITCODE VBoxServiceWinEnterCtrlDispatcher(void)
     400RTEXITCODE VGSvcWinEnterCtrlDispatcher(void)
    401401{
    402402    if (!StartServiceCtrlDispatcher(&g_aServiceTable[0]))
    403         return VBoxServiceError("StartServiceCtrlDispatcher: %u. Please start %s with option -f (foreground)!\n",
     403        return VGSvcError("StartServiceCtrlDispatcher: %u. Please start %s with option -f (foreground)!\n",
    404404                                GetLastError(), g_pszProgName);
    405405    return RTEXITCODE_SUCCESS;
     
    408408
    409409#ifndef TARGET_NT4
    410 static const char* vboxServiceWTSStateToString(DWORD dwEvent)
     410static const char* vgsvcWTSStateToString(DWORD dwEvent)
    411411{
    412412    switch (dwEvent)
     
    455455
    456456#ifdef TARGET_NT4
    457 static VOID WINAPI vboxServiceWinCtrlHandler(DWORD dwControl)
     457static VOID WINAPI vgsvcWinCtrlHandler(DWORD dwControl)
    458458#else
    459 static DWORD WINAPI vboxServiceWinCtrlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
     459static DWORD WINAPI vgsvcWinCtrlHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext)
    460460#endif
    461461{
     
    463463
    464464#ifdef TARGET_NT4
    465     VBoxServiceVerbose(2, "Control handler: Control=%#x\n", dwControl);
     465    VGSvcVerbose(2, "Control handler: Control=%#x\n", dwControl);
    466466#else
    467     VBoxServiceVerbose(2, "Control handler: Control=%#x, EventType=%#x\n", dwControl, dwEventType);
     467    VGSvcVerbose(2, "Control handler: Control=%#x, EventType=%#x\n", dwControl, dwEventType);
    468468#endif
    469469
     
    471471    {
    472472        case SERVICE_CONTROL_INTERROGATE:
    473             vboxServiceWinSetStatus(g_dwWinServiceLastStatus, 0);
     473            vgsvcWinSetStatus(g_dwWinServiceLastStatus, 0);
    474474            break;
    475475
     
    477477        case SERVICE_CONTROL_SHUTDOWN:
    478478        {
    479             vboxServiceWinSetStatus(SERVICE_STOP_PENDING, 0);
    480 
    481             int rc2 = VBoxServiceStopServices();
     479            vgsvcWinSetStatus(SERVICE_STOP_PENDING, 0);
     480
     481            int rc2 = VGSvcStopServices();
    482482            if (RT_FAILURE(rc2))
    483483                rcRet = ERROR_GEN_FAILURE;
    484484            else
    485485            {
    486                 rc2 = VBoxServiceReportStatus(VBoxGuestFacilityStatus_Terminated);
     486                rc2 = VGSvcReportStatus(VBoxGuestFacilityStatus_Terminated);
    487487                AssertRC(rc2);
    488488            }
    489489
    490             vboxServiceWinSetStatus(SERVICE_STOPPED, 0);
     490            vgsvcWinSetStatus(SERVICE_STOPPED, 0);
    491491            break;
    492492        }
     
    499499            Assert(pNotify->cbSize == sizeof(WTSSESSION_NOTIFICATION));
    500500
    501             VBoxServiceVerbose(1, "Control handler: %s (Session=%ld, Event=%#x)\n",
    502                                vboxServiceWTSStateToString(dwEventType),
     501            VGSvcVerbose(1, "Control handler: %s (Session=%ld, Event=%#x)\n",
     502                               vgsvcWTSStateToString(dwEventType),
    503503                               pNotify->dwSessionId, dwEventType);
    504504
    505505            /* Handle all events, regardless of dwEventType. */
    506             int rc2 = VBoxServiceVMInfoSignal();
     506            int rc2 = VGSvcVMInfoSignal();
    507507            AssertRC(rc2);
    508508            break;
     
    511511
    512512        default:
    513             VBoxServiceVerbose(1, "Control handler: Function not implemented: %#x\n", dwControl);
     513            VGSvcVerbose(1, "Control handler: Function not implemented: %#x\n", dwControl);
    514514            rcRet = ERROR_CALL_NOT_IMPLEMENTED;
    515515            break;
     
    522522
    523523
    524 static void WINAPI vboxServiceWinMain(DWORD argc, LPTSTR *argv)
    525 {
    526     VBoxServiceVerbose(2, "Registering service control handler ...\n");
     524static void WINAPI vgsvcWinMain(DWORD argc, LPTSTR *argv)
     525{
     526    VGSvcVerbose(2, "Registering service control handler ...\n");
    527527#ifdef TARGET_NT4
    528     g_hWinServiceStatus = RegisterServiceCtrlHandler(VBOXSERVICE_NAME, vboxServiceWinCtrlHandler);
     528    g_hWinServiceStatus = RegisterServiceCtrlHandler(VBOXSERVICE_NAME, vgsvcWinCtrlHandler);
    529529#else
    530     g_hWinServiceStatus = RegisterServiceCtrlHandlerEx(VBOXSERVICE_NAME, vboxServiceWinCtrlHandler, NULL);
     530    g_hWinServiceStatus = RegisterServiceCtrlHandlerEx(VBOXSERVICE_NAME, vgsvcWinCtrlHandler, NULL);
    531531#endif
    532532    if (g_hWinServiceStatus != NULL)
    533533    {
    534         VBoxServiceVerbose(2, "Service control handler registered.\n");
    535         vboxServiceWinStart();
     534        VGSvcVerbose(2, "Service control handler registered.\n");
     535        vgsvcWinStart();
    536536    }
    537537    else
     
    541541        {
    542542            case ERROR_INVALID_NAME:
    543                 VBoxServiceError("Invalid service name!\n");
     543                VGSvcError("Invalid service name!\n");
    544544                break;
    545545            case ERROR_SERVICE_DOES_NOT_EXIST:
    546                 VBoxServiceError("Service does not exist!\n");
     546                VGSvcError("Service does not exist!\n");
    547547                break;
    548548            default:
    549                 VBoxServiceError("Could not register service control handle! Error: %ld\n", dwErr);
     549                VGSvcError("Could not register service control handle! Error: %ld\n", dwErr);
    550550                break;
    551551        }
  • trunk/src/VBox/Additions/common/VBoxService/VBoxService.cpp

    r57966 r58029  
    141141};
    142142
    143 /* Default call-backs for services which do not need special behaviour. */
    144 
    145 /** @copydoc VBOXSERVICE::pfnPreInit */
    146 DECLCALLBACK(int) VBoxServiceDefaultPreInit(void)
     143
     144/*
     145 * Default call-backs for services which do not need special behaviour.
     146 */
     147
     148/**
     149 * @interface_method_impl{VBOXSERVICE,pfnPreInit, Default Implementation}
     150 */
     151DECLCALLBACK(int) VGSvcDefaultPreInit(void)
    147152{
    148153    return VINF_SUCCESS;
    149154}
    150155
    151 /** @copydoc VBOXSERVICE::pfnOption */
    152 DECLCALLBACK(int) VBoxServiceDefaultOption(const char **ppszShort, int argc,
     156
     157/**
     158 * @interface_method_impl{VBOXSERVICE,pfnOption, Default Implementation}
     159 */
     160DECLCALLBACK(int) VGSvcDefaultOption(const char **ppszShort, int argc,
    153161                                           char **argv, int *pi)
    154162{
     
    161169}
    162170
    163 /** @copydoc VBOXSERVICE::pfnInit */
    164 DECLCALLBACK(int) VBoxServiceDefaultInit(void)
     171
     172/**
     173 * @interface_method_impl{VBOXSERVICE,pfnInit, Default Implementation}
     174 */
     175DECLCALLBACK(int) VGSvcDefaultInit(void)
    165176{
    166177    return VINF_SUCCESS;
    167178}
    168179
    169 /** @copydoc VBOXSERVICE::pfnTerm */
    170 DECLCALLBACK(void) VBoxServiceDefaultTerm(void)
     180
     181/**
     182 * @interface_method_impl{VBOXSERVICE,pfnTerm, Default Implementation}
     183 */
     184DECLCALLBACK(void) VGSvcDefaultTerm(void)
    171185{
    172186    return;
    173187}
    174188
    175 /**
    176  * Release logger callback.
    177  *
    178  * @return  IPRT status code.
    179  * @param   pLoggerRelease
    180  * @param   enmPhase
    181  * @param   pfnLog
    182  */
    183 static DECLCALLBACK(void) VBoxServiceLogHeaderFooter(PRTLOGGER pLoggerRelease, RTLOGPHASE enmPhase, PFNRTLOGPHASEMSG pfnLog)
     189
     190/**
     191 * @callback_method_impl{FNRTLOGPHASE, Release logger callback}
     192 */
     193static DECLCALLBACK(void) vgsvcLogHeaderFooter(PRTLOGGER pLoggerRelease, RTLOGPHASE enmPhase, PFNRTLOGPHASEMSG pfnLog)
    184194{
    185195    /* Some introductory information. */
     
    195205        {
    196206            pfnLog(pLoggerRelease,
    197                    "VBoxService %s r%s (verbosity: %d) %s (%s %s) release log\n"
     207                   "VBoxService %s r%s (verbosity: %u) %s (%s %s) release log\n"
    198208                   "Log opened %s\n",
    199209                   RTBldCfgVersion(), RTBldCfgRevisionStr(), g_cVerbosity, VBOX_BUILD_TARGET,
     
    209219            if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    210220                pfnLog(pLoggerRelease, "OS Version: %s\n", szTmp);
     221            vrc = RTSystemQueryOSInfo(RTSYSOSINFO_SERVICE_PACK, szTmp, sizeof(szTmp));
    211222            if (RT_SUCCESS(vrc) || vrc == VERR_BUFFER_OVERFLOW)
    212223                pfnLog(pLoggerRelease, "OS Service Pack: %s\n", szTmp);
     
    242253
    243254        default:
    244             /* nothing */;
     255            /* nothing */
     256            break;
    245257    }
    246258}
     
    249261/**
    250262 * Creates the default release logger outputting to the specified file.
    251  * Pass NULL for disabled logging.
     263 *
     264 * Pass NULL to disabled logging.
    252265 *
    253266 * @return  IPRT status code.
    254  * @param   pszLogFile              Filename for log output.  Optional.
    255  */
    256 int VBoxServiceLogCreate(const char *pszLogFile)
     267 * @param   pszLogFile      Filename for log output.  NULL disables logging.
     268 */
     269int VGSvcLogCreate(const char *pszLogFile)
    257270{
    258271    /* Create release logger (stdout + file). */
     
    271284                           RT_ELEMENTS(s_apszGroups), s_apszGroups,
    272285                           RTLOGDEST_STDOUT | RTLOGDEST_USER,
    273                            VBoxServiceLogHeaderFooter, g_cHistory, g_uHistoryFileSize, g_uHistoryFileTime,
     286                           vgsvcLogHeaderFooter, g_cHistory, g_uHistoryFileSize, g_uHistoryFileTime,
    274287                           szError, sizeof(szError), pszLogFile);
    275288    if (RT_SUCCESS(rc))
     
    286299
    287300
    288 void VBoxServiceLogDestroy(void)
     301void VGSvcLogDestroy(void)
    289302{
    290303    RTLogDestroy(RTLogRelSetDefaultInstance(NULL));
     
    297310 * @returns 1.
    298311 */
    299 static int vboxServiceUsage(void)
     312static int vgsvcUsage(void)
    300313{
    301314    RTPrintf("Usage:\n"
     
    349362 * @param   ...         Format arguments.
    350363 */
    351 RTEXITCODE VBoxServiceError(const char *pszFormat, ...)
     364RTEXITCODE VGSvcError(const char *pszFormat, ...)
    352365{
    353366    va_list args;
     
    373386 * @param   ...         Format arguments.
    374387 */
    375 void VBoxServiceVerbose(unsigned iLevel, const char *pszFormat, ...)
     388void VGSvcVerbose(unsigned iLevel, const char *pszFormat, ...)
    376389{
    377390    if (iLevel <= g_cVerbosity)
     
    408421 * @param   enmStatus               Status to report to the host.
    409422 */
    410 int VBoxServiceReportStatus(VBoxGuestFacilityStatus enmStatus)
     423int VGSvcReportStatus(VBoxGuestFacilityStatus enmStatus)
    411424{
    412425    /*
     
    414427     */
    415428    static VBoxGuestFacilityStatus s_enmLastStatus = VBoxGuestFacilityStatus_Inactive;
    416     VBoxServiceVerbose(4, "Setting VBoxService status to %u\n", enmStatus);
     429    VGSvcVerbose(4, "Setting VBoxService status to %u\n", enmStatus);
    417430    if (s_enmLastStatus != VBoxGuestFacilityStatus_Failed)
    418431    {
     
    421434        if (RT_FAILURE(rc))
    422435        {
    423             VBoxServiceError("Could not report VBoxService status (%u), rc=%Rrc\n", enmStatus, rc);
     436            VGSvcError("Could not report VBoxService status (%u), rc=%Rrc\n", enmStatus, rc);
    424437            return rc;
    425438        }
     
    432445/**
    433446 * Gets a 32-bit value argument.
    434  * @todo Get rid of this and VBoxServiceArgString() as soon as we have RTOpt handling.
     447 * @todo Get rid of this and VGSvcArgString() as soon as we have RTOpt handling.
    435448 *
    436449 * @returns 0 on success, non-zero exit code on error.
     
    443456 * @param   u32Max  The maximum value.
    444457 */
    445 int VBoxServiceArgUInt32(int argc, char **argv, const char *psz, int *pi, uint32_t *pu32, uint32_t u32Min, uint32_t u32Max)
     458int VGSvcArgUInt32(int argc, char **argv, const char *psz, int *pi, uint32_t *pu32, uint32_t u32Min, uint32_t u32Max)
    446459{
    447460    if (*psz == ':' || *psz == '=')
     
    464477}
    465478
    466 /** @todo Get rid of this and VBoxServiceArgUInt32() as soon as we have RTOpt handling. */
    467 int VBoxServiceArgString(int argc, char **argv, const char *psz, int *pi, char *pszBuf, size_t cbBuf)
     479
     480/** @todo Get rid of this and VGSvcArgUInt32() as soon as we have RTOpt handling. */
     481static int vgsvcArgString(int argc, char **argv, const char *psz, int *pi, char *pszBuf, size_t cbBuf)
    468482{
    469483    AssertPtrReturn(pszBuf, VERR_INVALID_POINTER);
     
    485499
    486500
    487 
    488501/**
    489502 * The service thread.
     
    493506 * @param   pvUser          The service index.
    494507 */
    495 static DECLCALLBACK(int) vboxServiceThread(RTTHREAD ThreadSelf, void *pvUser)
     508static DECLCALLBACK(int) vgsvcThread(RTTHREAD ThreadSelf, void *pvUser)
    496509{
    497510    const unsigned i = (uintptr_t)pvUser;
     
    518531 * @returns VBox status code, error message displayed.
    519532 */
    520 static RTEXITCODE vboxServiceLazyPreInit(void)
     533static RTEXITCODE vgsvcLazyPreInit(void)
    521534{
    522535    for (unsigned j = 0; j < RT_ELEMENTS(g_aServices); j++)
     
    525538            int rc = g_aServices[j].pDesc->pfnPreInit();
    526539            if (RT_FAILURE(rc))
    527                 return VBoxServiceError("Service '%s' failed pre-init: %Rrc\n", g_aServices[j].pDesc->pszName, rc);
     540                return VGSvcError("Service '%s' failed pre-init: %Rrc\n", g_aServices[j].pDesc->pszName, rc);
    528541            g_aServices[j].fPreInited = true;
    529542        }
     
    535548 * Count the number of enabled services.
    536549 */
    537 static unsigned vboxServiceCountEnabledServices(void)
     550static unsigned vgsvcCountEnabledServices(void)
    538551{
    539552    unsigned cEnabled = 0;
     
    545558
    546559#ifdef RT_OS_WINDOWS
    547 static BOOL WINAPI VBoxServiceConsoleControlHandler(DWORD dwCtrlType)
     560/**
     561 * Console control event callback.
     562 *
     563 * @returns TRUE if handled, FALSE if not.
     564 * @param   dwCtrlType      The control event type.
     565 *
     566 * @remarks This is generally called on a new thread, so we're racing every
     567 *          other thread in the process.
     568 */
     569static BOOL WINAPI vgsvcWinConsoleControlHandler(DWORD dwCtrlType)
    548570{
    549571    int rc = VINF_SUCCESS;
     
    556578        case CTRL_CLOSE_EVENT:
    557579        case CTRL_C_EVENT:
    558             VBoxServiceVerbose(2, "ControlHandler: Received break/close event\n");
    559             rc = VBoxServiceStopServices();
     580            VGSvcVerbose(2, "ControlHandler: Received break/close event\n");
     581            rc = VGSvcStopServices();
    560582            fEventHandled = TRUE;
    561583            break;
     
    566588
    567589    if (RT_FAILURE(rc))
    568         VBoxServiceError("ControlHandler: Event %ld handled with error rc=%Rrc\n",
     590        VGSvcError("ControlHandler: Event %ld handled with error rc=%Rrc\n",
    569591                         dwCtrlType, rc);
    570592    return fEventHandled;
     
    577599 *
    578600 * @returns VBox status code, errors are fully bitched.
    579  */
    580 int VBoxServiceStartServices(void)
     601 *
     602 * @remarks Also called from VBoxService-win.cpp, thus not static.
     603 */
     604int VGSvcStartServices(void)
    581605{
    582606    int rc;
    583607
    584     VBoxServiceReportStatus(VBoxGuestFacilityStatus_Init);
     608    VGSvcReportStatus(VBoxGuestFacilityStatus_Init);
    585609
    586610    /*
    587611     * Initialize the services.
    588612     */
    589     VBoxServiceVerbose(2, "Initializing services ...\n");
     613    VGSvcVerbose(2, "Initializing services ...\n");
    590614    for (unsigned j = 0; j < RT_ELEMENTS(g_aServices); j++)
    591615        if (g_aServices[j].fEnabled)
     
    596620                if (rc != VERR_SERVICE_DISABLED)
    597621                {
    598                     VBoxServiceError("Service '%s' failed to initialize: %Rrc\n",
     622                    VGSvcError("Service '%s' failed to initialize: %Rrc\n",
    599623                                     g_aServices[j].pDesc->pszName, rc);
    600                     VBoxServiceReportStatus(VBoxGuestFacilityStatus_Failed);
     624                    VGSvcReportStatus(VBoxGuestFacilityStatus_Failed);
    601625                    return rc;
    602626                }
    603627                g_aServices[j].fEnabled = false;
    604                 VBoxServiceVerbose(0, "Service '%s' was disabled because of missing functionality\n",
    605                                    g_aServices[j].pDesc->pszName);
     628                VGSvcVerbose(0, "Service '%s' was disabled because of missing functionality\n", g_aServices[j].pDesc->pszName);
    606629
    607630            }
     
    611634     * Start the service(s).
    612635     */
    613     VBoxServiceVerbose(2, "Starting services ...\n");
     636    VGSvcVerbose(2, "Starting services ...\n");
    614637    rc = VINF_SUCCESS;
    615638    for (unsigned j = 0; j < RT_ELEMENTS(g_aServices); j++)
     
    618641            continue;
    619642
    620         VBoxServiceVerbose(2, "Starting service     '%s' ...\n", g_aServices[j].pDesc->pszName);
    621         rc = RTThreadCreate(&g_aServices[j].Thread, vboxServiceThread, (void *)(uintptr_t)j, 0,
     643        VGSvcVerbose(2, "Starting service     '%s' ...\n", g_aServices[j].pDesc->pszName);
     644        rc = RTThreadCreate(&g_aServices[j].Thread, vgsvcThread, (void *)(uintptr_t)j, 0,
    622645                            RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, g_aServices[j].pDesc->pszName);
    623646        if (RT_FAILURE(rc))
    624647        {
    625             VBoxServiceError("RTThreadCreate failed, rc=%Rrc\n", rc);
     648            VGSvcError("RTThreadCreate failed, rc=%Rrc\n", rc);
    626649            break;
    627650        }
     
    642665        if (g_aServices[j].fShutdown)
    643666        {
    644             VBoxServiceError("Service '%s' failed to start!\n", g_aServices[j].pDesc->pszName);
     667            VGSvcError("Service '%s' failed to start!\n", g_aServices[j].pDesc->pszName);
    645668            rc = VERR_GENERAL_FAILURE;
    646669        }
     
    648671
    649672    if (RT_SUCCESS(rc))
    650         VBoxServiceVerbose(1, "All services started.\n");
     673        VGSvcVerbose(1, "All services started.\n");
    651674    else
    652675    {
    653         VBoxServiceError("An error occcurred while the services!\n");
    654         VBoxServiceReportStatus(VBoxGuestFacilityStatus_Failed);
     676        VGSvcError("An error occcurred while the services!\n");
     677        VGSvcReportStatus(VBoxGuestFacilityStatus_Failed);
    655678    }
    656679    return rc;
     
    663686 * This should be called even when VBoxServiceStartServices fails so it can
    664687 * clean up anything that we succeeded in starting.
    665  */
    666 int VBoxServiceStopServices(void)
    667 {
    668     VBoxServiceReportStatus(VBoxGuestFacilityStatus_Terminating);
     688 *
     689 * @remarks Also called from VBoxService-win.cpp, thus not static.
     690 */
     691int VGSvcStopServices(void)
     692{
     693    VGSvcReportStatus(VBoxGuestFacilityStatus_Terminating);
    669694
    670695    /*
     
    680705        if (g_aServices[j].fStarted)
    681706        {
    682             VBoxServiceVerbose(3, "Calling stop function for service '%s' ...\n", g_aServices[j].pDesc->pszName);
     707            VGSvcVerbose(3, "Calling stop function for service '%s' ...\n", g_aServices[j].pDesc->pszName);
    683708            g_aServices[j].pDesc->pfnStop();
    684709        }
    685710
    686     VBoxServiceVerbose(3, "All stop functions for services called\n");
     711    VGSvcVerbose(3, "All stop functions for services called\n");
    687712
    688713    /*
     
    696721        if (g_aServices[j].Thread != NIL_RTTHREAD)
    697722        {
    698             VBoxServiceVerbose(2, "Waiting for service '%s' to stop ...\n", g_aServices[j].pDesc->pszName);
     723            VGSvcVerbose(2, "Waiting for service '%s' to stop ...\n", g_aServices[j].pDesc->pszName);
    699724            int rc2 = VINF_SUCCESS;
    700725            for (int i = 0; i < 30; i++) /* Wait 30 seconds in total */
     
    705730#ifdef RT_OS_WINDOWS
    706731                /* Notify SCM that it takes a bit longer ... */
    707                 VBoxServiceWinSetStopPendingStatus(i + j*32);
     732                VGSvcWinSetStopPendingStatus(i + j*32);
    708733#endif
    709734            }
    710735            if (RT_FAILURE(rc2))
    711736            {
    712                 VBoxServiceError("Service '%s' failed to stop. (%Rrc)\n", g_aServices[j].pDesc->pszName, rc2);
     737                VGSvcError("Service '%s' failed to stop. (%Rrc)\n", g_aServices[j].pDesc->pszName, rc2);
    713738                rc = rc2;
    714739            }
    715740        }
    716         VBoxServiceVerbose(3, "Terminating service '%s' (%d) ...\n", g_aServices[j].pDesc->pszName, j);
     741        VGSvcVerbose(3, "Terminating service '%s' (%d) ...\n", g_aServices[j].pDesc->pszName, j);
    717742        g_aServices[j].pDesc->pfnTerm();
    718743    }
     
    726751    if (g_hEvtWindowsService != NIL_RTSEMEVENT)
    727752    {
    728         VBoxServiceVerbose(3, "Stopping the main thread...\n");
     753        VGSvcVerbose(3, "Stopping the main thread...\n");
    729754        int rc2 = RTSemEventSignal(g_hEvtWindowsService);
    730755        AssertRC(rc2);
     
    732757#endif
    733758
    734     VBoxServiceVerbose(2, "Stopping services returning: %Rrc\n", rc);
    735     VBoxServiceReportStatus(RT_SUCCESS(rc) ? VBoxGuestFacilityStatus_Paused : VBoxGuestFacilityStatus_Failed);
     759    VGSvcVerbose(2, "Stopping services returning: %Rrc\n", rc);
     760    VGSvcReportStatus(RT_SUCCESS(rc) ? VBoxGuestFacilityStatus_Paused : VBoxGuestFacilityStatus_Failed);
    736761    return rc;
    737762}
     
    740765/**
    741766 * Block the main thread until the service shuts down.
    742  */
    743 void VBoxServiceMainWait(void)
     767 *
     768 * @remarks Also called from VBoxService-win.cpp, thus not static.
     769 */
     770void VGSvcMainWait(void)
    744771{
    745772    int rc;
    746773
    747     VBoxServiceReportStatus(VBoxGuestFacilityStatus_Active);
     774    VGSvcReportStatus(VBoxGuestFacilityStatus_Active);
    748775
    749776#ifdef RT_OS_WINDOWS
     
    751778     * Wait for the semaphore to be signalled.
    752779     */
    753     VBoxServiceVerbose(1, "Waiting in main thread\n");
     780    VGSvcVerbose(1, "Waiting in main thread\n");
    754781    rc = RTSemEventCreate(&g_hEvtWindowsService);
    755782    AssertRC(rc);
     
    790817          );
    791818
    792     VBoxServiceVerbose(3, "VBoxServiceMainWait: Received signal %d (rc=%d)\n", iSignal, rc);
     819    VGSvcVerbose(3, "VBoxServiceMainWait: Received signal %d (rc=%d)\n", iSignal, rc);
    793820#endif /* !RT_OS_WINDOWS */
    794821}
     
    818845     * global mutex restrictions.
    819846     */
    820     if (VBoxServiceToolboxMain(argc, argv, &rcExit))
     847    if (VGSvcToolboxMain(argc, argv, &rcExit))
    821848        return rcExit;
    822849#endif
     
    843870    else
    844871        rc = VbglR3Init();
    845 
    846872    if (RT_FAILURE(rc))
    847873    {
     
    855881    /*
    856882     * Check if we're the specially spawned VBoxService.exe process that
    857      * handles page fusion.  This saves an extra executable.
     883     * handles page fusion.  This saves an extra statically linked executable.
    858884     */
    859885    if (   argc == 2
    860886        && !RTStrICmp(argv[1], "pagefusion"))
    861         return VBoxServicePageSharingWorkerChild();
     887        return VGSvcPageSharingWorkerChild();
    862888#endif
    863889
     
    868894     */
    869895    if (fUserSession)
    870         return VBoxServiceControlSessionSpawnInit(argc, argv);
     896        return VGSvcGstCtrlSessionSpawnInit(argc, argv);
    871897#endif
    872898
     
    941967                if (!fFound)
    942968                {
    943                     rcExit = vboxServiceLazyPreInit();
     969                    rcExit = vgsvcLazyPreInit();
    944970                    if (rcExit != RTEXITCODE_SUCCESS)
    945971                        return rcExit;
     
    967993            {
    968994                case 'i':
    969                     rc = VBoxServiceArgUInt32(argc, argv, psz + 1, &i,
     995                    rc = VGSvcArgUInt32(argc, argv, psz + 1, &i,
    970996                                              &g_DefaultInterval, 1, (UINT32_MAX / 1000) - 1);
    971997                    if (rc)
     
    9881014                case 'h':
    9891015                case '?':
    990                     return vboxServiceUsage();
     1016                    return vgsvcUsage();
    9911017
    9921018#ifdef RT_OS_WINDOWS
    9931019                case 'r':
    994                     return VBoxServiceWinInstall();
     1020                    return VGSvcWinInstall();
    9951021
    9961022                case 'u':
    997                     return VBoxServiceWinUninstall();
     1023                    return VGSvcWinUninstall();
    9981024#endif
    9991025
    10001026                case 'l':
    10011027                {
    1002                     rc = VBoxServiceArgString(argc, argv, psz + 1, &i,
     1028                    rc = vgsvcArgString(argc, argv, psz + 1, &i,
    10031029                                              g_szLogFile, sizeof(g_szLogFile));
    10041030                    if (rc)
     
    10101036                case 'p':
    10111037                {
    1012                     rc = VBoxServiceArgString(argc, argv, psz + 1, &i,
     1038                    rc = vgsvcArgString(argc, argv, psz + 1, &i,
    10131039                                              g_szPidFile, sizeof(g_szPidFile));
    10141040                    if (rc)
     
    10201046                default:
    10211047                {
    1022                     rcExit = vboxServiceLazyPreInit();
     1048                    rcExit = vgsvcLazyPreInit();
    10231049                    if (rcExit != RTEXITCODE_SUCCESS)
    10241050                        return rcExit;
     
    10431069
    10441070    /* Check that at least one service is enabled. */
    1045     if (vboxServiceCountEnabledServices() == 0)
     1071    if (vgsvcCountEnabledServices() == 0)
    10461072        return RTMsgErrorExit(RTEXITCODE_SYNTAX, "At least one service must be enabled\n");
    10471073
    1048     rc = VBoxServiceLogCreate(strlen(g_szLogFile) ? g_szLogFile : NULL);
     1074    rc = VGSvcLogCreate(g_szLogFile[0] ? g_szLogFile : NULL);
    10491075    if (RT_FAILURE(rc))
    1050         return RTMsgErrorExit(RTEXITCODE_FAILURE, "Failed to create release log \"%s\", rc=%Rrc\n",
    1051                               strlen(g_szLogFile) ? g_szLogFile : "<None>", rc);
     1076        return RTMsgErrorExit(RTEXITCODE_FAILURE, "Failed to create release log '%s', rc=%Rrc\n",
     1077                              g_szLogFile[0] ? g_szLogFile : "<None>", rc);
    10521078
    10531079    /* Call pre-init if we didn't do it already. */
    1054     rcExit = vboxServiceLazyPreInit();
     1080    rcExit = vgsvcLazyPreInit();
    10551081    if (rcExit != RTEXITCODE_SUCCESS)
    10561082        return rcExit;
     
    10841110            || dwErr == ERROR_ACCESS_DENIED)
    10851111        {
    1086             VBoxServiceError("%s is already running! Terminating.\n", g_pszProgName);
     1112            VGSvcError("%s is already running! Terminating.\n", g_pszProgName);
    10871113            return RTEXITCODE_FAILURE;
    10881114        }
    10891115
    1090         VBoxServiceError("CreateMutex failed with last error %u! Terminating.\n", GetLastError());
     1116        VGSvcError("CreateMutex failed with last error %u! Terminating.\n", GetLastError());
    10911117        return RTEXITCODE_FAILURE;
    10921118    }
     
    10961122#endif /* !RT_OS_WINDOWS */
    10971123
    1098     VBoxServiceVerbose(0, "%s r%s started. Verbose level = %d\n",
    1099                        RTBldCfgVersion(), RTBldCfgRevisionStr(), g_cVerbosity);
     1124    VGSvcVerbose(0, "%s r%s started. Verbose level = %d\n", RTBldCfgVersion(), RTBldCfgRevisionStr(), g_cVerbosity);
    11001125
    11011126    /*
     
    11051130    {
    11061131#ifdef RT_OS_WINDOWS
    1107         VBoxServiceVerbose(2, "Starting service dispatcher ...\n");
    1108         rcExit = VBoxServiceWinEnterCtrlDispatcher();
     1132        VGSvcVerbose(2, "Starting service dispatcher ...\n");
     1133        rcExit = VGSvcWinEnterCtrlDispatcher();
    11091134#else
    1110         VBoxServiceVerbose(1, "Daemonizing...\n");
     1135        VGSvcVerbose(1, "Daemonizing...\n");
    11111136        rc = VbglR3Daemonize(false /* fNoChDir */, false /* fNoClose */,
    11121137                             false /* fRespawn */, NULL /* pcRespawn */);
    11131138        if (RT_FAILURE(rc))
    1114             return VBoxServiceError("Daemon failed: %Rrc\n", rc);
     1139            return VGSvcError("Daemon failed: %Rrc\n", rc);
    11151140        /* in-child */
    11161141#endif
     
    11291154         */
    11301155#ifdef RT_OS_WINDOWS
    1131 # ifndef RT_OS_NT4
     1156# ifndef RT_OS_NT4 /** @todo r=bird: What's RT_OS_NT4??? */
    11321157        /* Install console control handler. */
    1133         if (!SetConsoleCtrlHandler((PHANDLER_ROUTINE)VBoxServiceConsoleControlHandler, TRUE /* Add handler */))
    1134         {
    1135             VBoxServiceError("Unable to add console control handler, error=%ld\n", GetLastError());
     1158        if (!SetConsoleCtrlHandler((PHANDLER_ROUTINE)vgsvcWinConsoleControlHandler, TRUE /* Add handler */))
     1159        {
     1160            VGSvcError("Unable to add console control handler, error=%ld\n", GetLastError());
    11361161            /* Just skip this error, not critical. */
    11371162        }
    11381163# endif /* !RT_OS_NT4 */
    11391164#endif /* RT_OS_WINDOWS */
    1140         rc = VBoxServiceStartServices();
     1165        rc = VGSvcStartServices();
    11411166        RTFILE hPidFile = NIL_RTFILE;
    11421167        if (RT_SUCCESS(rc))
     
    11451170        rcExit = RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    11461171        if (RT_SUCCESS(rc))
    1147             VBoxServiceMainWait();
     1172            VGSvcMainWait();
    11481173        if (g_szPidFile[0] && hPidFile != NIL_RTFILE)
    11491174            VbglR3ClosePidFile(g_szPidFile, hPidFile);
     
    11531178        if (!SetConsoleCtrlHandler((PHANDLER_ROUTINE)NULL, FALSE /* Remove handler */))
    11541179        {
    1155             VBoxServiceError("Unable to remove console control handler, error=%ld\n", GetLastError());
     1180            VGSvcError("Unable to remove console control handler, error=%ld\n", GetLastError());
    11561181            /* Just skip this error, not critical. */
    11571182        }
     
    11611186         * through the console control handler. So only do the stopping of services here on other platforms
    11621187         * where the break/shutdown/whatever signal was just received. */
    1163         VBoxServiceStopServices();
     1188        VGSvcStopServices();
    11641189#endif /* RT_OS_WINDOWS */
    11651190    }
    1166     VBoxServiceReportStatus(VBoxGuestFacilityStatus_Terminated);
     1191    VGSvcReportStatus(VBoxGuestFacilityStatus_Terminated);
    11671192
    11681193#ifdef RT_OS_WINDOWS
     
    11731198#endif
    11741199
    1175     VBoxServiceVerbose(0, "Ended.\n");
     1200    VGSvcVerbose(0, "Ended.\n");
    11761201
    11771202#ifdef DEBUG
     
    11801205#endif
    11811206
    1182     VBoxServiceLogDestroy();
     1207    VGSvcLogDestroy();
    11831208
    11841209    return rcExit;
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceAutoMount.cpp

    r57358 r58029  
    11/* $Id$ */
    22/** @file
    3  * VBoxService - Auto-mounting for Shared Folders.
     3 * VBoxService - Auto-mounting for Shared Folders, only Linux & Solaris atm.
    44 */
    55
     
    5454
    5555#ifndef _PATH_MOUNTED
    56  #ifdef RT_OS_SOLARIS
    57   #define _PATH_MOUNTED                          "/etc/mnttab"
    58  #else
    59   #define _PATH_MOUNTED                          "/etc/mtab"
    60  #endif
     56# ifdef RT_OS_SOLARIS
     57define _PATH_MOUNTED                          "/etc/mnttab"
     58# else
     59define _PATH_MOUNTED                          "/etc/mtab"
     60# endif
    6161#endif
    6262
     
    7171
    7272
    73 /** @copydoc VBOXSERVICE::pfnInit */
    74 static DECLCALLBACK(int) VBoxServiceAutoMountInit(void)
    75 {
    76     VBoxServiceVerbose(3, "VBoxServiceAutoMountInit\n");
     73/**
     74 * @interface_method_impl{VBOXSERVICE,pfnInit}
     75 */
     76static DECLCALLBACK(int) vbsvcAutoMountInit(void)
     77{
     78    VGSvcVerbose(3, "vbsvcAutoMountInit\n");
    7779
    7880    int rc = RTSemEventMultiCreate(&g_AutoMountEvent);
     
    8284    if (RT_SUCCESS(rc))
    8385    {
    84         VBoxServiceVerbose(3, "VBoxServiceAutoMountInit: Service Client ID: %#x\n", g_SharedFoldersSvcClientID);
     86        VGSvcVerbose(3, "vbsvcAutoMountInit: Service Client ID: %#x\n", g_SharedFoldersSvcClientID);
    8587    }
    8688    else
     
    9092        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
    9193        {
    92             VBoxServiceVerbose(0, "VBoxServiceAutoMountInit: Shared Folders service is not available\n");
     94            VGSvcVerbose(0, "vbsvcAutoMountInit: Shared Folders service is not available\n");
    9395            rc = VERR_SERVICE_DISABLED;
    9496        }
    9597        else
    96             VBoxServiceError("Control: Failed to connect to the Shared Folders service! Error: %Rrc\n", rc);
     98            VGSvcError("Control: Failed to connect to the Shared Folders service! Error: %Rrc\n", rc);
    9799        RTSemEventMultiDestroy(g_AutoMountEvent);
    98100        g_AutoMountEvent = NIL_RTSEMEVENTMULTI;
     
    103105
    104106
    105 /** @todo Integrate into RTFsQueryMountpoint().  */
    106 static bool VBoxServiceAutoMountShareIsMounted(const char *pszShare,
    107                                                char *pszMountPoint, size_t cbMountPoint)
     107/**
     108 * @todo Integrate into RTFsQueryMountpoint()?
     109 */
     110static bool vbsvcAutoMountShareIsMounted(const char *pszShare, char *pszMountPoint, size_t cbMountPoint)
    108111{
    109112    AssertPtrReturn(pszShare, VERR_INVALID_PARAMETER);
     
    112115
    113116    bool fMounted = false;
    114     /* @todo What to do if we have a relative path in mtab instead
     117    /** @todo What to do if we have a relative path in mtab instead
    115118     *       of an absolute one ("temp" vs. "/media/temp")?
    116119     * procfs contains the full path but not the actual share name ...
     
    119122    FILE *pFh = fopen(_PATH_MOUNTED, "r");
    120123    if (!pFh)
    121         VBoxServiceError("VBoxServiceAutoMountShareIsMounted: Could not open mount tab \"%s\"!\n",
    122                          _PATH_MOUNTED);
     124        VGSvcError("vbsvcAutoMountShareIsMounted: Could not open mount tab '%s'!\n", _PATH_MOUNTED);
    123125    else
    124126    {
     
    136138    }
    137139#else
    138     FILE *pFh = setmntent(_PATH_MOUNTED, "r+t");
     140    FILE *pFh = setmntent(_PATH_MOUNTED, "r+t"); /** @todo r=bird: why open it for writing? (the '+') */
    139141    if (pFh == NULL)
    140         VBoxServiceError("VBoxServiceAutoMountShareIsMounted: Could not open mount tab \"%s\"!\n",
    141                          _PATH_MOUNTED);
     142        VGSvcError("vbsvcAutoMountShareIsMounted: Could not open mount tab '%s'!\n", _PATH_MOUNTED);
    142143    else
    143144    {
     
    156157#endif
    157158
    158     VBoxServiceVerbose(4, "VBoxServiceAutoMountShareIsMounted: Share \"%s\" at mount point \"%s\" = %s\n",
     159    VGSvcVerbose(4, "vbsvcAutoMountShareIsMounted: Share '%s' at mount point '%s' = %s\n",
    159160                       pszShare, fMounted ? pszMountPoint : "<None>", fMounted ? "Yes" : "No");
    160161    return fMounted;
     
    162163
    163164
    164 static int VBoxServiceAutoMountUnmount(const char *pszMountPoint)
     165/**
     166 * Unmounts a shared folder.
     167 *
     168 * @returns VBox status code
     169 * @param   pszMountPoint   The shared folder mount point.
     170 */
     171static int vbsvcAutoMountUnmount(const char *pszMountPoint)
    165172{
    166173    AssertPtrReturn(pszMountPoint, VERR_INVALID_PARAMETER);
     
    174181        if (r == 0)
    175182            break;
     183/** @todo r=bird: Why do sleep 5 seconds after the final retry?
     184 *  May also be a good idea to check for EINVAL or other signs that someone
     185 *  else have already unmounted the share. */
    176186        RTThreadSleep(5000); /* Wait a while ... */
    177187    }
    178     if (r == -1)
     188    if (r == -1)  /** @todo r=bird: RTThreadSleep set errno.  */
    179189        rc = RTErrConvertFromErrno(errno);
    180190    return rc;
     
    182192
    183193
    184 static int VBoxServiceAutoMountPrepareMountPoint(const char *pszMountPoint, const char *pszShareName,
    185                                                  vbsf_mount_opts *pOpts)
     194/**
     195 * Prepares a mount point (create it, set group and mode).
     196 *
     197 * @returns VBox status code
     198 * @param   pszMountPoint   The mount point.
     199 * @param   pszShareName    Unused.
     200 * @param   pOpts           For getting the group ID.
     201 */
     202static int vbsvcAutoMountPrepareMountPoint(const char *pszMountPoint, const char *pszShareName, vbsf_mount_opts *pOpts)
    186203{
    187204    AssertPtrReturn(pOpts, VERR_INVALID_PARAMETER);
     
    201218                if (rc == VERR_WRITE_PROTECT)
    202219                {
    203                     VBoxServiceVerbose(3, "VBoxServiceAutoMountPrepareMountPoint: Mount directory \"%s\" already is used/mounted\n", pszMountPoint);
     220                    VGSvcVerbose(3, "vbsvcAutoMountPrepareMountPoint: Mount directory '%s' already is used/mounted\n",
     221                                       pszMountPoint);
    204222                    rc = VINF_SUCCESS;
    205223                }
    206224                else
    207                     VBoxServiceError("VBoxServiceAutoMountPrepareMountPoint: Could not set mode %RTfmode for mount directory \"%s\", rc = %Rrc\n",
     225                    VGSvcError("vbsvcAutoMountPrepareMountPoint: Could not set mode %RTfmode for mount directory '%s', rc = %Rrc\n",
    208226                                     fMode, pszMountPoint, rc);
    209227            }
    210228        }
    211229        else
    212             VBoxServiceError("VBoxServiceAutoMountPrepareMountPoint: Could not set permissions for mount directory \"%s\", rc = %Rrc\n",
     230            VGSvcError("vbsvcAutoMountPrepareMountPoint: Could not set permissions for mount directory '%s', rc = %Rrc\n",
    213231                             pszMountPoint, rc);
    214232    }
    215233    else
    216         VBoxServiceError("VBoxServiceAutoMountPrepareMountPoint: Could not create mount directory \"%s\" with mode %RTfmode, rc = %Rrc\n",
     234        VGSvcError("vbsvcAutoMountPrepareMountPoint: Could not create mount directory '%s' with mode %RTfmode, rc = %Rrc\n",
    217235                         pszMountPoint, fMode, rc);
    218236    return rc;
     
    220238
    221239
    222 static int VBoxServiceAutoMountSharedFolder(const char *pszShareName, const char *pszMountPoint,
    223                                             vbsf_mount_opts *pOpts)
     240/**
     241 * Mounts a shared folder.
     242 *
     243 * @returns VBox status code reflecting unmount and mount point preparation
     244 *          results, but not actual mounting
     245 *
     246 * @param   pszShareName    The shared folder name.
     247 * @param   pszMountPoint   The mount point.
     248 * @param   pOpts           The mount options.
     249 */
     250static int vbsvcAutoMountSharedFolder(const char *pszShareName, const char *pszMountPoint, struct vbsf_mount_opts *pOpts)
    224251{
    225252    AssertPtr(pOpts);
    226253
    227254    int rc = VINF_SUCCESS;
     255    bool fSkip = false;
     256
     257    /* Already mounted? */
    228258    char szAlreadyMountedTo[RTPATH_MAX];
    229     bool fSkip = false;
    230 
    231     /* Already mounted? */
    232     if (VBoxServiceAutoMountShareIsMounted(pszShareName, szAlreadyMountedTo, sizeof(szAlreadyMountedTo)))
     259    if (vbsvcAutoMountShareIsMounted(pszShareName, szAlreadyMountedTo, sizeof(szAlreadyMountedTo)))
    233260    {
    234261        fSkip = true;
     
    236263        if (RTStrICmp(pszMountPoint, szAlreadyMountedTo))
    237264        {
    238             VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already mounted to \"%s\", unmounting ...\n",
     265            VGSvcVerbose(3, "vbsvcAutoMountWorker: Shared folder '%s' already mounted to '%s', unmounting ...\n",
    239266                               pszShareName, szAlreadyMountedTo);
    240             rc = VBoxServiceAutoMountUnmount(szAlreadyMountedTo);
    241             if (RT_FAILURE(rc))
    242                 VBoxServiceError("VBoxServiceAutoMountWorker: Failed to unmount \"%s\", %s (%d)!\n",
    243                                  szAlreadyMountedTo, strerror(errno), errno);
     267            rc = vbsvcAutoMountUnmount(szAlreadyMountedTo);
     268            if (RT_SUCCESS(rc))
     269                fSkip = false;
    244270            else
    245                 fSkip = false;
     271                VGSvcError("vbsvcAutoMountWorker: Failed to unmount '%s', %s (%d)! (rc=%Rrc)\n",
     272                                 szAlreadyMountedTo, strerror(errno), errno, rc); /** @todo errno isn't reliable at this point */
    246273        }
    247274        if (fSkip)
    248             VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already mounted to \"%s\", skipping\n",
     275            VGSvcVerbose(3, "vbsvcAutoMountWorker: Shared folder '%s' already mounted to '%s', skipping\n",
    249276                               pszShareName, szAlreadyMountedTo);
    250277    }
    251278
    252279    if (!fSkip && RT_SUCCESS(rc))
    253         rc = VBoxServiceAutoMountPrepareMountPoint(pszMountPoint, pszShareName, pOpts);
     280        rc = vbsvcAutoMountPrepareMountPoint(pszMountPoint, pszShareName, pOpts);
    254281    if (!fSkip && RT_SUCCESS(rc))
    255282    {
    256283#ifdef RT_OS_SOLARIS
    257         char achOptBuf[MAX_MNTOPT_STR] = { '\0', };
    258         int flags = 0;
     284        char szOptBuf[MAX_MNTOPT_STR] = { '\0', };
     285        int fFlags = 0;
    259286        if (pOpts->ronly)
    260             flags |= MS_RDONLY;
    261         RTStrPrintf(achOptBuf, sizeof(achOptBuf), "uid=%d,gid=%d,dmode=%0o,fmode=%0o,dmask=%0o,fmask=%0o",
     287            fFlags |= MS_RDONLY;
     288        RTStrPrintf(szOptBuf, sizeof(szOptBuf), "uid=%d,gid=%d,dmode=%0o,fmode=%0o,dmask=%0o,fmask=%0o",
    262289                    pOpts->uid, pOpts->gid, pOpts->dmode, pOpts->fmode, pOpts->dmask, pOpts->fmask);
    263290        int r = mount(pszShareName,
    264291                      pszMountPoint,
    265                       flags | MS_OPTIONSTR,
     292                      fFlags | MS_OPTIONSTR,
    266293                      "vboxfs",
    267294                      NULL,                     /* char *dataptr */
    268295                      0,                        /* int datalen */
    269                       achOptBuf,
    270                       sizeof(achOptBuf));
     296                      szOptBuf,
     297                      sizeof(szOptBuf));
    271298        if (r == 0)
    272         {
    273             VBoxServiceVerbose(0, "VBoxServiceAutoMountWorker: Shared folder \"%s\" was mounted to \"%s\"\n", pszShareName, pszMountPoint);
    274         }
    275         else
    276         {
    277             if (errno != EBUSY) /* Share is already mounted? Then skip error msg. */
    278                 VBoxServiceError("VBoxServiceAutoMountWorker: Could not mount shared folder \"%s\" to \"%s\", error = %s\n",
    279                                  pszShareName, pszMountPoint, strerror(errno));
    280         }
    281 #else /* !RT_OS_SOLARIS */
    282         unsigned long flags = MS_NODEV;
     299            VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' was mounted to '%s'\n", pszShareName, pszMountPoint);
     300        else if (errno != EBUSY) /* Share is already mounted? Then skip error msg. */
     301            VGSvcError("vbsvcAutoMountWorker: Could not mount shared folder '%s' to '%s', error = %s\n",
     302                             pszShareName, pszMountPoint, strerror(errno));
     303
     304#elif defined(RT_OS_LINUX)
     305        unsigned long fFlags = MS_NODEV;
    283306
    284307        const char *szOptions = { "rw" };
     
    305328                      pszMountPoint,
    306329                      "vboxsf",
    307                       flags,
     330                      fFlags,
    308331                      &mntinf);
    309332        if (r == 0)
    310333        {
    311             VBoxServiceVerbose(0, "VBoxServiceAutoMountWorker: Shared folder \"%s\" was mounted to \"%s\"\n", pszShareName, pszMountPoint);
     334            VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' was mounted to '%s'\n",
     335                               pszShareName, pszMountPoint);
    312336
    313337            r = vbsfmount_complete(pszShareName, pszMountPoint, flags, pOpts);
     
    319343
    320344                case 1:
    321                     VBoxServiceError("VBoxServiceAutoMountWorker: Could not update mount table (failed to create memstream): %s\n", strerror(errno));
     345                    VGSvcError("vbsvcAutoMountWorker: Could not update mount table (failed to create memstream): %s\n",
     346                                     strerror(errno));
    322347                    break;
    323348
    324349                case 2:
    325                     VBoxServiceError("VBoxServiceAutoMountWorker: Could not open mount table for update: %s\n", strerror(errno));
     350                    VGSvcError("vbsvcAutoMountWorker: Could not open mount table for update: %s\n", strerror(errno));
    326351                    break;
    327352
    328353                case 3:
    329                     /* VBoxServiceError("VBoxServiceAutoMountWorker: Could not add an entry to the mount table: %s\n", strerror(errno)); */
     354                    /* VGSvcError("vbsvcAutoMountWorker: Could not add an entry to the mount table: %s\n", strerror(errno)); */
    330355                    errno = 0;
    331356                    break;
    332357
    333358                default:
    334                     VBoxServiceError("VBoxServiceAutoMountWorker: Unknown error while completing mount operation: %d\n", r);
     359                    VGSvcError("vbsvcAutoMountWorker: Unknown error while completing mount operation: %d\n", r);
    335360                    break;
    336361            }
     
    340365            if (errno == EPROTO)
    341366            {
    342                 VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Messed up share name, re-trying ...\n");
     367                VGSvcVerbose(3, "vbsvcAutoMountWorker: Messed up share name, re-trying ...\n");
     368
     369                /** @todo r=bird: What on earth is going on here?????  Why can't you
     370                 *        strcpy(mntinf.name, pszShareName) to fix it again? */
    343371
    344372                /* Sometimes the mount utility messes up the share name.  Try to
    345373                 * un-mangle it again. */
    346                 char szCWD[4096];
     374                char szCWD[RTPATH_MAX];
    347375                size_t cchCWD;
    348376                if (!getcwd(szCWD, sizeof(szCWD)))
    349                     VBoxServiceError("VBoxServiceAutoMountWorker: Failed to get the current working directory\n");
     377                {
     378                    VGSvcError("vbsvcAutoMountWorker: Failed to get the current working directory\n");
     379                    szCWD[0] = '\0';
     380                }
    350381                cchCWD = strlen(szCWD);
    351382                if (!strncmp(pszMountPoint, szCWD, cchCWD))
     
    360391            if (errno == EPROTO)
    361392            {
    362                 VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Re-trying with old mounting structure ...\n");
     393                VGSvcVerbose(3, "vbsvcAutoMountWorker: Re-trying with old mounting structure ...\n");
    363394
    364395                /* New mount tool with old vboxsf module? Try again using the old
     
    379410                     * mount point. */
    380411                    case EINVAL:
    381                         VBoxServiceVerbose(0, "VBoxServiceAutoMountWorker: Shared folder \"%s\" already is mounted!\n", pszShareName);
     412                        VGSvcVerbose(0, "vbsvcAutoMountWorker: Shared folder '%s' already is mounted!\n", pszShareName);
    382413                        /* Ignore this error! */
    383414                        break;
     
    387418
    388419                    default:
    389                         VBoxServiceError("VBoxServiceAutoMountWorker: Could not mount shared folder \"%s\" to \"%s\": %s (%d)\n",
     420                        VGSvcError("vbsvcAutoMountWorker: Could not mount shared folder '%s' to '%s': %s (%d)\n",
    390421                                         pszShareName, pszMountPoint, strerror(errno), errno);
    391422                        rc = RTErrConvertFromErrno(errno);
     
    394425            }
    395426        }
    396 #endif /* !RT_OS_SOLARIS */
    397     }
    398     VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Mounting returned with rc=%Rrc\n", rc);
     427#else
     428# error "PORTME"
     429#endif
     430    }
     431    VGSvcVerbose(3, "vbsvcAutoMountWorker: Mounting returned with rc=%Rrc\n", rc);
    399432    return rc;
    400433}
    401434
    402 static int VBoxServiceAutoMountProcessMappings(PVBGLR3SHAREDFOLDERMAPPING paMappings, uint32_t cMappings,
    403                                                const char *pszMountDir, const char *pszSharePrefix, uint32_t uClientID)
     435
     436/**
     437 * Processes shared folder mappings retrieved from the host.
     438 *
     439 * @returns VBox status code.
     440 * @param   paMappings      The mappings.
     441 * @param   cMappings       The number of mappings.
     442 * @param   pszMountDir     The mount directory.
     443 * @param   pszSharePrefix  The share prefix.
     444 * @param   uClientID       The shared folder service (HGCM) client ID.
     445 */
     446static int vbsvcAutoMountProcessMappings(PCVBGLR3SHAREDFOLDERMAPPING paMappings, uint32_t cMappings,
     447                                         const char *pszMountDir, const char *pszSharePrefix, uint32_t uClientID)
    404448{
    405449    if (cMappings == 0)
     
    410454    AssertReturn(uClientID > 0, VERR_INVALID_PARAMETER);
    411455
     456    /** @todo r=bird: Why is this loop schitzoid about status codes? It quits if
     457     * RTPathJoin fails (i.e. if the user specifies a very long name), but happily
     458     * continues if RTStrAPrintf failes (mem alloc).
     459     *
     460     * It also happily continues if the 'vboxsf' group is missing, which is a waste
     461     * of effort... In fact, retrieving the group ID could probably be done up
     462     * front, outside the loop. */
    412463    int rc = VINF_SUCCESS;
    413464    for (uint32_t i = 0; i < cMappings && RT_SUCCESS(rc); i++)
     
    418469            && *pszShareName)
    419470        {
    420             VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Connecting share %u (%s) ...\n", i+1, pszShareName);
    421 
     471            VGSvcVerbose(3, "vbsvcAutoMountWorker: Connecting share %u (%s) ...\n", i+1, pszShareName);
     472
     473            /** @todo r=bird: why do you copy things twice here and waste heap space?
     474             * szMountPoint has a fixed size.
     475             * @code
     476             * char szMountPoint[RTPATH_MAX];
     477             * rc = RTPathJoin(szMountPoint, sizeof(szMountPoint), pszMountDir, *pszSharePrefix ? pszSharePrefix : pszShareName);
     478             * if (RT_SUCCESS(rc) && *pszSharePrefix)
     479             *     rc = RTStrCat(szMountPoint, sizeof(szMountPoint), pszShareName);
     480             * @endcode */
    422481            char *pszShareNameFull = NULL;
    423482            if (RTStrAPrintf(&pszShareNameFull, "%s%s", pszSharePrefix, pszShareName) > 0)
     
    427486                if (RT_SUCCESS(rc))
    428487                {
    429                     VBoxServiceVerbose(4, "VBoxServiceAutoMountWorker: Processing mount point \"%s\"\n", szMountPoint);
     488                    VGSvcVerbose(4, "vbsvcAutoMountWorker: Processing mount point '%s'\n", szMountPoint);
    430489
    431490                    struct group *grp_vboxsf = getgrnam("vboxsf");
     
    451510                        };
    452511
    453                         rc = VBoxServiceAutoMountSharedFolder(pszShareName, szMountPoint, &mount_opts);
     512                        rc = vbsvcAutoMountSharedFolder(pszShareName, szMountPoint, &mount_opts);
    454513                    }
    455514                    else
    456                         VBoxServiceError("VBoxServiceAutoMountWorker: Group \"vboxsf\" does not exist\n");
     515                        VGSvcError("vbsvcAutoMountWorker: Group 'vboxsf' does not exist\n");
    457516                }
    458517                else
    459                     VBoxServiceError("VBoxServiceAutoMountWorker: Unable to join mount point/prefix/shrae, rc = %Rrc\n", rc);
     518                    VGSvcError("vbsvcAutoMountWorker: Unable to join mount point/prefix/shrae, rc = %Rrc\n", rc);
    460519                RTStrFree(pszShareNameFull);
    461520            }
    462521            else
    463                 VBoxServiceError("VBoxServiceAutoMountWorker: Unable to allocate full share name\n");
     522                VGSvcError("vbsvcAutoMountWorker: Unable to allocate full share name\n");
    464523            RTStrFree(pszShareName);
    465524        }
    466525        else
    467             VBoxServiceError("VBoxServiceAutoMountWorker: Error while getting the shared folder name for root node = %u, rc = %Rrc\n",
     526            VGSvcError("vbsvcAutoMountWorker: Error while getting the shared folder name for root node = %u, rc = %Rrc\n",
    468527                             paMappings[i].u32Root, rc);
    469528    } /* for cMappings. */
     
    472531
    473532
    474 /** @copydoc VBOXSERVICE::pfnWorker */
    475 DECLCALLBACK(int) VBoxServiceAutoMountWorker(bool volatile *pfShutdown)
     533/**
     534 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     535 */
     536static DECLCALLBACK(int) vbsvcAutoMountWorker(bool volatile *pfShutdown)
    476537{
    477538    /*
     
    494555        if (RT_SUCCESS(rc))
    495556        {
    496             VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder mount dir set to \"%s\"\n", pszMountDir);
     557            VGSvcVerbose(3, "vbsvcAutoMountWorker: Shared folder mount dir set to '%s'\n", pszMountDir);
    497558
    498559            char *pszSharePrefix;
     
    500561            if (RT_SUCCESS(rc))
    501562            {
    502                 VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Shared folder mount prefix set to \"%s\"\n", pszSharePrefix);
     563                VGSvcVerbose(3, "vbsvcAutoMountWorker: Shared folder mount prefix set to '%s'\n", pszSharePrefix);
    503564#ifdef USE_VIRTUAL_SHARES
    504565                /* Check for a fixed/virtual auto-mount share. */
    505566                if (VbglR3SharedFolderExists(g_SharedFoldersSvcClientID, "vbsfAutoMount"))
    506567                {
    507                     VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Host supports auto-mount root\n");
     568                    VGSvcVerbose(3, "vbsvcAutoMountWorker: Host supports auto-mount root\n");
    508569                }
    509570                else
    510571                {
    511572#endif
    512                     VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Got %u shared folder mappings\n", cMappings);
    513                     rc = VBoxServiceAutoMountProcessMappings(paMappings, cMappings, pszMountDir, pszSharePrefix, g_SharedFoldersSvcClientID);
     573                    VGSvcVerbose(3, "vbsvcAutoMountWorker: Got %u shared folder mappings\n", cMappings);
     574                    rc = vbsvcAutoMountProcessMappings(paMappings, cMappings, pszMountDir, pszSharePrefix, g_SharedFoldersSvcClientID);
    514575#ifdef USE_VIRTUAL_SHARES
    515576                }
     
    518579            } /* Mount share prefix. */
    519580            else
    520                 VBoxServiceError("VBoxServiceAutoMountWorker: Error while getting the shared folder mount prefix, rc = %Rrc\n", rc);
     581                VGSvcError("vbsvcAutoMountWorker: Error while getting the shared folder mount prefix, rc = %Rrc\n", rc);
    521582            RTStrFree(pszMountDir);
    522583        }
    523584        else
    524             VBoxServiceError("VBoxServiceAutoMountWorker: Error while getting the shared folder directory, rc = %Rrc\n", rc);
     585            VGSvcError("vbsvcAutoMountWorker: Error while getting the shared folder directory, rc = %Rrc\n", rc);
    525586        VbglR3SharedFolderFreeMappings(paMappings);
    526587    }
    527588    else if (RT_FAILURE(rc))
    528         VBoxServiceError("VBoxServiceAutoMountWorker: Error while getting the shared folder mappings, rc = %Rrc\n", rc);
     589        VGSvcError("vbsvcAutoMountWorker: Error while getting the shared folder mappings, rc = %Rrc\n", rc);
    529590    else
    530         VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: No shared folder mappings found\n");
     591        VGSvcVerbose(3, "vbsvcAutoMountWorker: No shared folder mappings found\n");
    531592
    532593    /*
     
    534595     * the semantics of the main thread's start/stop sub-threads handling.
    535596     *
    536      * This thread exits so fast while doing its own startup in VBoxServiceStartServices()
    537      * that this->fShutdown flag is set to true in VBoxServiceThread() before we have the
    538      * chance to check for a service failure in VBoxServiceStartServices() to indicate
     597     * This thread exits so fast while doing its own startup in VGSvcStartServices()
     598     * that this->fShutdown flag is set to true in VGSvcThread() before we have the
     599     * chance to check for a service failure in VGSvcStartServices() to indicate
    539600     * a VBoxService startup error.
    540601     *
     
    555616    g_AutoMountEvent = NIL_RTSEMEVENTMULTI;
    556617
    557     VBoxServiceVerbose(3, "VBoxServiceAutoMountWorker: Finished with rc=%Rrc\n", rc);
     618    VGSvcVerbose(3, "vbsvcAutoMountWorker: Finished with rc=%Rrc\n", rc);
    558619    return VINF_SUCCESS;
    559620}
    560621
    561 /** @copydoc VBOXSERVICE::pfnTerm */
    562 static DECLCALLBACK(void) VBoxServiceAutoMountTerm(void)
    563 {
    564     VBoxServiceVerbose(3, "VBoxServiceAutoMountTerm\n");
     622
     623/**
     624 * @interface_method_impl{VBOXSERVICE,pfnTerm}
     625 */
     626static DECLCALLBACK(void) vbsvcAutoMountTerm(void)
     627{
     628    VGSvcVerbose(3, "vbsvcAutoMountTerm\n");
    565629
    566630    VbglR3SharedFolderDisconnect(g_SharedFoldersSvcClientID);
     
    576640
    577641
    578 /** @copydoc VBOXSERVICE::pfnStop */
    579 static DECLCALLBACK(void) VBoxServiceAutoMountStop(void)
     642/**
     643 * @interface_method_impl{VBOXSERVICE,pfnStop}
     644 */
     645static DECLCALLBACK(void) vbsvcAutoMountStop(void)
    580646{
    581647    /*
     
    603669    NULL,
    604670    /* methods */
    605     VBoxServiceDefaultPreInit,
    606     VBoxServiceDefaultOption,
    607     VBoxServiceAutoMountInit,
    608     VBoxServiceAutoMountWorker,
    609     VBoxServiceAutoMountStop,
    610     VBoxServiceAutoMountTerm
     671    VGSvcDefaultPreInit,
     672    VGSvcDefaultOption,
     673    vbsvcAutoMountInit,
     674    vbsvcAutoMountWorker,
     675    vbsvcAutoMountStop,
     676    vbsvcAutoMountTerm
    611677};
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceBalloon.cpp

    r57358 r58029  
    6060 * Check whether madvise() works.
    6161 */
    62 static void VBoxServiceBalloonInitMadvise(void)
     62static void vgsvcBalloonInitMadvise(void)
    6363{
    6464#ifdef RT_OS_LINUX
     
    7777 * and protect it against fork() in R0. See also suplibOsPageAlloc().
    7878 */
    79 static void* VBoxServiceBalloonAllocChunk(void)
     79static void *VGSvcBalloonAllocChunk(void)
    8080{
    8181    size_t cb = VMMDEV_MEMORY_BALLOON_CHUNK_SIZE;
     
    126126
    127127/**
    128  * Free an allocated chunk undoing VBoxServiceBalloonAllocChunk().
    129  */
    130 static void VBoxServiceBalloonFreeChunk(void *pv)
     128 * Free an allocated chunk undoing VGSvcBalloonAllocChunk().
     129 */
     130static void vgsvcBalloonFreeChunk(void *pv)
    131131{
    132132    char *pu8 = (char*)pv;
     
    159159 * @param   cNewChunks     The new number of 1MB chunks in the balloon.
    160160 */
    161 static int VBoxServiceBalloonSetUser(uint32_t cNewChunks)
     161static int vgsvcBalloonSetUser(uint32_t cNewChunks)
    162162{
    163163    if (cNewChunks == g_cMemBalloonChunks)
    164164        return VINF_SUCCESS;
    165165
    166     VBoxServiceVerbose(3, "VBoxServiceBalloonSetUser: cNewChunks=%u g_cMemBalloonChunks=%u\n", cNewChunks, g_cMemBalloonChunks);
     166    VGSvcVerbose(3, "VBoxServiceBalloonSetUser: cNewChunks=%u g_cMemBalloonChunks=%u\n", cNewChunks, g_cMemBalloonChunks);
    167167    int rc = VINF_SUCCESS;
    168168    if (cNewChunks > g_cMemBalloonChunks)
     
    173173        for (i = g_cMemBalloonChunks; i < cNewChunks; i++)
    174174        {
    175             void *pv = VBoxServiceBalloonAllocChunk();
     175            void *pv = VGSvcBalloonAllocChunk();
    176176            if (!pv)
    177177                break;
     
    193193            else
    194194            {
    195                 VBoxServiceBalloonFreeChunk(pv);
     195                vgsvcBalloonFreeChunk(pv);
    196196                break;
    197197            }
    198198        }
    199         VBoxServiceVerbose(3, "VBoxServiceBalloonSetUser: inflation complete. chunks=%u rc=%d\n", i, rc);
     199        VGSvcVerbose(3, "VBoxServiceBalloonSetUser: inflation complete. chunks=%u rc=%d\n", i, rc);
    200200    }
    201201    else
     
    213213                RTMemProtect(pv, VMMDEV_MEMORY_BALLOON_CHUNK_SIZE, RTMEM_PROT_READ | RTMEM_PROT_WRITE);
    214214#endif
    215                 VBoxServiceBalloonFreeChunk(pv);
     215                vgsvcBalloonFreeChunk(pv);
    216216                g_pavBalloon[i] = NULL;
    217217                g_cMemBalloonChunks--;
     
    219219            else
    220220                break;
    221             VBoxServiceVerbose(3, "VBoxServiceBalloonSetUser: deflation complete. chunks=%u rc=%d\n", i, rc);
     221            VGSvcVerbose(3, "VBoxServiceBalloonSetUser: deflation complete. chunks=%u rc=%d\n", i, rc);
    222222        }
    223223    }
     
    227227
    228228
    229 /** @copydoc VBOXSERVICE::pfnInit */
    230 static DECLCALLBACK(int) VBoxServiceBalloonInit(void)
    231 {
    232     VBoxServiceVerbose(3, "VBoxServiceBalloonInit\n");
     229/**
     230 * @interface_method_impl{VBOXSERVICE,pfnInit}
     231 */
     232static DECLCALLBACK(int) vgsvcBalloonInit(void)
     233{
     234    VGSvcVerbose(3, "VBoxServiceBalloonInit\n");
    233235
    234236    int rc = RTSemEventMultiCreate(&g_MemBalloonEvent);
    235237    AssertRCReturn(rc, rc);
    236238
    237     VBoxServiceBalloonInitMadvise();
     239    vgsvcBalloonInitMadvise();
    238240
    239241    g_cMemBalloonChunks = 0;
     
    245247    if (RT_SUCCESS(rc))
    246248    {
    247         VBoxServiceVerbose(3, "MemBalloon: New balloon size %d MB (%s memory)\n",
     249        VGSvcVerbose(3, "MemBalloon: New balloon size %d MB (%s memory)\n",
    248250                           cNewChunks, fHandleInR3 ? "R3" : "R0");
    249251        if (fHandleInR3)
    250             rc = VBoxServiceBalloonSetUser(cNewChunks);
     252            rc = vgsvcBalloonSetUser(cNewChunks);
    251253        else
    252254            g_cMemBalloonChunks = cNewChunks;
     
    263265            )
    264266        {
    265             VBoxServiceVerbose(0, "MemBalloon: Memory ballooning support is not available\n");
     267            VGSvcVerbose(0, "MemBalloon: Memory ballooning support is not available\n");
    266268            rc = VERR_SERVICE_DISABLED;
    267269        }
    268270        else
    269271        {
    270             VBoxServiceVerbose(3, "MemBalloon: VbglR3MemBalloonRefresh failed with %Rrc\n", rc);
     272            VGSvcVerbose(3, "MemBalloon: VbglR3MemBalloonRefresh failed with %Rrc\n", rc);
    271273            rc = VERR_SERVICE_DISABLED; /** @todo Playing safe for now, figure out the exact status codes here. */
    272274        }
     
    285287 * @param   cbPage          The page size.
    286288 */
    287 uint32_t VBoxServiceBalloonQueryPages(uint32_t cbPage)
     289uint32_t VGSvcBalloonQueryPages(uint32_t cbPage)
    288290{
    289291    Assert(cbPage > 0);
     
    292294
    293295
    294 /** @copydoc VBOXSERVICE::pfnWorker */
    295 DECLCALLBACK(int) VBoxServiceBalloonWorker(bool volatile *pfShutdown)
     296/**
     297 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     298 */
     299static DECLCALLBACK(int) vgsvcBalloonWorker(bool volatile *pfShutdown)
    296300{
    297301    /* Start monitoring of the stat event change event. */
     
    299303    if (RT_FAILURE(rc))
    300304    {
    301         VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: VbglR3CtlFilterMask failed with %Rrc\n", rc);
     305        VGSvcVerbose(3, "VBoxServiceBalloonWorker: VbglR3CtlFilterMask failed with %Rrc\n", rc);
    302306        return rc;
    303307    }
     
    326330            if (RT_SUCCESS(rc))
    327331            {
    328                 VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: new balloon size %d MB (%s memory)\n",
     332                VGSvcVerbose(3, "VBoxServiceBalloonWorker: new balloon size %d MB (%s memory)\n",
    329333                                   cNewChunks, fHandleInR3 ? "R3" : "R0");
    330334                if (fHandleInR3)
    331335                {
    332                     rc = VBoxServiceBalloonSetUser(cNewChunks);
     336                    rc = vgsvcBalloonSetUser(cNewChunks);
    333337                    if (RT_FAILURE(rc))
    334338                    {
    335                         VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: failed to set balloon size %d MB (%s memory)\n",
     339                        VGSvcVerbose(3, "VBoxServiceBalloonWorker: failed to set balloon size %d MB (%s memory)\n",
    336340                                    cNewChunks, fHandleInR3 ? "R3" : "R0");
    337341                    }
    338342                    else
    339                         VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: successfully set requested balloon size %d.\n", cNewChunks);
     343                        VGSvcVerbose(3, "VBoxServiceBalloonWorker: successfully set requested balloon size %d.\n", cNewChunks);
    340344                }
    341345                else
     
    343347            }
    344348            else
    345                 VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: VbglR3MemBalloonRefresh failed with %Rrc\n", rc);
     349                VGSvcVerbose(3, "VBoxServiceBalloonWorker: VbglR3MemBalloonRefresh failed with %Rrc\n", rc);
    346350        }
    347351
     
    359363        if (rc2 != VERR_TIMEOUT && RT_FAILURE(rc2))
    360364        {
    361             VBoxServiceError("VBoxServiceBalloonWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
     365            VGSvcError("VBoxServiceBalloonWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
    362366            rc = rc2;
    363367            break;
     
    368372    rc = VbglR3CtlFilterMask(0, VMMDEV_EVENT_BALLOON_CHANGE_REQUEST);
    369373    if (RT_FAILURE(rc))
    370         VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: VbglR3CtlFilterMask failed with %Rrc\n", rc);
     374        VGSvcVerbose(3, "VBoxServiceBalloonWorker: VbglR3CtlFilterMask failed with %Rrc\n", rc);
    371375
    372376    RTSemEventMultiDestroy(g_MemBalloonEvent);
    373377    g_MemBalloonEvent = NIL_RTSEMEVENTMULTI;
    374378
    375     VBoxServiceVerbose(3, "VBoxServiceBalloonWorker: finished mem balloon change request thread\n");
     379    VGSvcVerbose(3, "VBoxServiceBalloonWorker: finished mem balloon change request thread\n");
    376380    return 0;
    377381}
    378382
    379 /** @copydoc VBOXSERVICE::pfnStop */
    380 static DECLCALLBACK(void) VBoxServiceBalloonStop(void)
     383
     384/**
     385 * @interface_method_impl{VBOXSERVICE,pfnStop}
     386 */
     387static DECLCALLBACK(void) vgsvcBalloonStop(void)
    381388{
    382389    RTSemEventMultiSignal(g_MemBalloonEvent);
     
    398405    NULL,
    399406    /* methods */
    400     VBoxServiceDefaultPreInit,
    401     VBoxServiceDefaultOption,
    402     VBoxServiceBalloonInit,
    403     VBoxServiceBalloonWorker,
    404     VBoxServiceBalloonStop,
    405     VBoxServiceDefaultTerm
     407    VGSvcDefaultPreInit,
     408    VGSvcDefaultOption,
     409    vgsvcBalloonInit,
     410    vgsvcBalloonWorker,
     411    vgsvcBalloonStop,
     412    VGSvcDefaultTerm
    406413};
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceClipboard-os2.cpp

    r57358 r58029  
    124124
    125125
    126 /** @copydoc VBOXSERVICE::pfnPreInit */
    127 static DECLCALLBACK(int) VBoxServiceClipboardOS2PreInit(void)
     126/**
     127 * @interface_method_impl{VBOXSERVICE,pfnPreInit}
     128 */
     129static DECLCALLBACK(int) vgsvcClipboardOs2PreInit(void)
    128130{
    129131    return VINF_SUCCESS;
     
    131133
    132134
    133 /** @copydoc VBOXSERVICE::pfnOption */
    134 static DECLCALLBACK(int) VBoxServiceClipboardOS2Option(const char **ppszShort, int argc, char **argv, int *pi)
     135/**
     136 * @interface_method_impl{VBOXSERVICE,pfnOption}
     137 */
     138static DECLCALLBACK(int) vgsvcClipboardOs2Option(const char **ppszShort, int argc, char **argv, int *pi)
    135139{
    136140    NOREF(ppszShort);
     
    143147
    144148
    145 /** @copydoc VBOXSERVICE::pfnInit */
    146 static DECLCALLBACK(int) VBoxServiceClipboardOS2Init(void)
     149/**
     150 * @interface_method_impl{VBOXSERVICE,pfnInit}
     151 */
     152static DECLCALLBACK(int) vgsvcClipboardOs2Init(void)
    147153{
    148154    int rc = VERR_GENERAL_FAILURE;
     
    164170    if (g_habCtrl  == NULLHANDLE)
    165171    {
    166         VBoxServiceError("WinInitialize(0) failed, lasterr=%lx\n", WinGetLastError(NULLHANDLE));
     172        VGSvcError("WinInitialize(0) failed, lasterr=%lx\n", WinGetLastError(NULLHANDLE));
    167173        return VERR_GENERAL_FAILURE;
    168174    }
     
    184190             * Connect to the clipboard service.
    185191             */
    186             VBoxServiceVerbose(4, "clipboard: connecting\n");
     192            VGSvcVerbose(4, "clipboard: connecting\n");
    187193            rc = VbglR3ClipboardConnect(&g_u32ClientId);
    188194            if (RT_SUCCESS(rc))
     
    196202                    g_atomOdin32UnicodeText = WinFindAtom(WinQuerySystemAtomTable(), SZFMT_ODIN32_UNICODETEXT);
    197203                if (g_atomOdin32UnicodeText == 0)
    198                     VBoxServiceError("WinAddAtom() failed, lasterr=%lx; WinFindAtom() failed, lasterror=%lx\n",
     204                    VGSvcError("WinAddAtom() failed, lasterr=%lx; WinFindAtom() failed, lasterror=%lx\n",
    199205                                     lLastError, WinGetLastError(g_habCtrl));
    200206
    201                 VBoxServiceVerbose(2, "g_u32ClientId=%RX32 g_atomNothingChanged=%#x g_atomOdin32UnicodeText=%#x\n",
     207                VGSvcVerbose(2, "g_u32ClientId=%RX32 g_atomNothingChanged=%#x g_atomOdin32UnicodeText=%#x\n",
    202208                                   g_u32ClientId, g_atomNothingChanged, g_atomOdin32UnicodeText);
    203209                return VINF_SUCCESS;
    204210            }
    205211
    206             VBoxServiceError("Failed to connect to the clipboard service, rc=%Rrc!\n", rc);
     212            VGSvcError("Failed to connect to the clipboard service, rc=%Rrc!\n", rc);
    207213        }
    208214        else
    209             VBoxServiceError("WinAddAtom() failed, lasterr=%lx; WinFindAtom() failed, lasterror=%lx\n",
     215            VGSvcError("WinAddAtom() failed, lasterr=%lx; WinFindAtom() failed, lasterror=%lx\n",
    210216                             lLastError, WinGetLastError(g_habCtrl));
    211217    }
    212218    else
    213         VBoxServiceError("WinCreateMsgQueue(,0) failed, lasterr=%lx\n", WinGetLastError(g_habCtrl));
     219        VGSvcError("WinCreateMsgQueue(,0) failed, lasterr=%lx\n", WinGetLastError(g_habCtrl));
    214220    WinTerminate(g_habCtrl);
    215221    return rc;
     
    220226 * Check that we're still the view / try make us the viewer.
    221227 */
    222 static void VBoxServiceClipboardOS2PollViewer(void)
     228static void vgsvcClipboardOs2PollViewer(void)
    223229{
    224230    const int iOrgState = g_enmState;
     
    242248    {
    243249        if (g_enmState == kClipboardState_Viewer)
    244             VBoxServiceVerbose(3, "clipboard: viewer\n");
     250            VGSvcVerbose(3, "clipboard: viewer\n");
    245251        else
    246             VBoxServiceVerbose(3, "clipboard: poller\n");
     252            VGSvcVerbose(3, "clipboard: poller\n");
    247253    }
    248254}
     
    251257/**
    252258 * Advertise the formats available from the host.
    253  */
    254 static void VBoxServiceClipboardOS2AdvertiseHostFormats(uint32_t fFormats)
     259 *
     260 * @param   fFormats        The formats available on the host.
     261 */
     262static void vgsvcClipboardOs2AdvertiseHostFormats(uint32_t fFormats)
    255263{
    256264    /*
     
    282290                {
    283291                    if (!WinSetClipbrdData(g_habWorker, 0, CF_TEXT, CFI_POINTER))
    284                         VBoxServiceError("WinSetClipbrdData(,,CF_TEXT,) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     292                        VGSvcError("WinSetClipbrdData(,,CF_TEXT,) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    285293                    if (    g_atomOdin32UnicodeText
    286294                        &&  !WinSetClipbrdData(g_habWorker, 0, g_atomOdin32UnicodeText, CFI_POINTER))
    287                         VBoxServiceError("WinSetClipbrdData(,,g_atomOdin32UnicodeText,) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     295                        VGSvcError("WinSetClipbrdData(,,g_atomOdin32UnicodeText,) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    288296                }
    289297                if (fFormats & VBOX_SHARED_CLIPBOARD_FMT_BITMAP)
     
    294302            else
    295303            {
    296                 VBoxServiceError("WinSetClipbrdOwner failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     304                VGSvcError("WinSetClipbrdOwner failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    297305                g_enmState = kClipboardState_Polling;
    298306            }
     
    300308        else
    301309        {
    302             VBoxServiceError("WinEmptyClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     310            VGSvcError("WinEmptyClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    303311            g_enmState = kClipboardState_Polling;
    304312        }
     
    307315        {
    308316            g_fEmptyClipboard = true;
    309             VBoxServiceClipboardOS2PollViewer();
     317            vgsvcClipboardOs2PollViewer();
    310318        }
    311319
     
    313321    }
    314322    else
    315         VBoxServiceError("VBoxServiceClipboardOS2AdvertiseHostFormats: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    316 }
    317 
    318 
    319 static void *VBoxServiceClipboardOs2ConvertToOdin32(uint32_t fFormat, USHORT usFmt, void *pv, uint32_t cb)
     323        VGSvcError("vgsvcClipboardOs2AdvertiseHostFormats: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     324}
     325
     326
     327/**
     328 * Converts (render) to an Odin32 clipboard format.
     329 *
     330 * We ASSUME we get windows data from the host and all we've got to do here is
     331 * slapping an Odin32 header on it.
     332 *
     333 * @returns Pointer to the data (DosFreeMem).
     334 * @param   fFormat             The host format.
     335 * @param   usFmt               The PM/Odin32 format.
     336 * @param   pv                  The data in host formatting.
     337 * @param   cb                  The size of the data.
     338 */
     339static void *vgsvcClipboardOs2ConvertToOdin32(uint32_t fFormat, USHORT usFmt, void *pv, uint32_t cb)
    320340{
    321341    PVOID pvPM = NULL;
     
    334354    else
    335355    {
    336         VBoxServiceError("DosAllocSharedMem(,,%#x,,) -> %ld\n", cb + sizeof(CLIPHEADER), rc);
     356        VGSvcError("DosAllocSharedMem(,,%#x,,) -> %ld\n", cb + sizeof(CLIPHEADER), rc);
    337357        pvPM = NULL;
    338358    }
     
    341361
    342362
    343 static void *VBoxServiceClipboardOs2ConvertToPM(uint32_t fFormat, USHORT usFmt, void *pv, uint32_t cb)
     363/**
     364 * Converts (render) to a PM clipboard format.
     365 *
     366 * @returns Pointer to the data (DosFreeMem).
     367 * @param   fFormat             The host format.
     368 * @param   usFmt               The PM/Odin32 format.
     369 * @param   pv                  The data in host formatting.
     370 * @param   cb                  The size of the data.
     371 */
     372static void *vgsvcClipboardOs2ConvertToPM(uint32_t fFormat, USHORT usFmt, void *pv, uint32_t cb)
    344373{
    345374    void *pvPM = NULL;
     
    354383            )
    355384       )
    356         pvPM = VBoxServiceClipboardOs2ConvertToOdin32(fFormat, usFmt, pv, cb);
     385        pvPM = vgsvcClipboardOs2ConvertToOdin32(fFormat, usFmt, pv, cb);
    357386    else if (usFmt == CF_TEXT)
    358387    {
     
    379408                else
    380409                {
    381                     VBoxServiceError("DosAllocSharedMem(,,%#x,,) -> %ld\n", cb + sizeof(CLIPHEADER), orc);
     410                    VGSvcError("DosAllocSharedMem(,,%#x,,) -> %ld\n", cb + sizeof(CLIPHEADER), orc);
    382411                    pvPM = NULL;
    383412                }
     
    385414            }
    386415            else
    387                 VBoxServiceError("RTStrUtf8ToCurrentCP() -> %Rrc\n", rc);
     416                VGSvcError("RTStrUtf8ToCurrentCP() -> %Rrc\n", rc);
    388417            RTStrFree(pszUtf8);
    389418        }
    390419        else
    391             VBoxServiceError("RTUtf16ToUtf8() -> %Rrc\n", rc);
     420            VGSvcError("RTUtf16ToUtf8() -> %Rrc\n", rc);
    392421    }
    393422
     
    404433 *          request send synchronously by someone who has already opened the
    405434 *          clipboard. We would enter a deadlock trying to open it here.
    406  *
    407  */
    408 static void VBoxServiceClipboardOS2RenderFormat(USHORT usFmt)
     435 */
     436static void vgsvcClipboardOs2RenderFormat(USHORT usFmt)
    409437{
    410438    bool fSucceeded = false;
     
    431459        if (pv)
    432460        {
    433             VBoxServiceVerbose(4, "clipboard: reading host data (%#x)\n", fFormat);
     461            VGSvcVerbose(4, "clipboard: reading host data (%#x)\n", fFormat);
    434462            rc = VbglR3ClipboardReadData(g_u32ClientId, fFormat, pv, cb, &cb);
    435463            if (rc == VINF_BUFFER_OVERFLOW)
     
    445473        if (RT_SUCCESS(rc))
    446474        {
    447             VBoxServiceVerbose(4, "clipboard: read %u bytes\n", cb);
     475            VGSvcVerbose(4, "clipboard: read %u bytes\n", cb);
    448476
    449477            /*
    450478             * Convert the host clipboard data to PM clipboard data and set it.
    451479             */
    452             PVOID pvPM = VBoxServiceClipboardOs2ConvertToPM(fFormat, usFmt, pv, cb);
     480            PVOID pvPM = vgsvcClipboardOs2ConvertToPM(fFormat, usFmt, pv, cb);
    453481            if (pvPM)
    454482            {
     
    457485                else
    458486                {
    459                     VBoxServiceError("VBoxServiceClipboardOS2RenderFormat: WinSetClipbrdData(,%p,%#x, CF_POINTER) failed, lasterror=%lx\n",
     487                    VGSvcError("vgsvcClipboardOs2RenderFormat: WinSetClipbrdData(,%p,%#x, CF_POINTER) failed, lasterror=%lx\n",
    460488                                     pvPM, usFmt, WinGetLastError(g_habWorker));
    461489                    DosFreeMem(pvPM);
     
    465493        }
    466494        else
    467             VBoxServiceError("VBoxServiceClipboardOS2RenderFormat: Failed to query / allocate data. rc=%Rrc cb=%#RX32\n", rc, cb);
     495            VGSvcError("vgsvcClipboardOs2RenderFormat: Failed to query / allocate data. rc=%Rrc cb=%#RX32\n", rc, cb);
    468496    }
    469497
     
    478506        g_enmState = kClipboardState_Polling;
    479507        g_fEmptyClipboard = true;
    480         VBoxServiceClipboardOS2PollViewer();
    481     }
    482 }
    483 
    484 
    485 static void VBoxServiceClipboardOS2SendDataToHost(uint32_t fFormat)
     508        vgsvcClipboardOs2PollViewer();
     509    }
     510}
     511
     512
     513/**
     514 * Sends data to the host.
     515 *
     516 * @param   fFormat     The data format the host is requesting.
     517 */
     518static void vgsvcClipboardOs2SendDataToHost(uint32_t fFormat)
    486519{
    487520    if (WinOpenClipbrd(g_habWorker))
     
    523556        }
    524557        if (!pv)
    525             VBoxServiceError("VBoxServiceClipboardOS2SendDataToHost: couldn't find data for %#x\n", fFormat);
     558            VGSvcError("vgsvcClipboardOs2SendDataToHost: couldn't find data for %#x\n", fFormat);
    526559
    527560        /*
    528561         * Now, sent whatever we've got to the host (it's waiting).
    529562         */
    530         VBoxServiceVerbose(4, "clipboard: writing %pv/%#d (fFormat=%#x)\n", pv, cb, fFormat);
     563        VGSvcVerbose(4, "clipboard: writing %pv/%#d (fFormat=%#x)\n", pv, cb, fFormat);
    531564        VbglR3ClipboardWriteData(g_u32ClientId, fFormat, pv, cb);
    532565        RTUtf16Free(pwszFree);
     
    536569    else
    537570    {
    538         VBoxServiceError("VBoxServiceClipboardOS2SendDataToHost: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    539         VBoxServiceVerbose(4, "clipboard: writing NULL/0 (fFormat=%x)\n", fFormat);
     571        VGSvcError("vgsvcClipboardOs2SendDataToHost: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     572        VGSvcVerbose(4, "clipboard: writing NULL/0 (fFormat=%x)\n", fFormat);
    540573        VbglR3ClipboardWriteData(g_u32ClientId, fFormat, NULL, 0);
    541574    }
     
    546579 * Figure out what's on the clipboard and report it to the host.
    547580 */
    548 static void VBoxServiceClipboardOS2ReportFormats(void)
     581static void vgsvcClipboardOs2ReportFormats(void)
    549582{
    550583    uint32_t fFormats = 0;
     
    557590        /** @todo else bitmaps and stuff. */
    558591    }
    559     VBoxServiceVerbose(4, "clipboard: reporting fFormats=%#x\n", fFormats);
     592    VGSvcVerbose(4, "clipboard: reporting fFormats=%#x\n", fFormats);
    560593    VbglR3ClipboardReportFormats(g_u32ClientId, fFormats);
    561594}
     
    569602 * notify the host.
    570603 */
    571 static void VBoxServiceClipboardOS2Poll(void)
     604static void vgsvcClipboardOs2Poll(void)
    572605{
    573606    if (WinOpenClipbrd(g_habWorker))
     
    583616            {
    584617                g_fEmptyClipboard = false;
    585                 VBoxServiceClipboardOS2ReportFormats();
     618                vgsvcClipboardOs2ReportFormats();
    586619
    587620                /* inject the dummy */
     
    591624                {
    592625                    if (WinSetClipbrdData(g_habWorker, (ULONG)pv, g_atomNothingChanged, CFI_POINTER))
    593                         VBoxServiceVerbose(4, "clipboard: Added dummy item.\n");
     626                        VGSvcVerbose(4, "clipboard: Added dummy item.\n");
    594627                    else
    595628                    {
    596                         VBoxServiceError("VBoxServiceClipboardOS2Poll: WinSetClipbrdData failed, lasterr=%#lx\n", WinGetLastError(g_habWorker));
     629                        VGSvcError("vgsvcClipboardOs2Poll: WinSetClipbrdData failed, lasterr=%#lx\n", WinGetLastError(g_habWorker));
    597630                        DosFreeMem(pv);
    598631                    }
    599632                }
    600633                else
    601                     VBoxServiceError("VBoxServiceClipboardOS2Poll: DosAllocSharedMem(,,1,) -> %ld\n", rc);
     634                    VGSvcError("vgsvcClipboardOs2Poll: DosAllocSharedMem(,,1,) -> %ld\n", rc);
    602635            }
    603636            else if (!g_fEmptyClipboard)
    604637            {
    605638                g_fEmptyClipboard = true;
    606                 VBoxServiceVerbose(3, "Reporting empty clipboard\n");
     639                VGSvcVerbose(3, "Reporting empty clipboard\n");
    607640                VbglR3ClipboardReportFormats(g_u32ClientId, 0);
    608641            }
     
    611644    }
    612645    else
    613         VBoxServiceError("VBoxServiceClipboardOS2Poll: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     646        VGSvcError("vgsvcClipboardOs2Poll: WinOpenClipbrd failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    614647}
    615648
     
    618651 * The clipboard we owned was destroyed by someone else.
    619652 */
    620 static void VBoxServiceClipboardOS2Destroyed(void)
     653static void vgsvcClipboardOs2Destroyed(void)
    621654{
    622655    /* make sure we're no longer the owner. */
     
    627660    g_enmState = kClipboardState_Polling;
    628661    g_fEmptyClipboard = true;
    629     VBoxServiceVerbose(3, "Reporting empty clipboard\n");
     662    VGSvcVerbose(3, "Reporting empty clipboard\n");
    630663    VbglR3ClipboardReportFormats(g_u32ClientId, 0);
    631664
    632     VBoxServiceClipboardOS2PollViewer();
     665    vgsvcClipboardOs2PollViewer();
    633666}
    634667
     
    644677 * @param   mp2     Message parameter 2.
    645678 */
    646 static MRESULT EXPENTRY VBoxServiceClipboardOS2WinProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
     679static MRESULT EXPENTRY vgsvcClipboardOs2WinProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
    647680{
    648681    if (msg != WM_TIMER)
    649         VBoxServiceVerbose(6, "VBoxServiceClipboardOS2WinProc: hwnd=%#lx msg=%#lx mp1=%#lx mp2=%#lx\n", hwnd, msg, mp1, mp2);
     682        VGSvcVerbose(6, "vgsvcClipboardOs2WinProc: hwnd=%#lx msg=%#lx mp1=%#lx mp2=%#lx\n", hwnd, msg, mp1, mp2);
    650683
    651684    switch (msg)
     
    678711                break;
    679712            AssertMsgBreak(g_enmState == kClipboardState_Viewer, ("g_enmState=%d\n", g_enmState));
    680             VBoxServiceClipboardOS2Poll();
     713            vgsvcClipboardOs2Poll();
    681714            break;
    682715
     
    689722                break; /* it's us doing the replacing, ignore. */
    690723            AssertMsgBreak(g_enmState == kClipboardState_Owner, ("g_enmState=%d\n", g_enmState));
    691             VBoxServiceClipboardOS2Destroyed();
     724            vgsvcClipboardOs2Destroyed();
    692725            break;
    693726
     
    698731        case WM_RENDERFMT:
    699732            AssertMsgBreak(g_enmState == kClipboardState_Owner, ("g_enmState=%d\n", g_enmState));
    700             VBoxServiceClipboardOS2RenderFormat(SHORT1FROMMP(mp1));
     733            vgsvcClipboardOs2RenderFormat(SHORT1FROMMP(mp1));
    701734            break;
    702735
     
    723756         */
    724757        case WM_USER + VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS:
    725             VBoxServiceClipboardOS2AdvertiseHostFormats(LONGFROMMP(mp1));
     758            vgsvcClipboardOs2AdvertiseHostFormats(LONGFROMMP(mp1));
    726759            break;
    727760
     
    730763         */
    731764        case WM_USER + VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA:
    732             VBoxServiceClipboardOS2SendDataToHost(LONGFROMMP(mp1));
     765            vgsvcClipboardOs2SendDataToHost(LONGFROMMP(mp1));
    733766            break;
    734767
     
    757790
    758791            /* poll for changes */
    759             VBoxServiceClipboardOS2Poll();
    760             VBoxServiceClipboardOS2PollViewer();
     792            vgsvcClipboardOs2Poll();
     793            vgsvcClipboardOs2PollViewer();
    761794            break;
    762795
     
    801834 * @param   pvUser      Pointer to the clipboard service shutdown indicator.
    802835 */
    803 static DECLCALLBACK(int) VBoxServiceClipboardOS2Listener(RTTHREAD ThreadSelf, void *pvUser)
     836static DECLCALLBACK(int) vgsvcClipboardOs2Listener(RTTHREAD ThreadSelf, void *pvUser)
    804837{
    805838    bool volatile *pfShutdown = (bool volatile *)pvUser;
    806839    int rc = VERR_GENERAL_FAILURE;
    807     VBoxServiceVerbose(3, "VBoxServiceClipboardOS2Listener: ThreadSelf=%RTthrd\n", ThreadSelf);
     840    VGSvcVerbose(3, "vgsvcClipboardOs2Listener: ThreadSelf=%RTthrd\n", ThreadSelf);
    808841
    809842    g_habListener = WinInitialize(0);
     
    821854            ASMAtomicXchgBool(&g_fListenerOkay, true);
    822855            RTThreadUserSignal(ThreadSelf);
    823             VBoxServiceVerbose(3, "VBoxServiceClipboardOS2Listener: Started successfully\n");
     856            VGSvcVerbose(3, "vgsvcClipboardOs2Listener: Started successfully\n");
    824857
    825858            /*
     
    834867                if (RT_SUCCESS(rc))
    835868                {
    836                     VBoxServiceVerbose(3, "VBoxServiceClipboardOS2Listener: Msg=%#x  fFormats=%#x\n", Msg, fFormats);
     869                    VGSvcVerbose(3, "vgsvcClipboardOs2Listener: Msg=%#x  fFormats=%#x\n", Msg, fFormats);
    837870                    switch (Msg)
    838871                    {
     
    845878                            if (!WinPostMsg(g_hwndWorker, WM_USER + VBOX_SHARED_CLIPBOARD_HOST_MSG_FORMATS,
    846879                                            MPFROMLONG(fFormats), 0))
    847                                 VBoxServiceError("WinPostMsg(%lx, FORMATS,,) failed, lasterr=%#lx\n",
     880                                VGSvcError("WinPostMsg(%lx, FORMATS,,) failed, lasterr=%#lx\n",
    848881                                                 g_hwndWorker, WinGetLastError(g_habListener));
    849882                            break;
     
    855888                            if (!WinPostMsg(g_hwndWorker, WM_USER + VBOX_SHARED_CLIPBOARD_HOST_MSG_READ_DATA,
    856889                                            MPFROMLONG(fFormats), 0))
    857                                 VBoxServiceError("WinPostMsg(%lx, READ_DATA,,) failed, lasterr=%#lx\n",
     890                                VGSvcError("WinPostMsg(%lx, READ_DATA,,) failed, lasterr=%#lx\n",
    858891                                                 g_hwndWorker, WinGetLastError(g_habListener));
    859892                            break;
     
    867900
    868901                        default:
    869                             VBoxServiceVerbose(1, "VBoxServiceClipboardOS2Listener: Unknown message %RU32\n", Msg);
     902                            VGSvcVerbose(1, "vgsvcClipboardOs2Listener: Unknown message %RU32\n", Msg);
    870903                            break;
    871904                    }
     
    875908                    if (*pfShutdown)
    876909                        break;
    877                     VBoxServiceError("VbglR3ClipboardGetHostMsg failed, rc=%Rrc\n", rc);
     910                    VGSvcError("VbglR3ClipboardGetHostMsg failed, rc=%Rrc\n", rc);
    878911                    RTThreadSleep(1000);
    879912                }
     
    888921    /* Signal our semaphore to make the worker catch on. */
    889922    RTThreadUserSignal(ThreadSelf);
    890     VBoxServiceVerbose(3, "VBoxServiceClipboardOS2Listener: terminating, rc=%Rrc\n", rc);
     923    VGSvcVerbose(3, "vgsvcClipboardOs2Listener: terminating, rc=%Rrc\n", rc);
    891924    return rc;
    892925}
    893926
    894927
    895 /** @copydoc VBOXSERVICE::pfnWorker */
    896 static DECLCALLBACK(int) VBoxServiceClipboardOS2Worker(bool volatile *pfShutdown)
     928/**
     929 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     930 */
     931static DECLCALLBACK(int) vgsvcClipboardOs2Worker(bool volatile *pfShutdown)
    897932{
    898933    int rc = VERR_GENERAL_FAILURE;
     
    913948             * Create the object window.
    914949             */
    915             if (WinRegisterClass(g_habWorker, (PCSZ)"VBoxServiceClipboardClass", VBoxServiceClipboardOS2WinProc, 0, 0))
     950            if (WinRegisterClass(g_habWorker, (PCSZ)"VBoxServiceClipboardClass", vgsvcClipboardOs2WinProc, 0, 0))
    916951            {
    917952                g_hwndWorker = WinCreateWindow(HWND_OBJECT,                             /* hwndParent */
     
    927962                if (g_hwndWorker != NULLHANDLE)
    928963                {
    929                     VBoxServiceVerbose(3, "g_hwndWorker=%#lx g_habWorker=%#lx g_hmqWorker=%#lx\n", g_hwndWorker, g_habWorker, g_hmqWorker);
     964                    VGSvcVerbose(3, "g_hwndWorker=%#lx g_habWorker=%#lx g_hmqWorker=%#lx\n", g_hwndWorker, g_habWorker, g_hmqWorker);
    930965
    931966                    /*
     
    933968                     */
    934969                    g_fListenerOkay = false;
    935                     rc = RTThreadCreate(&g_ThreadListener, VBoxServiceClipboardOS2Listener, (void *)pfShutdown, 0,
     970                    rc = RTThreadCreate(&g_ThreadListener, vgsvcClipboardOs2Listener, (void *)pfShutdown, 0,
    936971                                        RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "CLIPLISTEN");
    937972                    if (RT_SUCCESS(rc))
     
    952987                             * The PM event pump.
    953988                             */
    954                             VBoxServiceVerbose(2, "clipboard: Entering PM message loop.\n");
     989                            VGSvcVerbose(2, "clipboard: Entering PM message loop.\n");
    955990                            rc = VINF_SUCCESS;
    956991                            QMSG qmsg;
     
    958993                            {
    959994                                if (qmsg.msg != WM_TIMER)
    960                                     VBoxServiceVerbose(6, "WinGetMsg -> hwnd=%p msg=%#x mp1=%p mp2=%p time=%#x ptl=%d,%d rsrv=%#x\n",
     995                                    VGSvcVerbose(6, "WinGetMsg -> hwnd=%p msg=%#x mp1=%p mp2=%p time=%#x ptl=%d,%d rsrv=%#x\n",
    961996                                                       qmsg.hwnd, qmsg.msg, qmsg.mp1, qmsg.mp2, qmsg.time, qmsg.ptl.x, qmsg.ptl.y, qmsg.reserved);
    962997                                WinDispatchMsg(g_habWorker, &qmsg);
    963998                            }
    964                             VBoxServiceVerbose(2, "clipboard: Exited PM message loop. *pfShutdown=%RTbool\n", *pfShutdown);
     999                            VGSvcVerbose(2, "clipboard: Exited PM message loop. *pfShutdown=%RTbool\n", *pfShutdown);
    9651000
    9661001                            RTThreadWait(g_ThreadListener, 60*1000, NULL);
     
    9791014                }
    9801015                else
    981                     VBoxServiceError("WinCreateWindow() failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     1016                    VGSvcError("WinCreateWindow() failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    9821017                /* no class deregistration in PM.  */
    9831018            }
    9841019            else
    985                 VBoxServiceError("WinRegisterClass() failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     1020                VGSvcError("WinRegisterClass() failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    9861021
    9871022            if (g_hmqCtrl != g_hmqWorker)
     
    9901025        }
    9911026        else
    992             VBoxServiceError("WinCreateMsgQueue(,0) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
     1027            VGSvcError("WinCreateMsgQueue(,0) failed, lasterr=%lx\n", WinGetLastError(g_habWorker));
    9931028
    9941029        if (g_habCtrl != g_habWorker)
     
    9971032    }
    9981033    else
    999         VBoxServiceError("WinInitialize(0) failed, lasterr=%lx\n", WinGetLastError(NULLHANDLE));
     1034        VGSvcError("WinInitialize(0) failed, lasterr=%lx\n", WinGetLastError(NULLHANDLE));
    10001035
    10011036    return rc;
     
    10031038
    10041039
    1005 /** @copydoc VBOXSERVICE::pfnStop */
    1006 static DECLCALLBACK(void) VBoxServiceClipboardOS2Stop(void)
     1040/**
     1041 * @interface_method_impl{VBOXSERVICE,pfnStop}
     1042 */
     1043static DECLCALLBACK(void) vgsvcClipboardOs2Stop(void)
    10071044{
    10081045    if (    g_hmqWorker != NULLHANDLE
    10091046        &&  !WinPostQueueMsg(g_hmqWorker, WM_QUIT, NULL, NULL))
    1010         VBoxServiceError("WinPostQueueMsg(g_hmqWorker, WM_QUIT, 0,0) failed, lasterr=%lx\n", WinGetLastError(g_habCtrl));
     1047        VGSvcError("WinPostQueueMsg(g_hmqWorker, WM_QUIT, 0,0) failed, lasterr=%lx\n", WinGetLastError(g_habCtrl));
    10111048
    10121049    /* Must disconnect the clipboard here otherwise the listner won't quit and
     
    10171054            RTThreadSleep(32);      /* fudge */
    10181055
    1019         VBoxServiceVerbose(4, "clipboard: disconnecting %#x\n", g_u32ClientId);
     1056        VGSvcVerbose(4, "clipboard: disconnecting %#x\n", g_u32ClientId);
    10201057        int rc = VbglR3ClipboardDisconnect(g_u32ClientId);
    10211058        if (RT_SUCCESS(rc))
    10221059            g_u32ClientId = 0;
    10231060        else
    1024             VBoxServiceError("clipboard: VbglR3ClipboardDisconnect(%#x) -> %Rrc\n", g_u32ClientId, rc);
    1025     }
    1026 }
    1027 
    1028 
    1029 /** @copydoc VBOXSERVICE::pfnTerm */
    1030 static DECLCALLBACK(void) VBoxServiceClipboardOS2Term(void)
     1061            VGSvcError("clipboard: VbglR3ClipboardDisconnect(%#x) -> %Rrc\n", g_u32ClientId, rc);
     1062    }
     1063}
     1064
     1065
     1066/**
     1067 * @interface_method_impl{VBOXSERVICE,pfnTerm}
     1068 */
     1069static DECLCALLBACK(void) vgsvcClipboardOs2Term(void)
    10311070{
    10321071    if (g_u32ClientId != 0)
    10331072    {
    1034         VBoxServiceVerbose(4, "clipboard: disconnecting %#x\n", g_u32ClientId);
     1073        VGSvcVerbose(4, "clipboard: disconnecting %#x\n", g_u32ClientId);
    10351074        int rc = VbglR3ClipboardDisconnect(g_u32ClientId);
    10361075        if (RT_SUCCESS(rc))
    10371076            g_u32ClientId = 0;
    10381077        else
    1039             VBoxServiceError("clipboard: VbglR3ClipboardDisconnect(%#x) -> %Rrc\n", g_u32ClientId, rc);
     1078            VGSvcError("clipboard: VbglR3ClipboardDisconnect(%#x) -> %Rrc\n", g_u32ClientId, rc);
    10401079    }
    10411080    WinDestroyMsgQueue(g_hmqCtrl);
     
    10621101    ,
    10631102    /* methods */
    1064     VBoxServiceClipboardOS2PreInit,
    1065     VBoxServiceClipboardOS2Option,
    1066     VBoxServiceClipboardOS2Init,
    1067     VBoxServiceClipboardOS2Worker,
    1068     VBoxServiceClipboardOS2Stop,
    1069     VBoxServiceClipboardOS2Term
     1103    vgsvcClipboardOs2PreInit,
     1104    vgsvcClipboardOs2Option,
     1105    vgsvcClipboardOs2Init,
     1106    vgsvcClipboardOs2Worker,
     1107    vgsvcClipboardOs2Stop,
     1108    vgsvcClipboardOs2Term
    10701109};
    10711110
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.cpp

    r57659 r58029  
    4343*********************************************************************************************************************************/
    4444/** The control interval (milliseconds). */
    45 static uint32_t             g_uControlIntervalMS = 0;
     45static uint32_t             g_msControlInterval = 0;
    4646/** The semaphore we're blocking our main control thread on. */
    4747static RTSEMEVENTMULTI      g_hControlEvent = NIL_RTSEMEVENTMULTI;
     
    7070*   Internal Functions                                                                                                           *
    7171*********************************************************************************************************************************/
    72 static int  gstcntlHandleSessionOpen(PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    73 static int  gstcntlHandleSessionClose(PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    74 static void VBoxServiceControlShutdown(void);
    75 
    76 
    77 /** @copydoc VBOXSERVICE::pfnPreInit */
    78 static DECLCALLBACK(int) VBoxServiceControlPreInit(void)
     72static int  vgsvcGstCtrlHandleSessionOpen(PVBGLR3GUESTCTRLCMDCTX pHostCtx);
     73static int  vgsvcGstCtrlHandleSessionClose(PVBGLR3GUESTCTRLCMDCTX pHostCtx);
     74static void vgsvcGstCtrlShutdown(void);
     75
     76
     77/**
     78 * @interface_method_impl{VBOXSERVICE,pfnPreInit}
     79 */
     80static DECLCALLBACK(int) vgsvcGstCtrlPreInit(void)
    7981{
    8082    int rc;
     
    9092        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
    9193        {
    92             VBoxServiceVerbose(0, "Guest property service is not available, skipping\n");
     94            VGSvcVerbose(0, "Guest property service is not available, skipping\n");
    9395            rc = VINF_SUCCESS;
    9496        }
    9597        else
    96             VBoxServiceError("Failed to connect to the guest property service, rc=%Rrc\n", rc);
     98            VGSvcError("Failed to connect to the guest property service, rc=%Rrc\n", rc);
    9799    }
    98100    else
    99     {
    100101        VbglR3GuestPropDisconnect(uGuestPropSvcClientID);
    101     }
    102102
    103103    if (rc == VERR_NOT_FOUND) /* If a value is not found, don't be sad! */
     
    111111    {
    112112        /* Init session object. */
    113         rc = GstCntlSessionInit(&g_Session, 0 /* Flags */);
     113        rc = VGSvcGstCtrlSessionInit(&g_Session, 0 /* Flags */);
    114114    }
    115115
     
    118118
    119119
    120 /** @copydoc VBOXSERVICE::pfnOption */
    121 static DECLCALLBACK(int) VBoxServiceControlOption(const char **ppszShort, int argc, char **argv, int *pi)
     120/**
     121 * @interface_method_impl{VBOXSERVICE,pfnOption}
     122 */
     123static DECLCALLBACK(int) vgsvcGstCtrlOption(const char **ppszShort, int argc, char **argv, int *pi)
    122124{
    123125    int rc = -1;
     
    125127        /* no short options */;
    126128    else if (!strcmp(argv[*pi], "--control-interval"))
    127         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    128                                   &g_uControlIntervalMS, 1, UINT32_MAX - 1);
     129        rc = VGSvcArgUInt32(argc, argv, "", pi,
     130                                  &g_msControlInterval, 1, UINT32_MAX - 1);
    129131#ifdef DEBUG
    130132    else if (!strcmp(argv[*pi], "--control-dump-stdout"))
     
    143145
    144146
    145 /** @copydoc VBOXSERVICE::pfnInit */
    146 static DECLCALLBACK(int) VBoxServiceControlInit(void)
     147/**
     148 * @interface_method_impl{VBOXSERVICE,pfnInit}
     149 */
     150static DECLCALLBACK(int) vgsvcGstCtrlInit(void)
    147151{
    148152    /*
     
    150154     * Then create the event sem to block on.
    151155     */
    152     if (!g_uControlIntervalMS)
    153         g_uControlIntervalMS = 1000;
     156    if (!g_msControlInterval)
     157        g_msControlInterval = 1000;
    154158
    155159    int rc = RTSemEventMultiCreate(&g_hControlEvent);
     
    163167    if (RT_SUCCESS(rc))
    164168    {
    165         VBoxServiceVerbose(3, "Guest control service client ID=%RU32\n",
    166                            g_uControlSvcClientID);
     169        VGSvcVerbose(3, "Guest control service client ID=%RU32\n", g_uControlSvcClientID);
    167170
    168171        /* Init session thread list. */
     
    175178        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
    176179        {
    177             VBoxServiceVerbose(0, "Guest control service is not available\n");
     180            VGSvcVerbose(0, "Guest control service is not available\n");
    178181            rc = VERR_SERVICE_DISABLED;
    179182        }
    180183        else
    181             VBoxServiceError("Failed to connect to the guest control service! Error: %Rrc\n", rc);
     184            VGSvcError("Failed to connect to the guest control service! Error: %Rrc\n", rc);
    182185        RTSemEventMultiDestroy(g_hControlEvent);
    183186        g_hControlEvent = NIL_RTSEMEVENTMULTI;
     
    187190
    188191
    189 /** @copydoc VBOXSERVICE::pfnWorker */
    190 DECLCALLBACK(int) VBoxServiceControlWorker(bool volatile *pfShutdown)
     192/**
     193 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     194 */
     195static DECLCALLBACK(int) vgsvcGstCtrlWorker(bool volatile *pfShutdown)
    191196{
    192197    /*
     
    213218    for (;;)
    214219    {
    215         VBoxServiceVerbose(3, "Waiting for host msg ...\n");
     220        VGSvcVerbose(3, "Waiting for host msg ...\n");
    216221        uint32_t uMsg = 0;
    217222        uint32_t cParms = 0;
     
    220225        {
    221226#ifdef DEBUG
    222             VBoxServiceVerbose(4, "Message requires %ld parameters, but only 2 supplied -- retrying request (no error!)...\n",
    223                                cParms);
     227            VGSvcVerbose(4, "Message requires %ld parameters, but only 2 supplied -- retrying request (no error!)...\n",
     228                         cParms);
    224229#endif
    225230            rc = VINF_SUCCESS; /* Try to get "real" message in next block below. */
     
    228233        {
    229234            /* Note: VERR_GEN_IO_FAILURE seems to be normal if ran into timeout. */
    230             VBoxServiceError("Getting host message failed with %Rrc\n", rc);
     235            VGSvcError("Getting host message failed with %Rrc\n", rc);
    231236
    232237            /* Check for VM session change. */
     
    236241                && (idNewSession != g_idControlSession))
    237242            {
    238                 VBoxServiceVerbose(1, "The VM session ID changed\n");
     243                VGSvcVerbose(1, "The VM session ID changed\n");
    239244                g_idControlSession = idNewSession;
    240245
    241246                /* Close all opened guest sessions -- all context IDs, sessions etc.
    242247                 * are now invalid. */
    243                 rc2 = GstCntlSessionClose(&g_Session);
     248                rc2 = VGSvcGstCtrlSessionClose(&g_Session);
    244249                AssertRC(rc2);
    245250
    246251                /* Do a reconnect. */
    247                 VBoxServiceVerbose(1, "Reconnecting to HGCM service ...\n");
     252                VGSvcVerbose(1, "Reconnecting to HGCM service ...\n");
    248253                rc2 = VbglR3GuestCtrlConnect(&g_uControlSvcClientID);
    249254                if (RT_SUCCESS(rc2))
    250255                {
    251                     VBoxServiceVerbose(3, "Guest control service client ID=%RU32\n",
    252                                        g_uControlSvcClientID);
     256                    VGSvcVerbose(3, "Guest control service client ID=%RU32\n", g_uControlSvcClientID);
    253257                    cRetrievalFailed = 0;
    254258                    continue; /* Skip waiting. */
     
    256260                else
    257261                {
    258                     VBoxServiceError("Unable to re-connect to HGCM service, rc=%Rrc, bailing out\n", rc);
     262                    VGSvcError("Unable to re-connect to HGCM service, rc=%Rrc, bailing out\n", rc);
    259263                    break;
    260264                }
     
    263267            if (++cRetrievalFailed > 16) /** @todo Make this configurable? */
    264268            {
    265                 VBoxServiceError("Too many failed attempts in a row to get next message, bailing out\n");
     269                VGSvcError("Too many failed attempts in a row to get next message, bailing out\n");
    266270                break;
    267271            }
     
    272276        if (RT_SUCCESS(rc))
    273277        {
    274             VBoxServiceVerbose(4, "Msg=%RU32 (%RU32 parms) retrieved\n", uMsg, cParms);
     278            VGSvcVerbose(4, "Msg=%RU32 (%RU32 parms) retrieved\n", uMsg, cParms);
    275279            cRetrievalFailed = 0; /* Reset failed retrieval count. */
    276280
     
    284288                && (idNewSession != g_idControlSession))
    285289            {
    286                 VBoxServiceVerbose(1, "The VM session ID changed\n");
     290                VGSvcVerbose(1, "The VM session ID changed\n");
    287291                g_idControlSession = idNewSession;
    288292
    289293                /* Close all opened guest sessions -- all context IDs, sessions etc.
    290294                 * are now invalid. */
    291                 rc2 = GstCntlSessionClose(&g_Session);
     295                rc2 = VGSvcGstCtrlSessionClose(&g_Session);
    292296                AssertRC(rc2);
    293297            }
     
    296300            {
    297301                case HOST_CANCEL_PENDING_WAITS:
    298                     VBoxServiceVerbose(1, "We were asked to quit ...\n");
     302                    VGSvcVerbose(1, "We were asked to quit ...\n");
    299303                    break;
    300304
    301305                case HOST_SESSION_CREATE:
    302                     rc = gstcntlHandleSessionOpen(&ctxHost);
     306                    rc = vgsvcGstCtrlHandleSessionOpen(&ctxHost);
    303307                    break;
    304308
    305309                case HOST_SESSION_CLOSE:
    306                     rc = gstcntlHandleSessionClose(&ctxHost);
     310                    rc = vgsvcGstCtrlHandleSessionClose(&ctxHost);
    307311                    break;
    308312
     
    320324                     */
    321325                    if (ctxHost.uProtocol == 1)
    322                     {
    323                         rc = GstCntlSessionHandler(&g_Session, uMsg, &ctxHost,
    324                                                    pvScratchBuf, cbScratchBuf, pfShutdown);
    325                     }
     326                        rc = VGSvcGstCtrlSessionHandler(&g_Session, uMsg, &ctxHost, pvScratchBuf, cbScratchBuf, pfShutdown);
    326327                    else
    327328                    {
     
    332333                         */
    333334                        rc = VbglR3GuestCtrlMsgSkip(g_uControlSvcClientID);
    334                         VBoxServiceVerbose(3, "Skipping uMsg=%RU32, cParms=%RU32, rc=%Rrc\n",
    335                                            uMsg, cParms, rc);
     335                        VGSvcVerbose(3, "Skipping uMsg=%RU32, cParms=%RU32, rc=%Rrc\n", uMsg, cParms, rc);
    336336                    }
    337337                    break;
     
    351351    }
    352352
    353     VBoxServiceVerbose(0, "Guest control service stopped\n");
     353    VGSvcVerbose(0, "Guest control service stopped\n");
    354354
    355355    /* Delete scratch buffer. */
     
    357357        RTMemFree(pvScratchBuf);
    358358
    359     VBoxServiceVerbose(0, "Guest control worker returned with rc=%Rrc\n", rc);
     359    VGSvcVerbose(0, "Guest control worker returned with rc=%Rrc\n", rc);
    360360    return rc;
    361361}
    362362
    363363
    364 static int gstcntlHandleSessionOpen(PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     364static int vgsvcGstCtrlHandleSessionOpen(PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    365365{
    366366    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
     
    379379         * host wants to use in subsequent calls. */
    380380        pHostCtx->uProtocol = ssInfo.uProtocol;
    381         VBoxServiceVerbose(3, "Client ID=%RU32 now is using protocol %RU32\n",
    382                            pHostCtx->uClientID, pHostCtx->uProtocol);
    383 
    384         rc = GstCntlSessionThreadCreate(&g_lstControlSessionThreads,
    385                                         &ssInfo, NULL /* ppSessionThread */);
     381        VGSvcVerbose(3, "Client ID=%RU32 now is using protocol %RU32\n", pHostCtx->uClientID, pHostCtx->uProtocol);
     382
     383        rc = VGSvcGstCtrlSessionThreadCreate(&g_lstControlSessionThreads, &ssInfo, NULL /* ppSessionThread */);
    386384    }
    387385
     
    390388        /* Report back on failure. On success this will be done
    391389         * by the forked session thread. */
    392         int rc2 = VbglR3GuestCtrlSessionNotify(pHostCtx,
    393                                                GUEST_SESSION_NOTIFYTYPE_ERROR, rc /* uint32_t vs. int */);
     390        int rc2 = VbglR3GuestCtrlSessionNotify(pHostCtx, GUEST_SESSION_NOTIFYTYPE_ERROR, rc /* uint32_t vs. int */);
    394391        if (RT_FAILURE(rc2))
    395             VBoxServiceError("Reporting session error status on open failed with rc=%Rrc\n", rc2);
    396     }
    397 
    398     VBoxServiceVerbose(3, "Opening a new guest session returned rc=%Rrc\n", rc);
     392            VGSvcError("Reporting session error status on open failed with rc=%Rrc\n", rc2);
     393    }
     394
     395    VGSvcVerbose(3, "Opening a new guest session returned rc=%Rrc\n", rc);
    399396    return rc;
    400397}
    401398
    402399
    403 static int gstcntlHandleSessionClose(PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     400static int vgsvcGstCtrlHandleSessionClose(PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    404401{
    405402    AssertPtrReturn(pHostCtx, VERR_INVALID_POINTER);
    406403
    407     uint32_t uSessionID, uFlags;
    408     int rc = VbglR3GuestCtrlSessionGetClose(pHostCtx, &uFlags, &uSessionID);
     404    uint32_t uSessionID;
     405    uint32_t fFlags;
     406    int rc = VbglR3GuestCtrlSessionGetClose(pHostCtx, &fFlags, &uSessionID);
    409407    if (RT_SUCCESS(rc))
    410408    {
     
    416414            if (pThread->StartupInfo.uSessionID == uSessionID)
    417415            {
    418                 rc = GstCntlSessionThreadDestroy(pThread, uFlags);
     416                rc = VGSvcGstCtrlSessionThreadDestroy(pThread, fFlags);
    419417                break;
    420418            }
     
    429427            if (RT_FAILURE(rc2))
    430428            {
    431                 VBoxServiceError("Reporting session error status on close failed with rc=%Rrc\n", rc2);
     429                VGSvcError("Reporting session error status on close failed with rc=%Rrc\n", rc2);
    432430                if (RT_SUCCESS(rc))
    433431                    rc = rc2;
     
    435433        }
    436434#endif
    437         VBoxServiceVerbose(2, "Closing guest session %RU32 returned rc=%Rrc\n",
    438                            uSessionID, rc);
     435        VGSvcVerbose(2, "Closing guest session %RU32 returned rc=%Rrc\n", uSessionID, rc);
    439436    }
    440437    else
    441         VBoxServiceError("Closing guest session %RU32 failed with rc=%Rrc\n",
    442                          uSessionID, rc);
     438        VGSvcError("Closing guest session %RU32 failed with rc=%Rrc\n", uSessionID, rc);
    443439    return rc;
    444440}
    445441
    446442
    447 /** @copydoc VBOXSERVICE::pfnStop */
    448 static DECLCALLBACK(void) VBoxServiceControlStop(void)
    449 {
    450     VBoxServiceVerbose(3, "Stopping ...\n");
     443/**
     444 * @interface_method_impl{VBOXSERVICE,pfnStop}
     445 */
     446static DECLCALLBACK(void) vgsvcGstCtrlStop(void)
     447{
     448    VGSvcVerbose(3, "Stopping ...\n");
    451449
    452450    /** @todo Later, figure what to do if we're in RTProcWait(). It's a very
     
    461459    if (g_uControlSvcClientID)
    462460    {
    463         VBoxServiceVerbose(3, "Cancelling pending waits (client ID=%u) ...\n",
     461        VGSvcVerbose(3, "Cancelling pending waits (client ID=%u) ...\n",
    464462                           g_uControlSvcClientID);
    465463
    466464        int rc = VbglR3GuestCtrlCancelPendingWaits(g_uControlSvcClientID);
    467465        if (RT_FAILURE(rc))
    468             VBoxServiceError("Cancelling pending waits failed; rc=%Rrc\n", rc);
     466            VGSvcError("Cancelling pending waits failed; rc=%Rrc\n", rc);
    469467    }
    470468}
     
    474472 * Destroys all guest process threads which are still active.
    475473 */
    476 static void VBoxServiceControlShutdown(void)
    477 {
    478     VBoxServiceVerbose(2, "Shutting down ...\n");
    479 
    480     int rc2 = GstCntlSessionThreadDestroyAll(&g_lstControlSessionThreads,
    481                                              0 /* Flags */);
     474static void vgsvcGstCtrlShutdown(void)
     475{
     476    VGSvcVerbose(2, "Shutting down ...\n");
     477
     478    int rc2 = VGSvcGstCtrlSessionThreadDestroyAll(&g_lstControlSessionThreads, 0 /* Flags */);
    482479    if (RT_FAILURE(rc2))
    483         VBoxServiceError("Closing session threads failed with rc=%Rrc\n", rc2);
    484 
    485     rc2 = GstCntlSessionClose(&g_Session);
     480        VGSvcError("Closing session threads failed with rc=%Rrc\n", rc2);
     481
     482    rc2 = VGSvcGstCtrlSessionClose(&g_Session);
    486483    if (RT_FAILURE(rc2))
    487         VBoxServiceError("Closing session failed with rc=%Rrc\n", rc2);
    488 
    489     VBoxServiceVerbose(2, "Shutting down complete\n");
    490 }
    491 
    492 
    493 /** @copydoc VBOXSERVICE::pfnTerm */
    494 static DECLCALLBACK(void) VBoxServiceControlTerm(void)
    495 {
    496     VBoxServiceVerbose(3, "Terminating ...\n");
    497 
    498     VBoxServiceControlShutdown();
    499 
    500     VBoxServiceVerbose(3, "Disconnecting client ID=%u ...\n",
    501                        g_uControlSvcClientID);
     484        VGSvcError("Closing session failed with rc=%Rrc\n", rc2);
     485
     486    VGSvcVerbose(2, "Shutting down complete\n");
     487}
     488
     489
     490/**
     491 * @interface_method_impl{VBOXSERVICE,pfnTerm}
     492 */
     493static DECLCALLBACK(void) vgsvcGstCtrlTerm(void)
     494{
     495    VGSvcVerbose(3, "Terminating ...\n");
     496
     497    vgsvcGstCtrlShutdown();
     498
     499    VGSvcVerbose(3, "Disconnecting client ID=%u ...\n", g_uControlSvcClientID);
    502500    VbglR3GuestCtrlDisconnect(g_uControlSvcClientID);
    503501    g_uControlSvcClientID = 0;
     
    537535    ,
    538536    /* methods */
    539     VBoxServiceControlPreInit,
    540     VBoxServiceControlOption,
    541     VBoxServiceControlInit,
    542     VBoxServiceControlWorker,
    543     VBoxServiceControlStop,
    544     VBoxServiceControlTerm
     537    vgsvcGstCtrlPreInit,
     538    vgsvcGstCtrlOption,
     539    vgsvcGstCtrlInit,
     540    vgsvcGstCtrlWorker,
     541    vgsvcGstCtrlStop,
     542    vgsvcGstCtrlTerm
    545543};
    546544
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControl.h

    r57659 r58029  
    284284RT_C_DECLS_BEGIN
    285285
    286 /**
    287  * Note on naming conventions:
    288  * - VBoxServiceControl* is named everything sub service module related, e.g.
    289  *   everything which is callable by main() and/or the service dispatcher(s).
    290  * - GstCntl* is named everything which declared extern and thus can be called
    291  *   by different guest control modules as needed.
    292  * - gstcntl (all lowercase) is a purely static function to split up functionality
    293  *   inside a module.
    294  */
    295 
    296 /* Guest session thread handling. */
    297 extern int                      GstCntlSessionThreadCreate(PRTLISTANCHOR pList, const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo, PVBOXSERVICECTRLSESSIONTHREAD *ppSessionThread);
    298 extern int                      GstCntlSessionThreadDestroy(PVBOXSERVICECTRLSESSIONTHREAD pSession, uint32_t uFlags);
    299 extern int                      GstCntlSessionThreadDestroyAll(PRTLISTANCHOR pList, uint32_t uFlags);
    300 extern int                      GstCntlSessionThreadTerminate(PVBOXSERVICECTRLSESSIONTHREAD pSession);
    301 extern RTEXITCODE               VBoxServiceControlSessionSpawnInit(int argc, char **argv);
    302 /* Per-session functions. */
    303 extern PVBOXSERVICECTRLPROCESS  GstCntlSessionRetainProcess(PVBOXSERVICECTRLSESSION pSession, uint32_t uPID);
    304 extern int                      GstCntlSessionClose(PVBOXSERVICECTRLSESSION pSession);
    305 extern int                      GstCntlSessionDestroy(PVBOXSERVICECTRLSESSION pSession);
    306 extern int                      GstCntlSessionInit(PVBOXSERVICECTRLSESSION pSession, uint32_t uFlags);
    307 extern int                      GstCntlSessionHandler(PVBOXSERVICECTRLSESSION pSession, uint32_t uMsg, PVBGLR3GUESTCTRLCMDCTX pHostCtx, void *pvScratchBuf, size_t cbScratchBuf, volatile bool *pfShutdown);
    308 extern int                      GstCntlSessionProcessAdd(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess);
    309 extern int                      GstCntlSessionProcessRemove(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess);
    310 extern int                      GstCntlSessionProcessStartAllowed(const PVBOXSERVICECTRLSESSION pSession, bool *pbAllowed);
    311 extern int                      GstCntlSessionReapProcesses(PVBOXSERVICECTRLSESSION pSession);
    312 /* Per-guest process functions. */
    313 extern int                      GstCntlProcessFree(PVBOXSERVICECTRLPROCESS pProcess);
    314 extern int                      GstCntlProcessHandleInput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx, bool fPendingClose, void *pvBuf, uint32_t cbBuf);
    315 extern int                      GstCntlProcessHandleOutput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx, uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags);
    316 extern int                      GstCntlProcessHandleTerm(PVBOXSERVICECTRLPROCESS pProcess);
    317 extern void                     GstCntlProcessRelease(PVBOXSERVICECTRLPROCESS pProcess);
    318 extern int                      GstCntlProcessStart(const PVBOXSERVICECTRLSESSION pSession, const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo, uint32_t uContext);
    319 extern int                      GstCntlProcessStop(PVBOXSERVICECTRLPROCESS pProcess);
    320 extern int                      GstCntlProcessWait(const PVBOXSERVICECTRLPROCESS pProcess, RTMSINTERVAL msTimeout, int *pRc);
     286extern RTLISTANCHOR             g_lstControlSessionThreads;
     287extern VBOXSERVICECTRLSESSION   g_Session;
     288
     289
     290/** @name Guest session thread handling.
     291 * @{ */
     292extern int                      VGSvcGstCtrlSessionThreadCreate(PRTLISTANCHOR pList, const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo, PVBOXSERVICECTRLSESSIONTHREAD *ppSessionThread);
     293extern int                      VGSvcGstCtrlSessionThreadDestroy(PVBOXSERVICECTRLSESSIONTHREAD pSession, uint32_t uFlags);
     294extern int                      VGSvcGstCtrlSessionThreadDestroyAll(PRTLISTANCHOR pList, uint32_t uFlags);
     295extern int                      VGSvcGstCtrlSessionThreadTerminate(PVBOXSERVICECTRLSESSIONTHREAD pSession);
     296extern RTEXITCODE               VGSvcGstCtrlSessionSpawnInit(int argc, char **argv);
     297/** @} */
     298/** @name Per-session functions.
     299 * @{ */
     300extern PVBOXSERVICECTRLPROCESS  VGSvcGstCtrlSessionRetainProcess(PVBOXSERVICECTRLSESSION pSession, uint32_t uPID);
     301extern int                      VGSvcGstCtrlSessionClose(PVBOXSERVICECTRLSESSION pSession);
     302extern int                      VGSvcGstCtrlSessionDestroy(PVBOXSERVICECTRLSESSION pSession);
     303extern int                      VGSvcGstCtrlSessionInit(PVBOXSERVICECTRLSESSION pSession, uint32_t uFlags);
     304extern int                      VGSvcGstCtrlSessionHandler(PVBOXSERVICECTRLSESSION pSession, uint32_t uMsg, PVBGLR3GUESTCTRLCMDCTX pHostCtx, void *pvScratchBuf, size_t cbScratchBuf, volatile bool *pfShutdown);
     305extern int                      VGSvcGstCtrlSessionProcessAdd(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess);
     306extern int                      VGSvcGstCtrlSessionProcessRemove(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess);
     307extern int                      VGSvcGstCtrlSessionProcessStartAllowed(const PVBOXSERVICECTRLSESSION pSession, bool *pbAllowed);
     308extern int                      VGSvcGstCtrlSessionReapProcesses(PVBOXSERVICECTRLSESSION pSession);
     309/** @} */
     310/** @name Per-guest process functions.
     311 * @{ */
     312extern int                      VGSvcGstCtrlProcessFree(PVBOXSERVICECTRLPROCESS pProcess);
     313extern int                      VGSvcGstCtrlProcessHandleInput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx, bool fPendingClose, void *pvBuf, uint32_t cbBuf);
     314extern int                      VGSvcGstCtrlProcessHandleOutput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx, uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags);
     315extern int                      VGSvcGstCtrlProcessHandleTerm(PVBOXSERVICECTRLPROCESS pProcess);
     316extern void                     VGSvcGstCtrlProcessRelease(PVBOXSERVICECTRLPROCESS pProcess);
     317extern int                      VGSvcGstCtrlProcessStart(const PVBOXSERVICECTRLSESSION pSession, const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo, uint32_t uContext);
     318extern int                      VGSvcGstCtrlProcessStop(PVBOXSERVICECTRLPROCESS pProcess);
     319extern int                      VGSvcGstCtrlProcessWait(const PVBOXSERVICECTRLPROCESS pProcess, RTMSINTERVAL msTimeout, int *pRc);
     320/** @} */
    321321
    322322RT_C_DECLS_END
    323323
    324 #endif /* ___VBoxServiceControl_h */
    325 
     324#endif
     325
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlProcess.cpp

    r57753 r58029  
    4747*   Internal Functions                                                                                                           *
    4848*********************************************************************************************************************************/
    49 static int                  gstcntlProcessAssignPID(PVBOXSERVICECTRLPROCESS pThread, uint32_t uPID);
    50 static int                  gstcntlProcessLock(PVBOXSERVICECTRLPROCESS pProcess);
    51 static int                  gstcntlProcessRequest(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, PFNRT pfnFunction, unsigned cArgs, ...);
    52 static int                  gstcntlProcessSetupPipe(const char *pszHowTo, int fd, PRTHANDLE ph, PRTHANDLE *pph, PRTPIPE phPipe);
    53 static int                  gstcntlProcessUnlock(PVBOXSERVICECTRLPROCESS pProcess);
     49static int                  vgsvcGstCtrlProcessAssignPID(PVBOXSERVICECTRLPROCESS pThread, uint32_t uPID);
     50static int                  vgsvcGstCtrlProcessLock(PVBOXSERVICECTRLPROCESS pProcess);
     51static int                  vgsvcGstCtrlProcessRequest(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     52                                                       PFNRT pfnFunction, unsigned cArgs, ...);
     53static int                  vgsvcGstCtrlProcessSetupPipe(const char *pszHowTo, int fd, PRTHANDLE ph, PRTHANDLE *pph,
     54                                                         PRTPIPE phPipe);
     55static int                  vgsvcGstCtrlProcessUnlock(PVBOXSERVICECTRLPROCESS pProcess);
    5456/* Request handlers. */
    55 static DECLCALLBACK(int)    gstcntlProcessOnInput(PVBOXSERVICECTRLPROCESS pThis, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, bool fPendingClose, void *pvBuf, uint32_t cbBuf);
    56 static DECLCALLBACK(int)    gstcntlProcessOnOutput(PVBOXSERVICECTRLPROCESS pThis, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags);
    57 static DECLCALLBACK(int)    gstcntlProcessOnTerm(PVBOXSERVICECTRLPROCESS pThis);
     57static DECLCALLBACK(int)    vgsvcGstCtrlProcessOnInput(PVBOXSERVICECTRLPROCESS pThis, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     58                                                       bool fPendingClose, void *pvBuf, uint32_t cbBuf);
     59static DECLCALLBACK(int)    vgsvcGstCtrlProcessOnOutput(PVBOXSERVICECTRLPROCESS pThis, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     60                                                        uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags);
     61static DECLCALLBACK(int)    vgsvcGstCtrlProcessOnTerm(PVBOXSERVICECTRLPROCESS pThis);
     62
    5863
    5964/**
     
    6671 * @param   u32ContextID                The context ID bound to this request / command.
    6772 */
    68 static int gstcntlProcessInit(PVBOXSERVICECTRLPROCESS pProcess,
    69                               const PVBOXSERVICECTRLSESSION pSession,
    70                               const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo,
    71                               uint32_t u32ContextID)
     73static int vgsvcGstCtrlProcessInit(PVBOXSERVICECTRLPROCESS pProcess,
     74                                   const PVBOXSERVICECTRLSESSION pSession,
     75                                   const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo,
     76                                   uint32_t u32ContextID)
    7277{
    7378    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    122127
    123128    if (RT_FAILURE(rc)) /* Clean up on failure. */
    124         GstCntlProcessFree(pProcess);
     129        VGSvcGstCtrlProcessFree(pProcess);
    125130    return rc;
    126131}
     
    134139 * @param   pProcess                Guest process to free.
    135140 */
    136 int GstCntlProcessFree(PVBOXSERVICECTRLPROCESS pProcess)
     141int VGSvcGstCtrlProcessFree(PVBOXSERVICECTRLPROCESS pProcess)
    137142{
    138143    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    139144
    140     VBoxServiceVerbose(3, "[PID %RU32]: Freeing (cRefs=%RU32)...\n",
    141                        pProcess->uPID, pProcess->cRefs);
     145    VGSvcVerbose(3, "[PID %RU32]: Freeing (cRefs=%RU32)...\n", pProcess->uPID, pProcess->cRefs);
    142146    Assert(pProcess->cRefs == 0);
    143147
     
    155159     */
    156160    AssertPtr(pProcess->pSession);
    157     rc = GstCntlSessionProcessRemove(pProcess->pSession, pProcess);
     161    rc = VGSvcGstCtrlSessionProcessRemove(pProcess->pSession, pProcess);
    158162    AssertRC(rc);
    159163
     
    175179 * @param   pProcess            Process to stop.
    176180 */
    177 int GstCntlProcessStop(PVBOXSERVICECTRLPROCESS pProcess)
     181int VGSvcGstCtrlProcessStop(PVBOXSERVICECTRLPROCESS pProcess)
    178182{
    179183    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    180184
    181     VBoxServiceVerbose(3, "[PID %RU32]: Stopping ...\n",
    182                        pProcess->uPID);
     185    VGSvcVerbose(3, "[PID %RU32]: Stopping ...\n", pProcess->uPID);
    183186
    184187    /* Do *not* set pThread->fShutdown or other stuff here!
    185188     * The guest thread loop will clean up itself. */
    186189
    187     return GstCntlProcessHandleTerm(pProcess);
     190    return VGSvcGstCtrlProcessHandleTerm(pProcess);
    188191}
    189192
     
    194197 * @param   pProcess            Process to unlock.
    195198 */
    196 void GstCntlProcessRelease(PVBOXSERVICECTRLPROCESS pProcess)
     199void VGSvcGstCtrlProcessRelease(PVBOXSERVICECTRLPROCESS pProcess)
    197200{
    198201    AssertPtrReturnVoid(pProcess);
     
    212215
    213216    if (fShutdown)
    214         GstCntlProcessFree(pProcess);
     217        VGSvcGstCtrlProcessFree(pProcess);
    215218}
    216219
     
    222225 * @param   pProcess            Process to wait shutting down for.
    223226 * @param   RTMSINTERVAL        Timeout in ms to wait for shutdown.
    224  * @param   pRc                 Where to store the thread's return code. Optional.
    225  */
    226 int GstCntlProcessWait(const PVBOXSERVICECTRLPROCESS pProcess,
    227                        RTMSINTERVAL msTimeout, int *pRc)
     227 * @param   prc                 Where to store the thread's return code.
     228 *                              Optional.
     229 */
     230int VGSvcGstCtrlProcessWait(const PVBOXSERVICECTRLPROCESS pProcess, RTMSINTERVAL msTimeout, int *prc)
    228231{
    229232    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    230     /* pRc is optional. */
    231 
    232     int rc = gstcntlProcessLock(pProcess);
     233    AssertPtrNullReturn(prc, VERR_INVALID_POINTER);
     234
     235    int rc = vgsvcGstCtrlProcessLock(pProcess);
    233236    if (RT_SUCCESS(rc))
    234237    {
    235         VBoxServiceVerbose(2, "[PID %RU32]: Waiting for shutdown (%RU32ms) ...\n",
    236                            pProcess->uPID, msTimeout);
     238        VGSvcVerbose(2, "[PID %RU32]: Waiting for shutdown (%RU32ms) ...\n", pProcess->uPID, msTimeout);
    237239
    238240        AssertMsgReturn(pProcess->fStarted,
     
    244246        {
    245247            /* Unlock process before waiting. */
    246             rc = gstcntlProcessUnlock(pProcess);
     248            rc = vgsvcGstCtrlProcessUnlock(pProcess);
    247249            AssertRC(rc);
    248250
     
    251253            Assert(pProcess->Thread != NIL_RTTHREAD);
    252254            rc = RTThreadWait(pProcess->Thread, msTimeout, &rcThread);
    253             if (RT_FAILURE(rc))
     255            if (RT_SUCCESS(rc))
    254256            {
    255                 VBoxServiceError("[PID %RU32]: Waiting for shutting down thread returned error rc=%Rrc\n",
    256                                  pProcess->uPID, rc);
     257                VGSvcVerbose(3, "[PID %RU32]: Thread shutdown complete, thread rc=%Rrc\n", pProcess->uPID, rcThread);
     258                if (prc)
     259                    *prc = rcThread;
    257260            }
    258261            else
    259             {
    260                 VBoxServiceVerbose(3, "[PID %RU32]: Thread shutdown complete, thread rc=%Rrc\n",
    261                                    pProcess->uPID, rcThread);
    262                 if (pRc)
    263                     *pRc = rcThread;
    264             }
     262                VGSvcError("[PID %RU32]: Waiting for shutting down thread returned error rc=%Rrc\n", pProcess->uPID, rc);
    265263        }
    266264        else
    267265        {
    268             VBoxServiceVerbose(3, "[PID %RU32]: Thread already shut down, no waiting needed\n",
    269                                pProcess->uPID);
    270 
    271             int rc2 = gstcntlProcessUnlock(pProcess);
     266            VGSvcVerbose(3, "[PID %RU32]: Thread already shut down, no waiting needed\n", pProcess->uPID);
     267
     268            int rc2 = vgsvcGstCtrlProcessUnlock(pProcess);
    272269            AssertRC(rc2);
    273270        }
    274271    }
    275272
    276     VBoxServiceVerbose(3, "[PID %RU32]: Waiting resulted in rc=%Rrc\n",
    277                        pProcess->uPID, rc);
     273    VGSvcVerbose(3, "[PID %RU32]: Waiting resulted in rc=%Rrc\n", pProcess->uPID, rc);
    278274    return rc;
    279275}
     
    287283 * @param   phStdInW            The standard input pipe handle.
    288284 */
    289 static int gstcntlProcessPollsetCloseInput(PVBOXSERVICECTRLPROCESS pProcess,
    290                                            PRTPIPE phStdInW)
     285static int vgsvcGstCtrlProcessPollsetCloseInput(PVBOXSERVICECTRLPROCESS pProcess, PRTPIPE phStdInW)
    291286{
    292287    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    308303
    309304
    310 static const char* gstcntlProcessPollHandleToString(uint32_t idPollHnd)
     305/**
     306 * Names a poll handle ID.
     307 *
     308 * @returns Pointer to read-only string.
     309 * @param   idPollHnd           What to name.
     310 */
     311static const char *vgsvcGstCtrlProcessPollHandleToString(uint32_t idPollHnd)
    311312{
    312313    switch (idPollHnd)
     
    325326            return "ipc_notify";
    326327        default:
    327             break;
    328     }
    329 
    330     return "unknown";
     328            return "unknown";
     329    }
    331330}
    332331
     
    340339 * @param   phStdInW            The standard input pipe handle.
    341340 */
    342 static int gstcntlProcessPollsetOnInput(PVBOXSERVICECTRLPROCESS pProcess,
    343                                         uint32_t fPollEvt, PRTPIPE phStdInW)
     341static int vgsvcGstCtrlProcessPollsetOnInput(PVBOXSERVICECTRLPROCESS pProcess, uint32_t fPollEvt, PRTPIPE phStdInW)
    344342{
    345343    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    347345    NOREF(fPollEvt);
    348346
    349     return gstcntlProcessPollsetCloseInput(pProcess, phStdInW);
     347    return vgsvcGstCtrlProcessPollsetCloseInput(pProcess, phStdInW);
    350348}
    351349
     
    359357 * @param   phPipeR             The pipe handle.
    360358 * @param   idPollHnd           The pipe ID to handle.
    361  *
    362  */
    363 static int gstcntlProcessHandleOutputError(PVBOXSERVICECTRLPROCESS pProcess,
    364                                            uint32_t fPollEvt, PRTPIPE phPipeR, uint32_t idPollHnd)
     359 */
     360static int vgsvcGstCtrlProcessHandleOutputError(PVBOXSERVICECTRLPROCESS pProcess,
     361                                                uint32_t fPollEvt, PRTPIPE phPipeR, uint32_t idPollHnd)
    365362{
    366363    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    370367
    371368#ifdef DEBUG
    372     VBoxServiceVerbose(4, "[PID %RU32]: Output error: idPollHnd=%s, fPollEvt=0x%x\n",
    373                        pProcess->uPID, gstcntlProcessPollHandleToString(idPollHnd), fPollEvt);
     369    VGSvcVerbose(4, "[PID %RU32]: Output error: idPollHnd=%s, fPollEvt=0x%x\n",
     370                 pProcess->uPID, vgsvcGstCtrlProcessPollHandleToString(idPollHnd), fPollEvt);
    374371#endif
    375372
     
    389386        {
    390387#ifdef DEBUG
    391             VBoxServiceVerbose(3, "[PID %RU32]: idPollHnd=%s has %zu bytes left, vetoing close\n",
    392                                pProcess->uPID, gstcntlProcessPollHandleToString(idPollHnd), cbReadable);
     388            VGSvcVerbose(3, "[PID %RU32]: idPollHnd=%s has %zu bytes left, vetoing close\n",
     389                         pProcess->uPID, vgsvcGstCtrlProcessPollHandleToString(idPollHnd), cbReadable);
    393390#endif
    394391            /* Veto closing the pipe yet because there's still stuff to read
     
    400397#ifdef DEBUG
    401398    else
    402         VBoxServiceVerbose(3, "[PID %RU32]: idPollHnd=%s will be closed\n",
    403                            pProcess->uPID, gstcntlProcessPollHandleToString(idPollHnd));
     399        VGSvcVerbose(3, "[PID %RU32]: idPollHnd=%s will be closed\n",
     400                     pProcess->uPID, vgsvcGstCtrlProcessPollHandleToString(idPollHnd));
    404401#endif
    405402
     
    426423 *
    427424 */
    428 static int gstcntlProcessPollsetOnOutput(PVBOXSERVICECTRLPROCESS pProcess,
    429                                          uint32_t fPollEvt, PRTPIPE phPipeR, uint32_t idPollHnd)
     425static int vgsvcGstCtrlProcessPollsetOnOutput(PVBOXSERVICECTRLPROCESS pProcess,
     426                                              uint32_t fPollEvt, PRTPIPE phPipeR, uint32_t idPollHnd)
    430427{
    431428    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    432429
    433430#ifdef DEBUG
    434     VBoxServiceVerbose(4, "[PID %RU32]: Output event phPipeR=%p, idPollHnd=%s, fPollEvt=0x%x\n",
    435                        pProcess->uPID, phPipeR, gstcntlProcessPollHandleToString(idPollHnd), fPollEvt);
     431    VGSvcVerbose(4, "[PID %RU32]: Output event phPipeR=%p, idPollHnd=%s, fPollEvt=0x%x\n",
     432                 pProcess->uPID, phPipeR, vgsvcGstCtrlProcessPollHandleToString(idPollHnd), fPollEvt);
    436433#endif
    437434
     
    449446            && cbReadable)
    450447        {
    451             VBoxServiceVerbose(4, "[PID %RU32]: Output event cbReadable=%zu\n",
    452                                pProcess->uPID, cbReadable);
     448            VGSvcVerbose(4, "[PID %RU32]: Output event cbReadable=%zu\n", pProcess->uPID, cbReadable);
    453449        }
    454450    }
     
    461457        size_t cbRead = 0;
    462458        uint8_t byData[_64K];
    463         rc = RTPipeRead(*phPipeR,
    464                         byData, sizeof(byData), &cbRead);
    465         VBoxServiceVerbose(4, "GstCntlProcessHandleOutputEvent cbRead=%u, rc=%Rrc\n",
    466                            cbRead, rc);
     459        rc = RTPipeRead(*phPipeR, byData, sizeof(byData), &cbRead);
     460        VGSvcVerbose(4, "VGSvcGstCtrlProcessHandleOutputEvent cbRead=%u, rc=%Rrc\n", cbRead, rc);
    467461
    468462        /* Make sure we go another poll round in case there was too much data
     
    473467
    474468    if (fPollEvt & RTPOLL_EVT_ERROR)
    475         rc = gstcntlProcessHandleOutputError(pProcess,
    476                                              fPollEvt, phPipeR, idPollHnd);
     469        rc = vgsvcGstCtrlProcessHandleOutputError(pProcess, fPollEvt, phPipeR, idPollHnd);
    477470    return rc;
    478471}
     
    486479 * @param   pProcess                    The guest process to handle.
    487480 */
    488 static int gstcntlProcessProcLoop(PVBOXSERVICECTRLPROCESS pProcess)
     481static int vgsvcGstCtrlProcessProcLoop(PVBOXSERVICECTRLPROCESS pProcess)
    489482{
    490483    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    507500     * the first (stale) entry will be found and we get really weird results!
    508501     */
    509     rc = gstcntlProcessAssignPID(pProcess, pProcess->hProcess /* Opaque PID handle */);
     502    rc = vgsvcGstCtrlProcessAssignPID(pProcess, pProcess->hProcess /* Opaque PID handle */);
    510503    if (RT_FAILURE(rc))
    511504    {
    512         VBoxServiceError("Unable to assign PID=%u, to new thread, rc=%Rrc\n",
    513                          pProcess->hProcess, rc);
     505        VGSvcError("Unable to assign PID=%u, to new thread, rc=%Rrc\n", pProcess->hProcess, rc);
    514506        return rc;
    515507    }
     
    519511     * and that it's now OK to send input to the process.
    520512     */
    521     VBoxServiceVerbose(2, "[PID %RU32]: Process \"%s\" started, CID=%u, User=%s, cMsTimeout=%RU32\n",
     513    VGSvcVerbose(2, "[PID %RU32]: Process '%s' started, CID=%u, User=%s, cMsTimeout=%RU32\n",
    522514                       pProcess->uPID, pProcess->StartupInfo.szCmd, pProcess->uContextID,
    523515                       pProcess->StartupInfo.szUser, pProcess->StartupInfo.uTimeLimitMS);
     
    529521        rc = VINF_SUCCESS; /* SIGCHLD send by quick childs! */
    530522    if (RT_FAILURE(rc))
    531         VBoxServiceError("[PID %RU32]: Error reporting starting status to host, rc=%Rrc\n",
    532                          pProcess->uPID, rc);
     523        VGSvcError("[PID %RU32]: Error reporting starting status to host, rc=%Rrc\n", pProcess->uPID, rc);
    533524
    534525    /*
     
    554545            {
    555546                case VBOXSERVICECTRLPIPEID_STDIN:
    556                     rc = gstcntlProcessPollsetOnInput(pProcess, fPollEvt,
    557                                                       &pProcess->hPipeStdInW);
     547                    rc = vgsvcGstCtrlProcessPollsetOnInput(pProcess, fPollEvt, &pProcess->hPipeStdInW);
    558548                    break;
    559549
    560550                case VBOXSERVICECTRLPIPEID_STDOUT:
    561                     rc = gstcntlProcessPollsetOnOutput(pProcess, fPollEvt,
    562                                                        &pProcess->hPipeStdOutR, idPollHnd);
     551                    rc = vgsvcGstCtrlProcessPollsetOnOutput(pProcess, fPollEvt, &pProcess->hPipeStdOutR, idPollHnd);
    563552                    break;
    564553
    565554                case VBOXSERVICECTRLPIPEID_STDERR:
    566                     rc = gstcntlProcessPollsetOnOutput(pProcess, fPollEvt,
    567                                                        &pProcess->hPipeStdOutR, idPollHnd);
     555                    rc = vgsvcGstCtrlProcessPollsetOnOutput(pProcess, fPollEvt, &pProcess->hPipeStdOutR, idPollHnd);
    568556                    break;
    569557
    570558                case VBOXSERVICECTRLPIPEID_IPC_NOTIFY:
    571559#ifdef DEBUG_andy
    572                     VBoxServiceVerbose(4, "[PID %RU32]: IPC notify\n", pProcess->uPID);
    573 #endif
    574                     rc2 = gstcntlProcessLock(pProcess);
     560                    VGSvcVerbose(4, "[PID %RU32]: IPC notify\n", pProcess->uPID);
     561#endif
     562                    rc2 = vgsvcGstCtrlProcessLock(pProcess);
    575563                    if (RT_SUCCESS(rc2))
    576564                    {
     
    578566                        uint8_t abBuf[8];
    579567                        size_t cbIgnore;
    580                         rc2 = RTPipeRead(pProcess->hNotificationPipeR,
    581                                          abBuf, sizeof(abBuf), &cbIgnore);
     568                        rc2 = RTPipeRead(pProcess->hNotificationPipeR, abBuf, sizeof(abBuf), &cbIgnore);
    582569                        if (RT_FAILURE(rc2))
    583                             VBoxServiceError("Draining IPC notification pipe failed with rc=%Rrc\n", rc2);
     570                            VGSvcError("Draining IPC notification pipe failed with rc=%Rrc\n", rc2);
    584571
    585572                        /* Process all pending requests. */
    586                         VBoxServiceVerbose(4, "[PID %RU32]: Processing pending requests ...\n",
    587                                            pProcess->uPID);
     573                        VGSvcVerbose(4, "[PID %RU32]: Processing pending requests ...\n", pProcess->uPID);
    588574                        Assert(pProcess->hReqQueue != NIL_RTREQQUEUE);
    589575                        rc2 = RTReqQueueProcess(pProcess->hReqQueue,
     
    591577                        if (   RT_FAILURE(rc2)
    592578                            && rc2 != VERR_TIMEOUT)
    593                             VBoxServiceError("Processing requests failed with with rc=%Rrc\n", rc2);
    594 
    595                         int rc3 = gstcntlProcessUnlock(pProcess);
     579                            VGSvcError("Processing requests failed with with rc=%Rrc\n", rc2);
     580
     581                        int rc3 = vgsvcGstCtrlProcessUnlock(pProcess);
    596582                        AssertRC(rc3);
    597583#ifdef DEBUG
    598                         VBoxServiceVerbose(4, "[PID %RU32]: Processing pending requests done, rc=%Rrc\n",
    599                                            pProcess->uPID, rc2);
     584                        VGSvcVerbose(4, "[PID %RU32]: Processing pending requests done, rc=%Rrc\n", pProcess->uPID, rc2);
    600585#endif
    601586                    }
     
    612597        }
    613598#if 0
    614         VBoxServiceVerbose(4, "[PID %RU32]: Polling done, pollRc=%Rrc, pollCnt=%RU32, idPollHnd=%s, rc=%Rrc, fProcessAlive=%RTbool, fShutdown=%RTbool\n",
    615                            pProcess->uPID, rc2, RTPollSetGetCount(hPollSet), gstcntlProcessPollHandleToString(idPollHnd), rc, fProcessAlive, pProcess->fShutdown);
    616         VBoxServiceVerbose(4, "[PID %RU32]: stdOut=%s, stdErrR=%s\n",
    617                            pProcess->uPID,
    618                            *phStdOutR == NIL_RTPIPE ? "closed" : "open",
    619                            *phStdErrR == NIL_RTPIPE ? "closed" : "open");
     599        VGSvcVerbose(4, "[PID %RU32]: Polling done, pollRc=%Rrc, pollCnt=%RU32, idPollHnd=%s, rc=%Rrc, fProcessAlive=%RTbool, fShutdown=%RTbool\n",
     600                     pProcess->uPID, rc2, RTPollSetGetCount(hPollSet), vgsvcGstCtrlProcessPollHandleToString(idPollHnd), rc, fProcessAlive, pProcess->fShutdown);
     601        VGSvcVerbose(4, "[PID %RU32]: stdOut=%s, stdErrR=%s\n",
     602                     pProcess->uPID,
     603                     *phStdOutR == NIL_RTPIPE ? "closed" : "open",
     604                     *phStdErrR == NIL_RTPIPE ? "closed" : "open");
    620605#endif
    621606        if (RT_UNLIKELY(pProcess->fShutdown))
     
    629614            rc2 = RTProcWaitNoResume(pProcess->hProcess, RTPROCWAIT_FLAGS_NOBLOCK, &ProcessStatus);
    630615#if 0
    631             VBoxServiceVerbose(4, "[PID %RU32]: RTProcWaitNoResume=%Rrc\n",
    632                                pProcess->uPID, rc2);
     616            VGSvcVerbose(4, "[PID %RU32]: RTProcWaitNoResume=%Rrc\n", pProcess->uPID, rc2);
    633617#endif
    634618            if (RT_SUCCESS_NP(rc2))
     
    687671                        break; /* Give up after 20 mins. */
    688672
    689                     VBoxServiceVerbose(3, "[PID %RU32]: Timed out (%RU64ms elapsed > %RU32ms timeout), killing ...\n",
    690                                        pProcess->uPID, cMsElapsed, pProcess->StartupInfo.uTimeLimitMS);
     673                    VGSvcVerbose(3, "[PID %RU32]: Timed out (%RU64ms elapsed > %RU32ms timeout), killing ...\n",
     674                                 pProcess->uPID, cMsElapsed, pProcess->StartupInfo.uTimeLimitMS);
    691675
    692676                    rc2 = RTProcTerminate(pProcess->hProcess);
    693                     VBoxServiceVerbose(3, "[PID %RU32]: Killing process resulted in rc=%Rrc\n",
    694                                        pProcess->uPID, rc2);
     677                    VGSvcVerbose(3, "[PID %RU32]: Killing process resulted in rc=%Rrc\n",
     678                                 pProcess->uPID, rc2);
    695679                    MsProcessKilled = u64Now;
    696680                    continue;
     
    710694    }
    711695
    712     VBoxServiceVerbose(3, "[PID %RU32]: Loop ended: rc=%Rrc, fShutdown=%RTbool, fProcessAlive=%RTbool, fProcessTimedOut=%RTbool, MsProcessKilled=%RU64\n",
    713                        pProcess->uPID, rc, pProcess->fShutdown, fProcessAlive, fProcessTimedOut, MsProcessKilled, MsProcessKilled);
    714     VBoxServiceVerbose(3, "[PID %RU32]: *phStdOutR=%s, *phStdErrR=%s\n",
    715                        pProcess->uPID,
    716                        pProcess->hPipeStdOutR == NIL_RTPIPE ? "closed" : "open",
    717                        pProcess->hPipeStdErrR == NIL_RTPIPE ? "closed" : "open");
     696    VGSvcVerbose(3, "[PID %RU32]: Loop ended: rc=%Rrc, fShutdown=%RTbool, fProcessAlive=%RTbool, fProcessTimedOut=%RTbool, MsProcessKilled=%RU64\n",
     697                 pProcess->uPID, rc, pProcess->fShutdown, fProcessAlive, fProcessTimedOut, MsProcessKilled, MsProcessKilled);
     698    VGSvcVerbose(3, "[PID %RU32]: *phStdOutR=%s, *phStdErrR=%s\n",
     699                 pProcess->uPID,
     700                 pProcess->hPipeStdOutR == NIL_RTPIPE ? "closed" : "open",
     701                 pProcess->hPipeStdErrR == NIL_RTPIPE ? "closed" : "open");
    718702
    719703    /* Signal that this thread is in progress of shutting down. */
    720     ASMAtomicXchgBool(&pProcess->fShutdown, true);
     704    ASMAtomicWriteBool(&pProcess->fShutdown, true);
    721705
    722706    /*
     
    727711        if (MsProcessKilled == UINT64_MAX)
    728712        {
    729             VBoxServiceVerbose(2, "[PID %RU32]: Is still alive and not killed yet\n",
    730                                pProcess->uPID);
     713            VGSvcVerbose(2, "[PID %RU32]: Is still alive and not killed yet\n", pProcess->uPID);
    731714
    732715            MsProcessKilled = RTTimeMilliTS();
     
    737720            }
    738721            else if (RT_FAILURE(rc2))
    739                 VBoxServiceError("PID %RU32]: Killing process failed with rc=%Rrc\n",
    740                                  pProcess->uPID, rc2);
     722                VGSvcError("PID %RU32]: Killing process failed with rc=%Rrc\n", pProcess->uPID, rc2);
    741723            RTThreadSleep(500);
    742724        }
     
    744726        for (int i = 0; i < 10 && fProcessAlive; i++)
    745727        {
    746             VBoxServiceVerbose(4, "[PID %RU32]: Kill attempt %d/10: Waiting to exit ...\n",
    747                                pProcess->uPID, i + 1);
     728            VGSvcVerbose(4, "[PID %RU32]: Kill attempt %d/10: Waiting to exit ...\n", pProcess->uPID, i + 1);
    748729            rc2 = RTProcWait(pProcess->hProcess, RTPROCWAIT_FLAGS_NOBLOCK, &ProcessStatus);
    749730            if (RT_SUCCESS(rc2))
    750731            {
    751                 VBoxServiceVerbose(4, "[PID %RU32]: Kill attempt %d/10: Exited\n",
    752                                    pProcess->uPID, i + 1);
     732                VGSvcVerbose(4, "[PID %RU32]: Kill attempt %d/10: Exited\n", pProcess->uPID, i + 1);
    753733                fProcessAlive = false;
    754734                break;
     
    756736            if (i >= 5)
    757737            {
    758                 VBoxServiceVerbose(4, "[PID %RU32]: Kill attempt %d/10: Trying to terminate ...\n",
    759                                    pProcess->uPID, i + 1);
     738                VGSvcVerbose(4, "[PID %RU32]: Kill attempt %d/10: Trying to terminate ...\n", pProcess->uPID, i + 1);
    760739                rc2 = RTProcTerminate(pProcess->hProcess);
    761740                if (   RT_FAILURE(rc)
    762741                    && rc2 != VERR_NOT_FOUND)
    763                     VBoxServiceError("PID %RU32]: Killing process failed with rc=%Rrc\n",
     742                    VGSvcError("PID %RU32]: Killing process failed with rc=%Rrc\n",
    764743                                     pProcess->uPID, rc2);
    765744            }
     
    768747
    769748        if (fProcessAlive)
    770             VBoxServiceError("[PID %RU32]: Could not be killed\n", pProcess->uPID);
     749            VGSvcError("[PID %RU32]: Could not be killed\n", pProcess->uPID);
    771750    }
    772751
     
    783762     */
    784763
    785     rc2 = gstcntlProcessLock(pProcess);
     764    rc2 = vgsvcGstCtrlProcessLock(pProcess);
    786765    if (RT_SUCCESS(rc2))
    787766    {
    788         VBoxServiceVerbose(3, "[PID %RU32]: Processing outstanding requests ...\n",
    789                            pProcess->uPID);
     767        VGSvcVerbose(3, "[PID %RU32]: Processing outstanding requests ...\n", pProcess->uPID);
    790768
    791769        /* Process all pending requests (but don't wait for new ones). */
     
    794772        if (   RT_FAILURE(rc2)
    795773            && rc2 != VERR_TIMEOUT)
    796             VBoxServiceError("[PID %RU32]: Processing outstanding requests failed with with rc=%Rrc\n",
    797                              pProcess->uPID, rc2);
    798 
    799         VBoxServiceVerbose(3, "[PID %RU32]: Processing outstanding requests done, rc=%Rrc\n",
    800                            pProcess->uPID, rc2);
    801 
    802         rc2 = gstcntlProcessUnlock(pProcess);
     774            VGSvcError("[PID %RU32]: Processing outstanding requests failed with with rc=%Rrc\n", pProcess->uPID, rc2);
     775
     776        VGSvcVerbose(3, "[PID %RU32]: Processing outstanding requests done, rc=%Rrc\n", pProcess->uPID, rc2);
     777
     778        rc2 = vgsvcGstCtrlProcessUnlock(pProcess);
    803779        AssertRC(rc2);
    804780    }
     
    811787    {
    812788        uint32_t uStatus = PROC_STS_UNDEFINED;
    813         uint32_t uFlags = 0;
     789        uint32_t fFlags = 0;
    814790
    815791        if (     fProcessTimedOut  && !fProcessAlive && MsProcessKilled != UINT64_MAX)
    816792        {
    817             VBoxServiceVerbose(3, "[PID %RU32]: Timed out and got killed\n",
    818                                pProcess->uPID);
     793            VGSvcVerbose(3, "[PID %RU32]: Timed out and got killed\n", pProcess->uPID);
    819794            uStatus = PROC_STS_TOK;
    820795        }
    821796        else if (fProcessTimedOut  &&  fProcessAlive && MsProcessKilled != UINT64_MAX)
    822797        {
    823             VBoxServiceVerbose(3, "[PID %RU32]: Timed out and did *not* get killed\n",
    824                                pProcess->uPID);
     798            VGSvcVerbose(3, "[PID %RU32]: Timed out and did *not* get killed\n", pProcess->uPID);
    825799            uStatus = PROC_STS_TOA;
    826800        }
    827801        else if (pProcess->fShutdown && (fProcessAlive || MsProcessKilled != UINT64_MAX))
    828802        {
    829             VBoxServiceVerbose(3, "[PID %RU32]: Got terminated because system/service is about to shutdown\n",
    830                                pProcess->uPID);
     803            VGSvcVerbose(3, "[PID %RU32]: Got terminated because system/service is about to shutdown\n", pProcess->uPID);
    831804            uStatus = PROC_STS_DWN; /* Service is stopping, process was killed. */
    832             uFlags = pProcess->StartupInfo.uFlags; /* Return handed-in execution flags back to the host. */
     805            fFlags = pProcess->StartupInfo.uFlags; /* Return handed-in execution flags back to the host. */
    833806        }
    834807        else if (fProcessAlive)
    835         {
    836             VBoxServiceError("[PID %RU32]: Is alive when it should not!\n",
    837                              pProcess->uPID);
    838         }
     808            VGSvcError("[PID %RU32]: Is alive when it should not!\n", pProcess->uPID);
    839809        else if (MsProcessKilled != UINT64_MAX)
    840         {
    841             VBoxServiceError("[PID %RU32]: Has been killed when it should not!\n",
    842                              pProcess->uPID);
    843         }
     810            VGSvcError("[PID %RU32]: Has been killed when it should not!\n", pProcess->uPID);
    844811        else if (ProcessStatus.enmReason == RTPROCEXITREASON_NORMAL)
    845812        {
    846             VBoxServiceVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_NORMAL (Exit code: %d)\n",
    847                                pProcess->uPID, ProcessStatus.iStatus);
    848 
     813            VGSvcVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_NORMAL (Exit code: %d)\n",
     814                         pProcess->uPID, ProcessStatus.iStatus);
    849815            uStatus = PROC_STS_TEN;
    850             uFlags = ProcessStatus.iStatus;
     816            fFlags = ProcessStatus.iStatus;
    851817        }
    852818        else if (ProcessStatus.enmReason == RTPROCEXITREASON_SIGNAL)
    853819        {
    854             VBoxServiceVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_SIGNAL (Signal: %u)\n",
    855                                pProcess->uPID, ProcessStatus.iStatus);
    856 
     820            VGSvcVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_SIGNAL (Signal: %u)\n",
     821                         pProcess->uPID, ProcessStatus.iStatus);
    857822            uStatus = PROC_STS_TES;
    858             uFlags = ProcessStatus.iStatus;
     823            fFlags = ProcessStatus.iStatus;
    859824        }
    860825        else if (ProcessStatus.enmReason == RTPROCEXITREASON_ABEND)
    861826        {
    862827            /* ProcessStatus.iStatus will be undefined. */
    863             VBoxServiceVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_ABEND\n",
    864                                pProcess->uPID);
    865 
     828            VGSvcVerbose(3, "[PID %RU32]: Ended with RTPROCEXITREASON_ABEND\n", pProcess->uPID);
    866829            uStatus = PROC_STS_TEA;
    867             uFlags = ProcessStatus.iStatus;
     830            fFlags = ProcessStatus.iStatus;
    868831        }
    869832        else
    870             VBoxServiceVerbose(1, "[PID %RU32]: Handling process status %u not implemented\n",
    871                                pProcess->uPID, ProcessStatus.enmReason);
    872 
    873         VBoxServiceVerbose(2, "[PID %RU32]: Ended, ClientID=%u, CID=%u, Status=%u, Flags=0x%x\n",
    874                            pProcess->uPID, pProcess->uClientID, pProcess->uContextID, uStatus, uFlags);
     833            VGSvcVerbose(1, "[PID %RU32]: Handling process status %u not implemented\n", pProcess->uPID, ProcessStatus.enmReason);
     834        VGSvcVerbose(2, "[PID %RU32]: Ended, ClientID=%u, CID=%u, Status=%u, Flags=0x%x\n",
     835                     pProcess->uPID, pProcess->uClientID, pProcess->uContextID, uStatus, fFlags);
    875836
    876837        VBGLR3GUESTCTRLCMDCTX ctxEnd = { pProcess->uClientID, pProcess->uContextID };
    877         rc2 = VbglR3GuestCtrlProcCbStatus(&ctxEnd,
    878                                           pProcess->uPID, uStatus, uFlags,
    879                                           NULL /* pvData */, 0 /* cbData */);
     838        rc2 = VbglR3GuestCtrlProcCbStatus(&ctxEnd, pProcess->uPID, uStatus, fFlags, NULL /* pvData */, 0 /* cbData */);
    880839        if (   RT_FAILURE(rc2)
    881840            && rc2 == VERR_NOT_FOUND)
    882             VBoxServiceError("[PID %RU32]: Error reporting final status to host; rc=%Rrc\n",
    883                              pProcess->uPID, rc2);
    884     }
    885 
    886     VBoxServiceVerbose(3, "[PID %RU32]: Process loop returned with rc=%Rrc\n",
    887                        pProcess->uPID, rc);
     841            VGSvcError("[PID %RU32]: Error reporting final status to host; rc=%Rrc\n", pProcess->uPID, rc2);
     842    }
     843
     844    VGSvcVerbose(3, "[PID %RU32]: Process loop returned with rc=%Rrc\n", pProcess->uPID, rc);
    888845    return rc;
    889846}
     
    897854 * @param   phPipe                  The pipe's object to initialize.
    898855 */
    899 static int gstcntlProcessInitPipe(PRTHANDLE ph, PRTPIPE phPipe)
     856static int vgsvcGstCtrlProcessInitPipe(PRTHANDLE ph, PRTPIPE phPipe)
    900857{
    901858    AssertPtrReturn(ph, VERR_INVALID_PARAMETER);
     
    924881 *                              should service.
    925882 */
    926 static int gstcntlProcessSetupPipe(const char *pszHowTo, int fd,
    927                                    PRTHANDLE ph, PRTHANDLE *pph, PRTPIPE phPipe)
     883static int vgsvcGstCtrlProcessSetupPipe(const char *pszHowTo, int fd, PRTHANDLE ph, PRTHANDLE *pph, PRTPIPE phPipe)
    928884{
    929885    AssertPtrReturn(ph, VERR_INVALID_POINTER);
     
    950906            rc = RTPipeCreate(&ph->u.hPipe, phPipe, RTPIPE_C_INHERIT_READ);
    951907        }
    952         else /* stdout or stderr? */
     908        else /* stdout or stderr. */
    953909        {
    954910            /* Connect a read pipe specified by phPipe to stdout or stderr. */
     
    993949 * @param   cbExpanded                  Size (in bytes) of string to store the resolved path.
    994950 */
    995 static int gstcntlProcessMakeFullPath(const char *pszPath, char *pszExpanded, size_t cbExpanded)
     951static int vgsvcGstCtrlProcessMakeFullPath(const char *pszPath, char *pszExpanded, size_t cbExpanded)
    996952{
    997953    int rc = VINF_SUCCESS;
     954/** @todo r=bird: This feature shall be made optional, i.e. require a
     955 *        flag to be passed down.  Further, it shall work on the environment
     956 *        block of the new process (i.e. include env changes passed down from
     957 *        the caller).  I would also suggest using the unix variable expansion
     958 *        syntax, not the DOS one.
     959 *
     960 *        Since this currently not available on non-windows guests, I suggest
     961 *        we disable it until such a time as it is implemented correctly. */
    998962#ifdef RT_OS_WINDOWS
    999     if (!ExpandEnvironmentStrings(pszPath, pszExpanded, cbExpanded))
     963    if (!ExpandEnvironmentStrings(pszPath, pszExpanded, (DWORD)cbExpanded))
    1000964        rc = RTErrConvertFromWin32(GetLastError());
    1001965#else
     
    1004968#endif
    1005969#ifdef DEBUG
    1006     VBoxServiceVerbose(3, "VBoxServiceControlExecMakeFullPath: %s -> %s\n",
    1007                        pszPath, pszExpanded);
     970    VGSvcVerbose(3, "VBoxServiceControlExecMakeFullPath: %s -> %s\n", pszPath, pszExpanded);
    1008971#endif
    1009972    return rc;
     
    1021984 * @param   cbResolved                  Size (in bytes) of resolved file name string.
    1022985 */
    1023 static int gstcntlProcessResolveExecutable(const char *pszFileName,
    1024                                            char *pszResolved, size_t cbResolved)
     986static int vgsvcGstCtrlProcessResolveExecutable(const char *pszFileName, char *pszResolved, size_t cbResolved)
    1025987{
    1026988    AssertPtrReturn(pszFileName, VERR_INVALID_POINTER);
     
    10461008    if (RT_SUCCESS(rc))
    10471009    {
    1048         rc = gstcntlProcessMakeFullPath(szPathToResolve, pszResolved, cbResolved);
     1010        rc = vgsvcGstCtrlProcessMakeFullPath(szPathToResolve, pszResolved, cbResolved);
    10491011        if (RT_SUCCESS(rc))
    1050             VBoxServiceVerbose(3, "Looked up executable: %s -> %s\n",
    1051                                pszFileName, pszResolved);
     1012            VGSvcVerbose(3, "Looked up executable: %s -> %s\n", pszFileName, pszResolved);
    10521013    }
    10531014
    10541015    if (RT_FAILURE(rc))
    1055         VBoxServiceError("Failed to lookup executable \"%s\" with rc=%Rrc\n",
    1056                          pszFileName, rc);
     1016        VGSvcError("Failed to lookup executable '%s' with rc=%Rrc\n", pszFileName, rc);
    10571017    return rc;
    10581018}
     
    10701030 *                          Needs to be freed with RTGetOptArgvFree.
    10711031 */
    1072 static int gstcntlProcessAllocateArgv(const char *pszArgv0, const char * const *papszArgs, uint32_t fFlags,
    1073                                       char ***ppapszArgv)
     1032static int vgsvcGstCtrlProcessAllocateArgv(const char *pszArgv0, const char * const *papszArgs, uint32_t fFlags,
     1033                                           char ***ppapszArgv)
    10741034{
    10751035    AssertPtrReturn(ppapszArgv, VERR_INVALID_POINTER);
    10761036
    1077     VBoxServiceVerbose(3, "GstCntlProcessPrepareArgv: pszArgv0=%p, papszArgs=%p, fFlags=%#x, ppapszArgv=%p\n",
    1078                        pszArgv0, papszArgs, fFlags, ppapszArgv);
     1037    VGSvcVerbose(3, "VGSvcGstCtrlProcessPrepareArgv: pszArgv0=%p, papszArgs=%p, fFlags=%#x, ppapszArgv=%p\n",
     1038                 pszArgv0, papszArgs, fFlags, ppapszArgv);
    10791039
    10801040    int rc = VINF_SUCCESS;
     
    10871047
    10881048    /* Allocate new argv vector (adding + 2 for argv0 + termination). */
    1089     size_t cbSize = (cArgs + 2) * sizeof(char*);
    1090     char **papszNewArgv = (char**)RTMemAlloc(cbSize);
     1049    size_t cbSize = (cArgs + 2) * sizeof(char *);
     1050    char **papszNewArgv = (char **)RTMemAlloc(cbSize);
    10911051    if (!papszNewArgv)
    10921052        return VERR_NO_MEMORY;
    10931053
    10941054#ifdef DEBUG
    1095     VBoxServiceVerbose(3, "GstCntlProcessAllocateArgv: cbSize=%RU32, cArgs=%RU32\n",
    1096                        cbSize, cArgs);
    1097 #endif
    1098 
     1055    VGSvcVerbose(3, "VGSvcGstCtrlProcessAllocateArgv: cbSize=%RU32, cArgs=%RU32\n", cbSize, cArgs);
     1056#endif
    10991057
    11001058    /* HACK ALERT! Since we still don't allow the user to really specify the first
     
    11811139 * @param   uPID           PID to assign to the specified guest control execution thread.
    11821140 */
    1183 int gstcntlProcessAssignPID(PVBOXSERVICECTRLPROCESS pProcess, uint32_t uPID)
     1141static int vgsvcGstCtrlProcessAssignPID(PVBOXSERVICECTRLPROCESS pProcess, uint32_t uPID)
    11841142{
    11851143    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    12041162                    uint32_t uTriedPID = uPID;
    12051163                    uPID += 391939;
    1206                     VBoxServiceVerbose(2, "PID %RU32 was used before (process %p), trying again with %RU32 ...\n",
     1164                    VGSvcVerbose(2, "PID %RU32 was used before (process %p), trying again with %RU32 ...\n",
    12071165                                       uTriedPID, pProcessCur, uPID);
    12081166                    fTryAgain = true;
     
    12231181
    12241182
    1225 void gstcntlProcessFreeArgv(char **papszArgv)
     1183static void vgsvcGstCtrlProcessFreeArgv(char **papszArgv)
    12261184{
    12271185    if (papszArgv)
     
    12511209 *                                      successful process start.
    12521210 */
    1253 static int gstcntlProcessCreateProcess(const char *pszExec, const char * const *papszArgs, RTENV hEnv, uint32_t fFlags,
    1254                                        PCRTHANDLE phStdIn, PCRTHANDLE phStdOut, PCRTHANDLE phStdErr, const char *pszAsUser,
    1255                                        const char *pszPassword, PRTPROCESS phProcess)
     1211static int vgsvcGstCtrlProcessCreateProcess(const char *pszExec, const char * const *papszArgs, RTENV hEnv, uint32_t fFlags,
     1212                                            PCRTHANDLE phStdIn, PCRTHANDLE phStdOut, PCRTHANDLE phStdErr, const char *pszAsUser,
     1213                                            const char *pszPassword, PRTPROCESS phProcess)
    12561214{
    12571215    AssertPtrReturn(pszExec, VERR_INVALID_PARAMETER);
     
    12971255            if (   RT_SUCCESS(rc)
    12981256                && RTPathExists(szSysWow64))
    1299                 VBoxServiceVerbose(0, "Warning: This service is 32-bit; could not execute sysprep on 64-bit OS!\n");
     1257                VGSvcVerbose(0, "Warning: This service is 32-bit; could not execute sysprep on 64-bit OS!\n");
    13001258#endif
    13011259            if (RT_SUCCESS(rc))
     
    13051263
    13061264            if (RT_FAILURE(rc))
    1307                 VBoxServiceError("Failed to detect sysrep location, rc=%Rrc\n", rc);
     1265                VGSvcError("Failed to detect sysrep location, rc=%Rrc\n", rc);
    13081266        }
    13091267        else if (!fRet)
    1310             VBoxServiceError("Failed to retrieve OS information, last error=%ld\n", GetLastError());
    1311 
    1312         VBoxServiceVerbose(3, "Sysprep executable is: %s\n", szSysprepCmd);
     1268            VGSvcError("Failed to retrieve OS information, last error=%ld\n", GetLastError());
     1269
     1270        VGSvcVerbose(3, "Sysprep executable is: %s\n", szSysprepCmd);
    13131271
    13141272        if (RT_SUCCESS(rc))
    13151273        {
    13161274            char **papszArgsExp;
    1317             rc = gstcntlProcessAllocateArgv(szSysprepCmd /* argv0 */, papszArgs, fFlags, &papszArgsExp);
     1275            rc = vgsvcGstCtrlProcessAllocateArgv(szSysprepCmd /* argv0 */, papszArgs, fFlags, &papszArgsExp);
    13181276            if (RT_SUCCESS(rc))
    13191277            {
     
    13241282                                    phStdIn, phStdOut, phStdErr, NULL /* pszAsUser */,
    13251283                                    NULL /* pszPassword */, phProcess);
    1326                 gstcntlProcessFreeArgv(papszArgsExp);
     1284                vgsvcGstCtrlProcessFreeArgv(papszArgsExp);
    13271285            }
    13281286        }
    13291287
    13301288        if (RT_FAILURE(rc))
    1331             VBoxServiceVerbose(3, "Starting sysprep returned rc=%Rrc\n", rc);
     1289            VGSvcVerbose(3, "Starting sysprep returned rc=%Rrc\n", rc);
    13321290
    13331291        return rc;
     
    13401298        /* We want to use the internal toolbox (all internal
    13411299         * tools are starting with "vbox_" (e.g. "vbox_cat"). */
    1342         rc = gstcntlProcessResolveExecutable(VBOXSERVICE_NAME, szExecExp, sizeof(szExecExp));
     1300        rc = vgsvcGstCtrlProcessResolveExecutable(VBOXSERVICE_NAME, szExecExp, sizeof(szExecExp));
    13431301    }
    13441302    else
     
    13481306         * Do the environment variables expansion on executable and arguments.
    13491307         */
    1350         rc = gstcntlProcessResolveExecutable(pszExec, szExecExp, sizeof(szExecExp));
     1308        rc = vgsvcGstCtrlProcessResolveExecutable(pszExec, szExecExp, sizeof(szExecExp));
    13511309#ifdef VBOXSERVICE_TOOLBOX
    13521310    }
     
    13571315        /** @todo r-bird: pszExec != argv[0]! When are you going to get that?!? How many
    13581316         * times does this need to be pointed out?  HOST/GUEST INTERFACE IS MISDESIGNED! */
    1359         rc = gstcntlProcessAllocateArgv(pszExec /* Always use the unmodified executable name as argv0. */,
    1360                                         papszArgs /* Append the rest of the argument vector (if any). */,
    1361                                         fFlags, &papszArgsExp);
     1317        rc = vgsvcGstCtrlProcessAllocateArgv(pszExec /* Always use the unmodified executable name as argv0. */,
     1318                                             papszArgs /* Append the rest of the argument vector (if any). */,
     1319                                             fFlags, &papszArgsExp);
    13621320        if (RT_FAILURE(rc))
    13631321        {
    13641322            /* Don't print any arguments -- may contain passwords or other sensible data! */
    1365             VBoxServiceError("Could not prepare arguments, rc=%Rrc\n", rc);
     1323            VGSvcError("Could not prepare arguments, rc=%Rrc\n", rc);
    13661324        }
    13671325        else
     
    13881346                uProcFlags |= RTPROC_FLAGS_SERVICE;
    13891347#ifdef DEBUG
    1390             VBoxServiceVerbose(3, "Command: %s\n", szExecExp);
     1348            VGSvcVerbose(3, "Command: %s\n", szExecExp);
    13911349            for (size_t i = 0; papszArgsExp[i]; i++)
    1392                 VBoxServiceVerbose(3, "\targv[%ld]: %s\n", i, papszArgsExp[i]);
    1393 #endif
    1394             VBoxServiceVerbose(3, "Starting process \"%s\" ...\n", szExecExp);
     1350                VGSvcVerbose(3, "\targv[%ld]: %s\n", i, papszArgsExp[i]);
     1351#endif
     1352            VGSvcVerbose(3, "Starting process '%s' ...\n", szExecExp);
    13951353
    13961354            /* Do normal execution. */
     
    14011359                                phProcess);
    14021360
    1403             VBoxServiceVerbose(3, "Starting process \"%s\" returned rc=%Rrc\n",
    1404                                szExecExp, rc);
    1405 
    1406             gstcntlProcessFreeArgv(papszArgsExp);
     1361            VGSvcVerbose(3, "Starting process '%s' returned rc=%Rrc\n", szExecExp, rc);
     1362
     1363            vgsvcGstCtrlProcessFreeArgv(papszArgsExp);
    14071364        }
    14081365    }
     
    14121369
    14131370#ifdef DEBUG
    1414 static int gstcntlProcessDumpToFile(const char *pszFileName, void *pvBuf, size_t cbBuf)
     1371static int vgsvcGstCtrlProcessDumpToFile(const char *pszFileName, void *pvBuf, size_t cbBuf)
    14151372{
    14161373    AssertPtrReturn(pszFileName, VERR_INVALID_POINTER);
     
    14281385    if (RT_SUCCESS(rc))
    14291386    {
    1430         VBoxServiceVerbose(4, "Dumping %ld bytes to \"%s\"\n", cbBuf, szFile);
     1387        VGSvcVerbose(4, "Dumping %ld bytes to '%s'\n", cbBuf, szFile);
    14311388
    14321389        RTFILE fh;
     
    14411398    return rc;
    14421399}
    1443 #endif
     1400#endif /* DEBUG */
    14441401
    14451402
     
    14501407 * @param   PVBOXSERVICECTRLPROCESS         Guest process.
    14511408 */
    1452 static int gstcntlProcessProcessWorker(PVBOXSERVICECTRLPROCESS pProcess)
     1409static int vgsvcGstCtrlProcessProcessWorker(PVBOXSERVICECTRLPROCESS pProcess)
    14531410{
    14541411    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    1455     VBoxServiceVerbose(3, "Thread of process pThread=0x%p = \"%s\" started\n",
    1456                        pProcess, pProcess->StartupInfo.szCmd);
     1412    VGSvcVerbose(3, "Thread of process pThread=0x%p = '%s' started\n", pProcess, pProcess->StartupInfo.szCmd);
    14571413
    14581414    int rc = VbglR3GuestCtrlConnect(&pProcess->uClientID);
    14591415    if (RT_FAILURE(rc))
    14601416    {
    1461         VBoxServiceError("Process thread \"%s\" (%p) failed to connect to the guest control service, rc=%Rrc\n",
    1462                          pProcess->StartupInfo.szCmd, pProcess, rc);
     1417        VGSvcError("Process thread '%s' (%p) failed to connect to the guest control service, rc=%Rrc\n",
     1418                   pProcess->StartupInfo.szCmd, pProcess, rc);
    14631419        RTThreadUserSignal(RTThreadSelf());
    14641420        return rc;
    14651421    }
    14661422
    1467     VBoxServiceVerbose(3, "Guest process \"%s\" got client ID=%u, flags=0x%x\n",
    1468                        pProcess->StartupInfo.szCmd, pProcess->uClientID, pProcess->StartupInfo.uFlags);
     1423    VGSvcVerbose(3, "Guest process '%s' got client ID=%u, flags=0x%x\n",
     1424                 pProcess->StartupInfo.szCmd, pProcess->uClientID, pProcess->StartupInfo.uFlags);
    14691425
    14701426    /* The process thread is not interested in receiving any commands;
     
    14741430    if (RT_FAILURE(rc))
    14751431    {
    1476         VBoxServiceError("Unable to set message filter, rc=%Rrc\n", rc);
     1432        VGSvcError("Unable to set message filter, rc=%Rrc\n", rc);
    14771433        /* Non-critical. */
    14781434    }
    14791435
    1480     rc = GstCntlSessionProcessAdd(pProcess->pSession, pProcess);
     1436    rc = VGSvcGstCtrlSessionProcessAdd(pProcess->pSession, pProcess);
    14811437    if (RT_FAILURE(rc))
    14821438    {
    1483         VBoxServiceError("Errorwhile adding guest process \"%s\" (%p) to session process list, rc=%Rrc\n",
    1484                          pProcess->StartupInfo.szCmd, pProcess, rc);
     1439        VGSvcError("Errorwhile adding guest process '%s' (%p) to session process list, rc=%Rrc\n",
     1440                   pProcess->StartupInfo.szCmd, pProcess, rc);
    14851441        RTThreadUserSignal(RTThreadSelf());
    14861442        return rc;
     
    15631519            RTHANDLE    hStdIn;
    15641520            PRTHANDLE   phStdIn;
    1565             rc = gstcntlProcessSetupPipe("|", 0 /*STDIN_FILENO*/,
     1521            rc = vgsvcGstCtrlProcessSetupPipe("|", 0 /*STDIN_FILENO*/,
    15661522                                         &hStdIn, &phStdIn, &pProcess->hPipeStdInW);
    15671523            if (RT_SUCCESS(rc))
     
    15691525                RTHANDLE    hStdOut;
    15701526                PRTHANDLE   phStdOut;
    1571                 rc = gstcntlProcessSetupPipe(  (pProcess->StartupInfo.uFlags & EXECUTEPROCESSFLAG_WAIT_STDOUT)
     1527                rc = vgsvcGstCtrlProcessSetupPipe(  (pProcess->StartupInfo.uFlags & EXECUTEPROCESSFLAG_WAIT_STDOUT)
    15721528                                             ? "|" : "/dev/null",
    15731529                                             1 /*STDOUT_FILENO*/,
     
    15771533                    RTHANDLE    hStdErr;
    15781534                    PRTHANDLE   phStdErr;
    1579                     rc = gstcntlProcessSetupPipe(  (pProcess->StartupInfo.uFlags & EXECUTEPROCESSFLAG_WAIT_STDERR)
     1535                    rc = vgsvcGstCtrlProcessSetupPipe(  (pProcess->StartupInfo.uFlags & EXECUTEPROCESSFLAG_WAIT_STDERR)
    15801536                                                 ? "|" : "/dev/null",
    15811537                                                 2 /*STDERR_FILENO*/,
     
    16181574                                bool fNeedsImpersonation = !(pProcess->pSession->fFlags & VBOXSERVICECTRLSESSION_FLAG_SPAWN);
    16191575
    1620                                 rc = gstcntlProcessCreateProcess(pProcess->StartupInfo.szCmd, papszArgs, hEnv,
     1576                                rc = vgsvcGstCtrlProcessCreateProcess(pProcess->StartupInfo.szCmd, papszArgs, hEnv,
    16211577                                                                 pProcess->StartupInfo.uFlags,
    16221578                                                                 phStdIn, phStdOut, phStdErr,
     
    16251581                                                                 &pProcess->hProcess);
    16261582                                if (RT_FAILURE(rc))
    1627                                     VBoxServiceError("Error starting process, rc=%Rrc\n", rc);
     1583                                    VGSvcError("Error starting process, rc=%Rrc\n", rc);
    16281584                                /*
    16291585                                 * Tell the session thread that it can continue
     
    16501606
    16511607                                    /* Enter the process main loop. */
    1652                                     rc = gstcntlProcessProcLoop(pProcess);
     1608                                    rc = vgsvcGstCtrlProcessProcLoop(pProcess);
    16531609
    16541610                                    /*
     
    17121668            if (   RT_FAILURE(rc2)
    17131669                && rc2 != VERR_NOT_FOUND)
    1714                 VBoxServiceError("[PID %RU32]: Could not report process failure error; rc=%Rrc (process error %Rrc)\n",
    1715                                  pProcess->uPID, rc2, rc);
     1670                VGSvcError("[PID %RU32]: Could not report process failure error; rc=%Rrc (process error %Rrc)\n",
     1671                           pProcess->uPID, rc2, rc);
    17161672        }
    17171673
    17181674        /* Disconnect this client from the guest control service. This also cancels all
    17191675         * outstanding host requests. */
    1720         VBoxServiceVerbose(3, "[PID %RU32]: Disconnecting (client ID=%u) ...\n",
    1721                            pProcess->uPID, pProcess->uClientID);
     1676        VGSvcVerbose(3, "[PID %RU32]: Disconnecting (client ID=%u) ...\n", pProcess->uPID, pProcess->uClientID);
    17221677        VbglR3GuestCtrlDisconnect(pProcess->uClientID);
    17231678        pProcess->uClientID = 0;
     
    17411696        RTThreadUserSignal(RTThreadSelf());
    17421697
    1743     VBoxServiceVerbose(3, "[PID %RU32]: Thread of process \"%s\" ended with rc=%Rrc\n",
    1744                        pProcess->uPID, pProcess->StartupInfo.szCmd, rc);
     1698    VGSvcVerbose(3, "[PID %RU32]: Thread of process '%s' ended with rc=%Rrc\n",
     1699                 pProcess->uPID, pProcess->StartupInfo.szCmd, rc);
    17451700
    17461701    /* Finally, update stopped status. */
     
    17511706
    17521707
    1753 static int gstcntlProcessLock(PVBOXSERVICECTRLPROCESS pProcess)
     1708static int vgsvcGstCtrlProcessLock(PVBOXSERVICECTRLPROCESS pProcess)
    17541709{
    17551710    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    17681723 *
    17691724 */
    1770 static DECLCALLBACK(int) gstcntlProcessThread(RTTHREAD ThreadSelf, void *pvUser)
     1725static DECLCALLBACK(int) vgsvcGstCtrlProcessThread(RTTHREAD ThreadSelf, void *pvUser)
    17711726{
    17721727    PVBOXSERVICECTRLPROCESS pProcess = (VBOXSERVICECTRLPROCESS*)pvUser;
    17731728    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
    1774     return gstcntlProcessProcessWorker(pProcess);
    1775 }
    1776 
    1777 
    1778 static int gstcntlProcessUnlock(PVBOXSERVICECTRLPROCESS pProcess)
     1729    return vgsvcGstCtrlProcessProcessWorker(pProcess);
     1730}
     1731
     1732
     1733static int vgsvcGstCtrlProcessUnlock(PVBOXSERVICECTRLPROCESS pProcess)
    17791734{
    17801735    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    17951750
    17961751 */
    1797 int GstCntlProcessStart(const PVBOXSERVICECTRLSESSION pSession,
    1798                         const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo,
    1799                         uint32_t uContextID)
     1752int VGSvcGstCtrlProcessStart(const PVBOXSERVICECTRLSESSION pSession,
     1753                             const PVBOXSERVICECTRLPROCSTARTUPINFO pStartupInfo, uint32_t uContextID)
    18001754{
    18011755    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    18091763        return VERR_NO_MEMORY;
    18101764
    1811     int rc = gstcntlProcessInit(pProcess, pSession, pStartupInfo, uContextID);
     1765    int rc = vgsvcGstCtrlProcessInit(pProcess, pSession, pStartupInfo, uContextID);
    18121766    if (RT_SUCCESS(rc))
    18131767    {
     
    18151769        if (s_uCtrlExecThread++ == UINT32_MAX)
    18161770            s_uCtrlExecThread = 0; /* Wrap around to not let IPRT freak out. */
    1817         rc = RTThreadCreateF(&pProcess->Thread, gstcntlProcessThread,
     1771        rc = RTThreadCreateF(&pProcess->Thread, vgsvcGstCtrlProcessThread,
    18181772                             pProcess /*pvUser*/, 0 /*cbStack*/,
    18191773                             RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "gctl%u", s_uCtrlExecThread);
    18201774        if (RT_FAILURE(rc))
    18211775        {
    1822             VBoxServiceError("Creating thread for guest process \"%s\" failed: rc=%Rrc, pProcess=%p\n",
    1823                              pStartupInfo->szCmd, rc, pProcess);
    1824 
    1825             GstCntlProcessFree(pProcess);
     1776            VGSvcError("Creating thread for guest process '%s' failed: rc=%Rrc, pProcess=%p\n",
     1777                       pStartupInfo->szCmd, rc, pProcess);
     1778
     1779            VGSvcGstCtrlProcessFree(pProcess);
    18261780        }
    18271781        else
    18281782        {
    1829             VBoxServiceVerbose(4, "Waiting for thread to initialize ...\n");
     1783            VGSvcVerbose(4, "Waiting for thread to initialize ...\n");
    18301784
    18311785            /* Wait for the thread to initialize. */
     
    18351789                || RT_FAILURE(rc))
    18361790            {
    1837                 VBoxServiceError("Thread for process \"%s\" failed to start, rc=%Rrc\n",
    1838                                  pStartupInfo->szCmd, rc);
    1839 
    1840                 GstCntlProcessFree(pProcess);
     1791                VGSvcError("Thread for process '%s' failed to start, rc=%Rrc\n", pStartupInfo->szCmd, rc);
     1792                VGSvcGstCtrlProcessFree(pProcess);
    18411793            }
    18421794            else
     
    18511803
    18521804
    1853 static DECLCALLBACK(int) gstcntlProcessOnInput(PVBOXSERVICECTRLPROCESS pThis,
    1854                                                const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    1855                                                bool fPendingClose, void *pvBuf, uint32_t cbBuf)
     1805static DECLCALLBACK(int) vgsvcGstCtrlProcessOnInput(PVBOXSERVICECTRLPROCESS pThis,
     1806                                                    const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     1807                                                    bool fPendingClose, void *pvBuf, uint32_t cbBuf)
    18561808{
    18571809    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
     
    18641816    {
    18651817        if (pThis->hPipeStdInW != NIL_RTPIPE)
    1866         {
    1867             rc = RTPipeWrite(pThis->hPipeStdInW,
    1868                              pvBuf, cbBuf, &cbWritten);
    1869         }
     1818            rc = RTPipeWrite(pThis->hPipeStdInW, pvBuf, cbBuf, &cbWritten);
    18701819        else
    18711820            rc = VINF_EOF;
     
    18801829     */
    18811830    if (   fPendingClose
    1882         && (cbBuf == cbWritten))
    1883     {
    1884         int rc2 = gstcntlProcessPollsetCloseInput(pThis, &pThis->hPipeStdInW);
     1831        && cbBuf == cbWritten)
     1832    {
     1833        int rc2 = vgsvcGstCtrlProcessPollsetCloseInput(pThis, &pThis->hPipeStdInW);
    18851834        if (RT_SUCCESS(rc))
    18861835            rc = rc2;
     
    18881837
    18891838    uint32_t uStatus = INPUT_STS_UNDEFINED; /* Status to send back to the host. */
    1890     uint32_t uFlags = 0; /* No flags at the moment. */
     1839    uint32_t fFlags = 0; /* No flags at the moment. */
    18911840    if (RT_SUCCESS(rc))
    18921841    {
    1893         VBoxServiceVerbose(4, "[PID %RU32]: Written %RU32 bytes input, CID=%RU32, fPendingClose=%RTbool\n",
    1894                            pThis->uPID, cbWritten, pHostCtx->uContextID, fPendingClose);
     1842        VGSvcVerbose(4, "[PID %RU32]: Written %RU32 bytes input, CID=%RU32, fPendingClose=%RTbool\n",
     1843                     pThis->uPID, cbWritten, pHostCtx->uContextID, fPendingClose);
    18951844        uStatus = INPUT_STS_WRITTEN;
    18961845    }
     
    19121861    {
    19131862        uStatus = INPUT_STS_ERROR;
    1914         uFlags = rc;
     1863        fFlags = rc; /* funny thing to call a "flag"... */
    19151864    }
    19161865    Assert(uStatus > INPUT_STS_UNDEFINED);
    19171866
    1918 #ifdef DEBUG
    1919 
    1920 #endif
    1921     int rc2 = VbglR3GuestCtrlProcCbStatusInput(pHostCtx, pThis->uPID,
    1922                                                uStatus, uFlags, (uint32_t)cbWritten);
     1867    int rc2 = VbglR3GuestCtrlProcCbStatusInput(pHostCtx, pThis->uPID, uStatus, fFlags, (uint32_t)cbWritten);
    19231868    if (RT_SUCCESS(rc))
    19241869        rc = rc2;
    19251870
    19261871#ifdef DEBUG
    1927     VBoxServiceVerbose(3, "[PID %RU32]: gstcntlProcessOnInput returned with rc=%Rrc\n",
    1928                        pThis->uPID, rc);
     1872    VGSvcVerbose(3, "[PID %RU32]: vgsvcGstCtrlProcessOnInput returned with rc=%Rrc\n", pThis->uPID, rc);
    19291873#endif
    19301874    return VINF_SUCCESS; /** @todo Return rc here as soon as RTReqQueue todos are fixed. */
     
    19321876
    19331877
    1934 static DECLCALLBACK(int) gstcntlProcessOnOutput(PVBOXSERVICECTRLPROCESS pThis,
    1935                                                 const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    1936                                                 uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags)
     1878static DECLCALLBACK(int) vgsvcGstCtrlProcessOnOutput(PVBOXSERVICECTRLPROCESS pThis,
     1879                                                     const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     1880                                                     uint32_t uHandle, uint32_t cbToRead, uint32_t fFlags)
    19371881{
    19381882    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
     
    19481892    if (pvBuf)
    19491893    {
    1950         PRTPIPE phPipe =   uHandle == OUTPUT_HANDLE_ID_STDOUT
    1951                          ? &pThis->hPipeStdOutR
    1952                          : &pThis->hPipeStdErrR;
     1894        PRTPIPE phPipe = uHandle == OUTPUT_HANDLE_ID_STDOUT
     1895                       ? &pThis->hPipeStdOutR
     1896                       : &pThis->hPipeStdErrR;
    19531897        AssertPtr(phPipe);
    19541898
     
    19781922               )
    19791923            {
     1924                /** @todo r=bird: vgsvcGstCtrlProcessDumpToFile(void *pvBuf, size_t cbBuf, const char *pszFileNmFmt, ...) */
    19801925                char szDumpFile[RTPATH_MAX];
    19811926                if (!RTStrPrintf(szDumpFile, sizeof(szDumpFile), "VBoxService_Session%RU32_PID%RU32_StdOut.txt",
    19821927                                 pSession->StartupInfo.uSessionID, pThis->uPID)) rc = VERR_BUFFER_UNDERFLOW;
    19831928                if (RT_SUCCESS(rc))
    1984                     rc = gstcntlProcessDumpToFile(szDumpFile, pvBuf, cbRead);
     1929                    rc = vgsvcGstCtrlProcessDumpToFile(szDumpFile, pvBuf, cbRead);
    19851930                AssertRC(rc);
    19861931            }
     
    19931938                    rc = VERR_BUFFER_UNDERFLOW;
    19941939                if (RT_SUCCESS(rc))
    1995                     rc = gstcntlProcessDumpToFile(szDumpFile, pvBuf, cbRead);
     1940                    rc = vgsvcGstCtrlProcessDumpToFile(szDumpFile, pvBuf, cbRead);
    19961941                AssertRC(rc);
    19971942            }
     
    20021947        {
    20031948#ifdef DEBUG
    2004             VBoxServiceVerbose(3, "[PID %RU32]: Read %RU32 bytes output: uHandle=%RU32, CID=%RU32, uFlags=%x\n",
    2005                                pThis->uPID, cbRead, uHandle, pHostCtx->uContextID, uFlags);
     1949            VGSvcVerbose(3, "[PID %RU32]: Read %RU32 bytes output: uHandle=%RU32, CID=%RU32, fFlags=%x\n",
     1950                         pThis->uPID, cbRead, uHandle, pHostCtx->uContextID, fFlags);
    20061951#endif
    20071952            /** Note: Don't convert/touch/modify/whatever the output data here! This might be binary
     
    20111956             *       regardless whether we got data or not! Otherwise the waiting events
    20121957             *       on the host never will get completed! */
    2013             rc = VbglR3GuestCtrlProcCbOutput(pHostCtx, pThis->uPID, uHandle, uFlags,
    2014                                              pvBuf, cbRead);
     1958            Assert((uint32_t)cbRead == cbRead);
     1959            rc = VbglR3GuestCtrlProcCbOutput(pHostCtx, pThis->uPID, uHandle, fFlags, pvBuf, (uint32_t)cbRead);
    20151960            if (   RT_FAILURE(rc)
    20161961                && rc == VERR_NOT_FOUND) /* Not critical if guest PID is not found on the host (anymore). */
     
    20241969
    20251970#ifdef DEBUG
    2026     VBoxServiceVerbose(3, "[PID %RU32]: Reading output returned with rc=%Rrc\n",
    2027                        pThis->uPID, rc);
     1971    VGSvcVerbose(3, "[PID %RU32]: Reading output returned with rc=%Rrc\n", pThis->uPID, rc);
    20281972#endif
    20291973    return VINF_SUCCESS; /** @todo Return rc here as soon as RTReqQueue todos are fixed. */
     
    20311975
    20321976
    2033 static DECLCALLBACK(int) gstcntlProcessOnTerm(PVBOXSERVICECTRLPROCESS pThis)
     1977static DECLCALLBACK(int) vgsvcGstCtrlProcessOnTerm(PVBOXSERVICECTRLPROCESS pThis)
    20341978{
    20351979    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
    20361980
    20371981    if (!ASMAtomicXchgBool(&pThis->fShutdown, true))
    2038     {
    2039         VBoxServiceVerbose(3, "[PID %RU32]: Setting shutdown flag ...\n",
    2040                            pThis->uPID);
    2041     }
     1982        VGSvcVerbose(3, "[PID %RU32]: Setting shutdown flag ...\n", pThis->uPID);
    20421983
    20431984    return VINF_SUCCESS; /** @todo Return rc here as soon as RTReqQueue todos are fixed. */
     
    20451986
    20461987
    2047 int gstcntlProcessRequestExV(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    2048                              bool fAsync, RTMSINTERVAL uTimeoutMS, PRTREQ pReq, PFNRT pfnFunction,
    2049                              unsigned cArgs, va_list Args)
     1988static int vgsvcGstCtrlProcessRequestExV(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx, bool fAsync,
     1989                                         RTMSINTERVAL uTimeoutMS, PRTREQ pReq, PFNRT pfnFunction, unsigned cArgs, va_list Args)
    20501990{
    20511991    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    20551995        AssertPtrReturn(pfnFunction, VERR_INVALID_POINTER);
    20561996
    2057     int rc = gstcntlProcessLock(pProcess);
     1997    int rc = vgsvcGstCtrlProcessLock(pProcess);
    20581998    if (RT_SUCCESS(rc))
    20591999    {
    20602000#ifdef DEBUG
    2061     VBoxServiceVerbose(3, "[PID %RU32]: gstcntlProcessRequestExV fAsync=%RTbool, uTimeoutMS=%RU32, cArgs=%u\n",
    2062                        pProcess->uPID, fAsync, uTimeoutMS, cArgs);
    2063 #endif
    2064         uint32_t uFlags = RTREQFLAGS_IPRT_STATUS;
     2001        VGSvcVerbose(3, "[PID %RU32]: vgsvcGstCtrlProcessRequestExV fAsync=%RTbool, uTimeoutMS=%RU32, cArgs=%u\n",
     2002                     pProcess->uPID, fAsync, uTimeoutMS, cArgs);
     2003#endif
     2004        uint32_t fFlags = RTREQFLAGS_IPRT_STATUS;
    20652005        if (fAsync)
    20662006        {
    20672007            Assert(uTimeoutMS == 0);
    2068             uFlags |= RTREQFLAGS_NO_WAIT;
    2069         }
    2070 
    2071         rc = RTReqQueueCallV(pProcess->hReqQueue, &pReq, uTimeoutMS, uFlags,
    2072                              pfnFunction, cArgs, Args);
     2008            fFlags |= RTREQFLAGS_NO_WAIT;
     2009        }
     2010
     2011        rc = RTReqQueueCallV(pProcess->hReqQueue, &pReq, uTimeoutMS, fFlags, pfnFunction, cArgs, Args);
    20732012        if (RT_SUCCESS(rc))
    20742013        {
     
    20812020                && cbWritten != 1)
    20822021            {
    2083                 VBoxServiceError("[PID %RU32]: Notification pipe got %zu bytes instead of 1\n",
     2022                VGSvcError("[PID %RU32]: Notification pipe got %zu bytes instead of 1\n",
    20842023                                 pProcess->uPID, cbWritten);
    20852024            }
    20862025            else if (RT_UNLIKELY(RT_FAILURE(rc)))
    2087                 VBoxServiceError("[PID %RU32]: Writing to notification pipe failed, rc=%Rrc\n",
     2026                VGSvcError("[PID %RU32]: Writing to notification pipe failed, rc=%Rrc\n",
    20882027                                 pProcess->uPID, rc);
    20892028        }
    20902029        else
    2091             VBoxServiceError("[PID %RU32]: RTReqQueueCallV failed, rc=%Rrc\n",
     2030            VGSvcError("[PID %RU32]: RTReqQueueCallV failed, rc=%Rrc\n",
    20922031                             pProcess->uPID, rc);
    20932032
    2094         int rc2 = gstcntlProcessUnlock(pProcess);
     2033        int rc2 = vgsvcGstCtrlProcessUnlock(pProcess);
    20952034        if (RT_SUCCESS(rc))
    20962035            rc = rc2;
     
    20982037
    20992038#ifdef DEBUG
    2100     VBoxServiceVerbose(3, "[PID %RU32]: gstcntlProcessRequestExV returned rc=%Rrc\n",
    2101                        pProcess->uPID, rc);
     2039    VGSvcVerbose(3, "[PID %RU32]: vgsvcGstCtrlProcessRequestExV returned rc=%Rrc\n", pProcess->uPID, rc);
    21022040#endif
    21032041    return rc;
     
    21052043
    21062044
    2107 int gstcntlProcessRequestAsync(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    2108                                PFNRT pfnFunction, unsigned cArgs, ...)
     2045static int vgsvcGstCtrlProcessRequestAsync(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     2046                                           PFNRT pfnFunction, unsigned cArgs, ...)
    21092047{
    21102048    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    21142052    va_list va;
    21152053    va_start(va, cArgs);
    2116     int rc = gstcntlProcessRequestExV(pProcess, pHostCtx, true /* fAsync */, 0 /* uTimeoutMS */,
    2117                                       NULL /* pReq */, pfnFunction, cArgs, va);
     2054    int rc = vgsvcGstCtrlProcessRequestExV(pProcess, pHostCtx, true /* fAsync */, 0 /* uTimeoutMS */,
     2055                                           NULL /* pReq */, pfnFunction, cArgs, va);
    21182056    va_end(va);
    21192057
     
    21222060
    21232061
    2124 int gstcntlProcessRequestWait(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    2125                               RTMSINTERVAL uTimeoutMS, PRTREQ pReq, PFNRT pfnFunction, unsigned cArgs, ...)
     2062#if 0 /* unused */
     2063static int vgsvcGstCtrlProcessRequestWait(PVBOXSERVICECTRLPROCESS pProcess, const PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     2064                                          RTMSINTERVAL uTimeoutMS, PRTREQ pReq, PFNRT pfnFunction, unsigned cArgs, ...)
    21262065{
    21272066    AssertPtrReturn(pProcess, VERR_INVALID_POINTER);
     
    21312070    va_list va;
    21322071    va_start(va, cArgs);
    2133     int rc = gstcntlProcessRequestExV(pProcess, pHostCtx, false /* fAsync */, uTimeoutMS,
    2134                                       pReq, pfnFunction, cArgs, va);
     2072    int rc = vgsvcGstCtrlProcessRequestExV(pProcess, pHostCtx, false /* fAsync */, uTimeoutMS,
     2073                                           pReq, pfnFunction, cArgs, va);
    21352074    va_end(va);
    21362075
    21372076    return rc;
    21382077}
    2139 
    2140 
    2141 int GstCntlProcessHandleInput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    2142                               bool fPendingClose, void *pvBuf, uint32_t cbBuf)
     2078#endif
     2079
     2080
     2081int VGSvcGstCtrlProcessHandleInput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     2082                                   bool fPendingClose, void *pvBuf, uint32_t cbBuf)
    21432083{
    21442084    if (!ASMAtomicReadBool(&pProcess->fShutdown))
    2145         return gstcntlProcessRequestAsync(pProcess, pHostCtx, (PFNRT)gstcntlProcessOnInput,
    2146                                           5 /* cArgs */, pProcess, pHostCtx, fPendingClose, pvBuf, cbBuf);
    2147 
    2148     return gstcntlProcessOnInput(pProcess, pHostCtx, fPendingClose, pvBuf, cbBuf);
    2149 }
    2150 
    2151 
    2152 int GstCntlProcessHandleOutput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    2153                                uint32_t uHandle, uint32_t cbToRead, uint32_t uFlags)
     2085        return vgsvcGstCtrlProcessRequestAsync(pProcess, pHostCtx, (PFNRT)vgsvcGstCtrlProcessOnInput,
     2086                                               5 /* cArgs */, pProcess, pHostCtx, fPendingClose, pvBuf, cbBuf);
     2087
     2088    return vgsvcGstCtrlProcessOnInput(pProcess, pHostCtx, fPendingClose, pvBuf, cbBuf);
     2089}
     2090
     2091
     2092int VGSvcGstCtrlProcessHandleOutput(PVBOXSERVICECTRLPROCESS pProcess, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     2093                                    uint32_t uHandle, uint32_t cbToRead, uint32_t fFlags)
    21542094{
    21552095    if (!ASMAtomicReadBool(&pProcess->fShutdown))
    2156         return gstcntlProcessRequestAsync(pProcess, pHostCtx, (PFNRT)gstcntlProcessOnOutput,
    2157                                           5 /* cArgs */, pProcess, pHostCtx, uHandle, cbToRead, uFlags);
    2158 
    2159     return gstcntlProcessOnOutput(pProcess, pHostCtx, uHandle, cbToRead, uFlags);
    2160 }
    2161 
    2162 
    2163 int GstCntlProcessHandleTerm(PVBOXSERVICECTRLPROCESS pProcess)
     2096        return vgsvcGstCtrlProcessRequestAsync(pProcess, pHostCtx, (PFNRT)vgsvcGstCtrlProcessOnOutput,
     2097                                               5 /* cArgs */, pProcess, pHostCtx, uHandle, cbToRead, fFlags);
     2098
     2099    return vgsvcGstCtrlProcessOnOutput(pProcess, pHostCtx, uHandle, cbToRead, fFlags);
     2100}
     2101
     2102
     2103int VGSvcGstCtrlProcessHandleTerm(PVBOXSERVICECTRLPROCESS pProcess)
    21642104{
    21652105    if (!ASMAtomicReadBool(&pProcess->fShutdown))
    2166         return gstcntlProcessRequestAsync(pProcess, NULL /* pHostCtx */, (PFNRT)gstcntlProcessOnTerm,
    2167                                           1 /* cArgs */, pProcess);
    2168 
    2169     return gstcntlProcessOnTerm(pProcess);
    2170 }
    2171 
     2106        return vgsvcGstCtrlProcessRequestAsync(pProcess, NULL /* pHostCtx */, (PFNRT)vgsvcGstCtrlProcessOnTerm,
     2107                                               1 /* cArgs */, pProcess);
     2108
     2109    return vgsvcGstCtrlProcessOnTerm(pProcess);
     2110}
     2111
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceControlSession.cpp

    r58023 r58029  
    4242
    4343/*********************************************************************************************************************************
    44 *   Externals                                                                                                                    *
     44*   Structures and Typedefs                                                                                                      *
    4545*********************************************************************************************************************************/
    46 extern RTLISTANCHOR                g_lstControlSessionThreads;
    47 extern VBOXSERVICECTRLSESSION      g_Session;
    48 
    49 extern int                  VBoxServiceLogCreate(const char *pszLogFile);
    50 extern void                 VBoxServiceLogDestroy(void);
    51 
    52 
    53 /*********************************************************************************************************************************
    54 *   Internal Functions                                                                                                           *
    55 *********************************************************************************************************************************/
    56 static int                  gstcntlSessionFileDestroy(PVBOXSERVICECTRLFILE pFile);
    57 static int                  gstcntlSessionFileAdd(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLFILE pFile);
    58 static PVBOXSERVICECTRLFILE gstcntlSessionFileGetLocked(const PVBOXSERVICECTRLSESSION pSession, uint32_t uHandle);
    59 static DECLCALLBACK(int)    gstcntlSessionThread(RTTHREAD ThreadSelf, void *pvUser);
    60 /* Host -> Guest handlers. */
    61 static int                  gstcntlSessionHandleDirRemove(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    62 static int                  gstcntlSessionHandleFileOpen(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    63 static int                  gstcntlSessionHandleFileClose(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    64 static int                  gstcntlSessionHandleFileRead(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    65 static int                  gstcntlSessionHandleFileWrite(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx, void *pvScratchBuf, size_t cbScratchBuf);
    66 static int                  gstcntlSessionHandleFileSeek(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    67 static int                  gstcntlSessionHandleFileTell(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    68 static int                  gstcntlSessionHandlePathRename(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    69 static int                  gstcntlSessionHandleProcExec(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    70 static int                  gstcntlSessionHandleProcInput(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx, void *pvScratchBuf, size_t cbScratchBuf);
    71 static int                  gstcntlSessionHandleProcOutput(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    72 static int                  gstcntlSessionHandleProcTerminate(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    73 static int                  gstcntlSessionHandleProcWaitFor(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx);
    74 
    75 
    7646/** Generic option indices for session spawn arguments. */
    7747enum
     
    9060
    9161
    92 static int gstcntlSessionFileDestroy(PVBOXSERVICECTRLFILE pFile)
     62
     63static int vgsvcGstCtrlSessionFileDestroy(PVBOXSERVICECTRLFILE pFile)
    9364{
    9465    AssertPtrReturn(pFile, VERR_INVALID_POINTER);
     
    10879
    10980/** @todo No locking done yet! */
    110 static PVBOXSERVICECTRLFILE gstcntlSessionFileGetLocked(const PVBOXSERVICECTRLSESSION pSession,
    111                                                         uint32_t uHandle)
     81static PVBOXSERVICECTRLFILE vgsvcGstCtrlSessionFileGetLocked(const PVBOXSERVICECTRLSESSION pSession, uint32_t uHandle)
    11282{
    11383    AssertPtrReturn(pSession, NULL);
    11484
    115     PVBOXSERVICECTRLFILE pFileCur = NULL;
    11685    /** @todo Use a map later! */
     86    PVBOXSERVICECTRLFILE pFileCur;
    11787    RTListForEach(&pSession->lstFiles, pFileCur, VBOXSERVICECTRLFILE, Node)
    11888    {
     
    12595
    12696
    127 static int gstcntlSessionHandleDirRemove(PVBOXSERVICECTRLSESSION pSession,
    128                                          PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     97static int vgsvcGstCtrlSessionHandleDirRemove(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    12998{
    13099    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    158127            rc = VERR_NOT_SUPPORTED;
    159128
    160         VBoxServiceVerbose(4, "[Dir %s]: Removing with fFlags=0x%x, rc=%Rrc\n", szDir, fFlags, rc);
     129        VGSvcVerbose(4, "[Dir %s]: Removing with fFlags=0x%x, rc=%Rrc\n", szDir, fFlags, rc);
    161130
    162131        /* Report back in any case. */
    163132        int rc2 = VbglR3GuestCtrlMsgReply(pHostCtx, rc);
    164133        if (RT_FAILURE(rc2))
    165             VBoxServiceError("[Dir %s]: Failed to report removing status, rc=%Rrc\n", szDir, rc2);
     134            VGSvcError("[Dir %s]: Failed to report removing status, rc=%Rrc\n", szDir, rc2);
    166135        if (RT_SUCCESS(rc))
    167136            rc = rc2;
     
    169138
    170139#ifdef DEBUG
    171     VBoxServiceVerbose(4, "Removing directory \"%s\" returned rc=%Rrc\n", szDir, rc);
    172 #endif
    173     return rc;
    174 }
    175 
    176 
    177 static int gstcntlSessionHandleFileOpen(PVBOXSERVICECTRLSESSION pSession,
    178                                         PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     140    VGSvcVerbose(4, "Removing directory '%s' returned rc=%Rrc\n", szDir, rc);
     141#endif
     142    return rc;
     143}
     144
     145
     146static int vgsvcGstCtrlSessionHandleFileOpen(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    179147{
    180148    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    186154    char szSharing[64];
    187155    uint32_t uCreationMode = 0;
    188     uint64_t uOffset = 0;
     156    uint64_t offOpen = 0;
    189157    uint32_t uHandle = 0;
    190158
     
    201169                                        &uCreationMode,
    202170                                        /* Offset. */
    203                                         &uOffset);
    204     VBoxServiceVerbose(4, "[File %s]: szAccess=%s, szDisposition=%s, szSharing=%s, uOffset=%RU64, rc=%Rrc\n",
    205                        szFile, szAccess, szDisposition, szSharing, uOffset, rc);
    206 
     171                                        &offOpen);
     172    VGSvcVerbose(4, "[File %s]: szAccess=%s, szDisposition=%s, szSharing=%s, offOpen=%RU64, rc=%Rrc\n",
     173                 szFile, szAccess, szDisposition, szSharing, offOpen, rc);
    207174    if (RT_SUCCESS(rc))
    208175    {
     
    215182            if (RT_SUCCESS(rc))
    216183            {
     184                /** @todo r=bird: Plase, use RTStrCopy for stuff like this! */
    217185                RTStrPrintf(pFile->szName, sizeof(pFile->szName), "%s", szFile);
    218186
    219187                uint64_t fFlags;
    220                 rc = RTFileModeToFlagsEx(szAccess, szDisposition,
    221                                          NULL /* pszSharing, not used yet */, &fFlags);
    222                 VBoxServiceVerbose(4, "[File %s]: Opening with fFlags=0x%x, rc=%Rrc\n", pFile->szName, fFlags, rc);
     188                rc = RTFileModeToFlagsEx(szAccess, szDisposition, NULL /* pszSharing, not used yet */, &fFlags);
     189                VGSvcVerbose(4, "[File %s]: Opening with fFlags=0x%x, rc=%Rrc\n", pFile->szName, fFlags, rc);
    223190
    224191                if (RT_SUCCESS(rc))
    225192                    rc = RTFileOpen(&pFile->hFile, pFile->szName, fFlags);
    226193                if (   RT_SUCCESS(rc)
    227                     && uOffset)
     194                    && offOpen)
    228195                {
    229196                    /* Seeking is optional. However, the whole operation
    230197                     * will fail if we don't succeed seeking to the wanted position. */
    231                     rc = RTFileSeek(pFile->hFile, (int64_t)uOffset, RTFILE_SEEK_BEGIN, NULL /* Current offset */);
     198                    rc = RTFileSeek(pFile->hFile, (int64_t)offOpen, RTFILE_SEEK_BEGIN, NULL /* Current offset */);
    232199                    if (RT_FAILURE(rc))
    233                         VBoxServiceError("[File %s]: Seeking to offset %RU64 failed; rc=%Rrc\n",
    234                                          pFile->szName, uOffset, rc);
     200                        VGSvcError("[File %s]: Seeking to offset %RU64 failed; rc=%Rrc\n", pFile->szName, offOpen, rc);
    235201                }
    236202                else if (RT_FAILURE(rc))
    237                     VBoxServiceError("[File %s]: Opening failed with rc=%Rrc\n", pFile->szName, rc);
     203                    VGSvcError("[File %s]: Opening failed with rc=%Rrc\n", pFile->szName, rc);
    238204            }
    239205
     
    243209                pFile->uHandle = uHandle;
    244210
    245                 /* rc = */ RTListAppend(&pSession->lstFiles, &pFile->Node);
    246 
    247                 VBoxServiceVerbose(3, "[File %s]: Opened (ID=%RU32)\n",
    248                                    pFile->szName, pFile->uHandle);
     211                RTListAppend(&pSession->lstFiles, &pFile->Node);
     212
     213                VGSvcVerbose(3, "[File %s]: Opened (ID=%RU32)\n", pFile->szName, pFile->uHandle);
    249214            }
    250215
     
    262227        int rc2 = VbglR3GuestCtrlFileCbOpen(pHostCtx, rc, uHandle);
    263228        if (RT_FAILURE(rc2))
    264             VBoxServiceError("[File %s]: Failed to report file open status, rc=%Rrc\n",
    265                              szFile, rc2);
     229            VGSvcError("[File %s]: Failed to report file open status, rc=%Rrc\n", szFile, rc2);
    266230        if (RT_SUCCESS(rc))
    267231            rc = rc2;
     
    269233
    270234#ifdef DEBUG
    271     VBoxServiceVerbose(4, "Opening file \"%s\" (open mode=\"%s\", disposition=\"%s\", creation mode=0x%x returned rc=%Rrc\n",
    272                        szFile, szAccess, szDisposition, uCreationMode, rc);
    273 #endif
    274     return rc;
    275 }
    276 
    277 
    278 static int gstcntlSessionHandleFileClose(const PVBOXSERVICECTRLSESSION pSession,
    279                                          PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     235    VGSvcVerbose(4, "Opening file '%s' (open mode='%s', disposition='%s', creation mode=0x%x returned rc=%Rrc\n",
     236                 szFile, szAccess, szDisposition, uCreationMode, rc);
     237#endif
     238    return rc;
     239}
     240
     241
     242static int vgsvcGstCtrlSessionHandleFileClose(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    280243{
    281244    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    288251    if (RT_SUCCESS(rc))
    289252    {
    290         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     253        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    291254        if (pFile)
    292         {
    293             rc = gstcntlSessionFileDestroy(pFile);
    294         }
     255            rc = vgsvcGstCtrlSessionFileDestroy(pFile);
    295256        else
    296257            rc = VERR_NOT_FOUND;
     
    299260        int rc2 = VbglR3GuestCtrlFileCbClose(pHostCtx, rc);
    300261        if (RT_FAILURE(rc2))
    301             VBoxServiceError("Failed to report file close status, rc=%Rrc\n", rc2);
     262            VGSvcError("Failed to report file close status, rc=%Rrc\n", rc2);
    302263        if (RT_SUCCESS(rc))
    303264            rc = rc2;
     
    305266
    306267#ifdef DEBUG
    307     VBoxServiceVerbose(4, "Closing file \"%s\" (handle=%RU32) returned rc=%Rrc\n",
    308                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    309 #endif
    310     return rc;
    311 }
    312 
    313 
    314 static int gstcntlSessionHandleFileRead(const PVBOXSERVICECTRLSESSION pSession,
    315                                         PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    316                                         void *pvScratchBuf, size_t cbScratchBuf)
     268    VGSvcVerbose(4, "Closing file '%s' (handle=%RU32) returned rc=%Rrc\n", pFile ? pFile->szName : "<Not found>", uHandle, rc);
     269#endif
     270    return rc;
     271}
     272
     273
     274static int vgsvcGstCtrlSessionHandleFileRead(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     275                                             void *pvScratchBuf, size_t cbScratchBuf)
    317276{
    318277    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    329288        size_t cbRead = 0;
    330289
    331         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     290        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    332291        if (pFile)
    333292        {
     
    357316
    358317        if (RT_FAILURE(rc2))
    359             VBoxServiceError("Failed to report file read status, rc=%Rrc\n", rc2);
     318            VGSvcError("Failed to report file read status, rc=%Rrc\n", rc2);
    360319        if (RT_SUCCESS(rc))
    361320            rc = rc2;
     
    363322
    364323#ifdef DEBUG
    365     VBoxServiceVerbose(4, "Reading file \"%s\" (handle=%RU32) returned rc=%Rrc\n",
    366                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    367 #endif
    368     return rc;
    369 }
    370 
    371 
    372 static int gstcntlSessionHandleFileReadAt(const PVBOXSERVICECTRLSESSION pSession,
    373                                           PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    374                                           void *pvScratchBuf, size_t cbScratchBuf)
     324    VGSvcVerbose(4, "Reading file '%s' (handle=%RU32) returned rc=%Rrc\n", pFile ? pFile->szName : "<Not found>", uHandle, rc);
     325#endif
     326    return rc;
     327}
     328
     329
     330static int vgsvcGstCtrlSessionHandleFileReadAt(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     331                                               void *pvScratchBuf, size_t cbScratchBuf)
    375332{
    376333    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    380337
    381338    uint32_t uHandle = 0;
    382     uint32_t cbToRead; int64_t iOffset;
    383 
    384     int rc = VbglR3GuestCtrlFileGetReadAt(pHostCtx,
    385                                           &uHandle, &cbToRead, (uint64_t *)&iOffset);
     339    uint32_t cbToRead;
     340    uint64_t offReadAt;
     341    int rc = VbglR3GuestCtrlFileGetReadAt(pHostCtx, &uHandle, &cbToRead, &offReadAt);
    386342    if (RT_SUCCESS(rc))
    387343    {
     
    389345        size_t cbRead = 0;
    390346
    391         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     347        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    392348        if (pFile)
    393349        {
     
    401357                }
    402358
    403                 if (RT_LIKELY(RT_SUCCESS(rc)))
    404                     rc = RTFileReadAt(pFile->hFile, iOffset, pvDataRead, cbToRead, &cbRead);
     359                if (RT_SUCCESS(rc))
     360                    rc = RTFileReadAt(pFile->hFile, (RTFOFF)offReadAt, pvDataRead, cbToRead, &cbRead);
    405361            }
    406362            else
     
    417373
    418374        if (RT_FAILURE(rc2))
    419             VBoxServiceError("Failed to report file read status, rc=%Rrc\n", rc2);
     375            VGSvcError("Failed to report file read status, rc=%Rrc\n", rc2);
    420376        if (RT_SUCCESS(rc))
    421377            rc = rc2;
     
    423379
    424380#ifdef DEBUG
    425     VBoxServiceVerbose(4, "Reading file \"%s\" at offset (handle=%RU32) returned rc=%Rrc\n",
    426                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    427 #endif
    428     return rc;
    429 }
    430 
    431 
    432 static int gstcntlSessionHandleFileWrite(const PVBOXSERVICECTRLSESSION pSession,
    433                                          PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    434                                          void *pvScratchBuf, size_t cbScratchBuf)
     381    VGSvcVerbose(4, "Reading file '%s' at offset (handle=%RU32) returned rc=%Rrc\n",
     382                 pFile ? pFile->szName : "<Not found>", uHandle, rc);
     383#endif
     384    return rc;
     385}
     386
     387
     388static int vgsvcGstCtrlSessionHandleFileWrite(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     389                                              void *pvScratchBuf, size_t cbScratchBuf)
    435390{
    436391    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    443398    uint32_t uHandle = 0;
    444399    uint32_t cbToWrite;
    445 
    446     int rc = VbglR3GuestCtrlFileGetWrite(pHostCtx, &uHandle,
    447                                          pvScratchBuf, (uint32_t)cbScratchBuf, &cbToWrite);
     400    int rc = VbglR3GuestCtrlFileGetWrite(pHostCtx, &uHandle, pvScratchBuf, (uint32_t)cbScratchBuf, &cbToWrite);
    448401    if (RT_SUCCESS(rc))
    449402    {
    450403        size_t cbWritten = 0;
    451         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     404        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    452405        if (pFile)
    453406        {
    454407            rc = RTFileWrite(pFile->hFile, pvScratchBuf, cbToWrite, &cbWritten);
    455408#ifdef DEBUG
    456             VBoxServiceVerbose(4, "[File %s]: Writing pvScratchBuf=%p, cbToWrite=%RU32, cbWritten=%zu, rc=%Rrc\n",
    457                                pFile->szName, pvScratchBuf, cbToWrite, cbWritten, rc);
     409            VGSvcVerbose(4, "[File %s]: Writing pvScratchBuf=%p, cbToWrite=%RU32, cbWritten=%zu, rc=%Rrc\n",
     410                         pFile->szName, pvScratchBuf, cbToWrite, cbWritten, rc);
    458411#endif
    459412        }
     
    464417        int rc2 = VbglR3GuestCtrlFileCbWrite(pHostCtx, rc, (uint32_t)cbWritten);
    465418        if (RT_FAILURE(rc2))
    466             VBoxServiceError("Failed to report file write status, rc=%Rrc\n", rc2);
     419            VGSvcError("Failed to report file write status, rc=%Rrc\n", rc2);
    467420        if (RT_SUCCESS(rc))
    468421            rc = rc2;
     
    470423
    471424#ifdef DEBUG
    472     VBoxServiceVerbose(4, "Writing file \"%s\" (handle=%RU32) returned rc=%Rrc\n",
    473                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    474 #endif
    475     return rc;
    476 }
    477 
    478 
    479 static int gstcntlSessionHandleFileWriteAt(const PVBOXSERVICECTRLSESSION pSession,
    480                                            PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    481                                            void *pvScratchBuf, size_t cbScratchBuf)
     425    VGSvcVerbose(4, "Writing file '%s' (handle=%RU32) returned rc=%Rrc\n", pFile ? pFile->szName : "<Not found>", uHandle, rc);
     426#endif
     427    return rc;
     428}
     429
     430
     431static int vgsvcGstCtrlSessionHandleFileWriteAt(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     432                                                void *pvScratchBuf, size_t cbScratchBuf)
    482433{
    483434    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    489440
    490441    uint32_t uHandle = 0;
    491     uint32_t cbToWrite; int64_t iOffset;
    492 
    493     int rc = VbglR3GuestCtrlFileGetWriteAt(pHostCtx, &uHandle,
    494                                            pvScratchBuf, (uint32_t)cbScratchBuf,
    495                                            &cbToWrite, (uint64_t *)&iOffset);
     442    uint32_t cbToWrite;
     443    uint64_t offWriteAt;
     444
     445    int rc = VbglR3GuestCtrlFileGetWriteAt(pHostCtx, &uHandle, pvScratchBuf, (uint32_t)cbScratchBuf, &cbToWrite, &offWriteAt);
    496446    if (RT_SUCCESS(rc))
    497447    {
    498448        size_t cbWritten = 0;
    499         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     449        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    500450        if (pFile)
    501451        {
    502             rc = RTFileWriteAt(pFile->hFile, iOffset,
    503                                pvScratchBuf, cbToWrite, &cbWritten);
    504 #ifdef DEBUG
    505             VBoxServiceVerbose(4, "[File %s]: Writing iOffset=%RI64, pvScratchBuf=%p, cbToWrite=%RU32, cbWritten=%zu, rc=%Rrc\n",
    506                                pFile->szName, iOffset, pvScratchBuf, cbToWrite, cbWritten, rc);
     452            rc = RTFileWriteAt(pFile->hFile, (RTFOFF)offWriteAt, pvScratchBuf, cbToWrite, &cbWritten);
     453#ifdef DEBUG
     454            VGSvcVerbose(4, "[File %s]: Writing offWriteAt=%RI64, pvScratchBuf=%p, cbToWrite=%RU32, cbWritten=%zu, rc=%Rrc\n",
     455                         pFile->szName, offWriteAt, pvScratchBuf, cbToWrite, cbWritten, rc);
    507456#endif
    508457        }
     
    513462        int rc2 = VbglR3GuestCtrlFileCbWrite(pHostCtx, rc, (uint32_t)cbWritten);
    514463        if (RT_FAILURE(rc2))
    515             VBoxServiceError("Failed to report file write status, rc=%Rrc\n", rc2);
     464            VGSvcError("Failed to report file write status, rc=%Rrc\n", rc2);
    516465        if (RT_SUCCESS(rc))
    517466            rc = rc2;
     
    519468
    520469#ifdef DEBUG
    521     VBoxServiceVerbose(4, "Writing file \"%s\" at offset (handle=%RU32) returned rc=%Rrc\n",
    522                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    523 #endif
    524     return rc;
    525 }
    526 
    527 
    528 static int gstcntlSessionHandleFileSeek(const PVBOXSERVICECTRLSESSION pSession,
    529                                         PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     470    VGSvcVerbose(4, "Writing file '%s' at offset (handle=%RU32) returned rc=%Rrc\n",
     471                 pFile ? pFile->szName : "<Not found>", uHandle, rc);
     472#endif
     473    return rc;
     474}
     475
     476
     477static int vgsvcGstCtrlSessionHandleFileSeek(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    530478{
    531479    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    536484    uint32_t uHandle = 0;
    537485    uint32_t uSeekMethod;
    538     uint64_t uOffset; /* Will be converted to int64_t. */
    539 
    540     uint64_t uOffsetActual = 0;
    541 
    542     int rc = VbglR3GuestCtrlFileGetSeek(pHostCtx, &uHandle,
    543                                         &uSeekMethod, &uOffset);
    544     if (RT_SUCCESS(rc))
    545     {
    546         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     486    uint64_t offSeek; /* Will be converted to int64_t. */
     487    int rc = VbglR3GuestCtrlFileGetSeek(pHostCtx, &uHandle, &uSeekMethod, &offSeek);
     488    if (RT_SUCCESS(rc))
     489    {
     490        uint64_t offActual = 0;
     491        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    547492        if (pFile)
    548493        {
    549             unsigned uSeekMethodIPRT;
     494            unsigned uSeekMethodIprt;
    550495            switch (uSeekMethod)
    551496            {
    552497                case GUEST_FILE_SEEKTYPE_BEGIN:
    553                     uSeekMethodIPRT = RTFILE_SEEK_BEGIN;
     498                    uSeekMethodIprt = RTFILE_SEEK_BEGIN;
    554499                    break;
    555500
    556501                case GUEST_FILE_SEEKTYPE_CURRENT:
    557                     uSeekMethodIPRT = RTFILE_SEEK_CURRENT;
     502                    uSeekMethodIprt = RTFILE_SEEK_CURRENT;
    558503                    break;
    559504
    560505                case GUEST_FILE_SEEKTYPE_END:
    561                     uSeekMethodIPRT = RTFILE_SEEK_END;
     506                    uSeekMethodIprt = RTFILE_SEEK_END;
    562507                    break;
    563508
     
    569514            if (RT_SUCCESS(rc))
    570515            {
    571                 rc = RTFileSeek(pFile->hFile, (int64_t)uOffset,
    572                                 uSeekMethodIPRT, &uOffsetActual);
    573 #ifdef DEBUG
    574                 VBoxServiceVerbose(4, "[File %s]: Seeking to iOffset=%RI64, uSeekMethodIPRT=%RU16, rc=%Rrc\n",
    575                                    pFile->szName, (int64_t)uOffset, uSeekMethodIPRT, rc);
     516                rc = RTFileSeek(pFile->hFile, (int64_t)offSeek, uSeekMethodIprt, &offActual);
     517#ifdef DEBUG
     518                VGSvcVerbose(4, "[File %s]: Seeking to offSeek=%RI64, uSeekMethodIPRT=%RU16, rc=%Rrc\n",
     519                             pFile->szName, offSeek, uSeekMethodIprt, rc);
    576520#endif
    577521            }
     
    581525
    582526        /* Report back in any case. */
    583         int rc2 = VbglR3GuestCtrlFileCbSeek(pHostCtx, rc, uOffsetActual);
     527        int rc2 = VbglR3GuestCtrlFileCbSeek(pHostCtx, rc, offActual);
    584528        if (RT_FAILURE(rc2))
    585             VBoxServiceError("Failed to report file seek status, rc=%Rrc\n", rc2);
     529            VGSvcError("Failed to report file seek status, rc=%Rrc\n", rc2);
    586530        if (RT_SUCCESS(rc))
    587531            rc = rc2;
     
    589533
    590534#ifdef DEBUG
    591     VBoxServiceVerbose(4, "Seeking file \"%s\" (handle=%RU32) returned rc=%Rrc\n",
    592                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    593 #endif
    594     return rc;
    595 }
    596 
    597 
    598 static int gstcntlSessionHandleFileTell(const PVBOXSERVICECTRLSESSION pSession,
    599                                         PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     535    VGSvcVerbose(4, "Seeking file '%s' (handle=%RU32) returned rc=%Rrc\n", pFile ? pFile->szName : "<Not found>", uHandle, rc);
     536#endif
     537    return rc;
     538}
     539
     540
     541static int vgsvcGstCtrlSessionHandleFileTell(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    600542{
    601543    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    605547
    606548    uint32_t uHandle = 0;
    607     uint64_t uOffsetActual = 0;
    608 
    609549    int rc = VbglR3GuestCtrlFileGetTell(pHostCtx, &uHandle);
    610550    if (RT_SUCCESS(rc))
    611551    {
    612         pFile = gstcntlSessionFileGetLocked(pSession, uHandle);
     552        uint64_t off = 0;
     553        pFile = vgsvcGstCtrlSessionFileGetLocked(pSession, uHandle);
    613554        if (pFile)
    614555        {
    615             uOffsetActual = RTFileTell(pFile->hFile);
    616 #ifdef DEBUG
    617             VBoxServiceVerbose(4, "[File %s]: Telling uOffsetActual=%RU64\n",
    618                                pFile->szName, uOffsetActual);
     556            off = RTFileTell(pFile->hFile);
     557#ifdef DEBUG
     558            VGSvcVerbose(4, "[File %s]: Telling off=%RU64\n", pFile->szName, off);
    619559#endif
    620560        }
     
    623563
    624564        /* Report back in any case. */
    625         int rc2 = VbglR3GuestCtrlFileCbTell(pHostCtx, rc, uOffsetActual);
     565        int rc2 = VbglR3GuestCtrlFileCbTell(pHostCtx, rc, off);
    626566        if (RT_FAILURE(rc2))
    627             VBoxServiceError("Failed to report file tell status, rc=%Rrc\n", rc2);
     567            VGSvcError("Failed to report file tell status, rc=%Rrc\n", rc2);
    628568        if (RT_SUCCESS(rc))
    629569            rc = rc2;
     
    631571
    632572#ifdef DEBUG
    633     VBoxServiceVerbose(4, "Telling file \"%s\" (handle=%RU32) returned rc=%Rrc\n",
    634                        pFile ? pFile->szName : "<Not found>", uHandle, rc);
    635 #endif
    636     return rc;
    637 }
    638 
    639 
    640 static int gstcntlSessionHandlePathRename(PVBOXSERVICECTRLSESSION pSession,
    641                                           PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     573    VGSvcVerbose(4, "Telling file '%s' (handle=%RU32) returned rc=%Rrc\n", pFile ? pFile->szName : "<Not found>", uHandle, rc);
     574#endif
     575    return rc;
     576}
     577
     578
     579static int vgsvcGstCtrlSessionHandlePathRename(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    642580{
    643581    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    646584    char szSource[RTPATH_MAX];
    647585    char szDest[RTPATH_MAX];
    648     uint32_t uFlags = 0;
     586    uint32_t fFlags = 0;
    649587
    650588    int rc = VbglR3GuestCtrlPathGetRename(pHostCtx,
     
    652590                                          szDest, sizeof(szDest),
    653591                                          /* Flags of type PATHRENAME_FLAG_. */
    654                                           &uFlags);
    655     if (RT_SUCCESS(rc))
    656     {
    657         if (uFlags & ~PATHRENAME_FLAG_VALID_MASK)
     592                                          &fFlags);
     593    if (RT_SUCCESS(rc))
     594    {
     595        if (fFlags & ~PATHRENAME_FLAG_VALID_MASK)
    658596            rc = VERR_NOT_SUPPORTED;
    659597
    660         VBoxServiceVerbose(4, "Renaming \"%s\" to \"%s\", uFlags=0x%x, rc=%Rrc\n",
    661                            szSource, szDest, uFlags, rc);
    662 
    663         if (RT_SUCCESS(rc))
    664         {
    665             if (uFlags & PATHRENAME_FLAG_NO_REPLACE)
    666                 uFlags |= RTPATHRENAME_FLAGS_NO_REPLACE;
    667 
    668             if (uFlags & PATHRENAME_FLAG_REPLACE)
    669                 uFlags |= RTPATHRENAME_FLAGS_REPLACE;
    670 
    671             if (uFlags & PATHRENAME_FLAG_NO_SYMLINKS)
    672                 uFlags |= RTPATHRENAME_FLAGS_NO_SYMLINKS;
    673 
    674             rc = RTPathRename(szSource, szDest, uFlags);
     598        VGSvcVerbose(4, "Renaming '%s' to '%s', fFlags=0x%x, rc=%Rrc\n", szSource, szDest, fFlags, rc);
     599
     600        if (RT_SUCCESS(rc))
     601        {
     602/** @todo r=bird: shouldn't you use a different variable here for the IPRT flags??? */
     603            if (fFlags & PATHRENAME_FLAG_NO_REPLACE)
     604                fFlags |= RTPATHRENAME_FLAGS_NO_REPLACE;
     605
     606            if (fFlags & PATHRENAME_FLAG_REPLACE)
     607                fFlags |= RTPATHRENAME_FLAGS_REPLACE;
     608
     609            if (fFlags & PATHRENAME_FLAG_NO_SYMLINKS)
     610                fFlags |= RTPATHRENAME_FLAGS_NO_SYMLINKS;
     611
     612            rc = RTPathRename(szSource, szDest, fFlags);
    675613        }
    676614
     
    678616        int rc2 = VbglR3GuestCtrlMsgReply(pHostCtx, rc);
    679617        if (RT_FAILURE(rc2))
    680             VBoxServiceError("Failed to report renaming status, rc=%Rrc\n", rc2);
     618            VGSvcError("Failed to report renaming status, rc=%Rrc\n", rc2);
    681619        if (RT_SUCCESS(rc))
    682620            rc = rc2;
     
    684622
    685623#ifdef DEBUG
    686     VBoxServiceVerbose(4, "Renaming \"%s\" to \"%s\" returned rc=%Rrc\n",
    687                        szSource, szDest, rc);
     624    VGSvcVerbose(4, "Renaming '%s' to '%s' returned rc=%Rrc\n", szSource, szDest, rc);
    688625#endif
    689626    return rc;
     
    694631 * Handles starting a guest processes.
    695632 *
    696  * @returns IPRT status code.
     633 * @returns VBox status code.
    697634 * @param   pSession        Guest session.
    698635 * @param   pHostCtx        Host context.
    699636 */
    700 int gstcntlSessionHandleProcExec(PVBOXSERVICECTRLSESSION pSession,
    701                                  PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     637static int vgsvcGstCtrlSessionHandleProcExec(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    702638{
    703639    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    756692        if (RT_SUCCESS(rc))
    757693        {
    758             VBoxServiceVerbose(3, "Request to start process szCmd=%s, uFlags=0x%x, szArgs=%s, szEnv=%s, uTimeout=%RU32\n",
    759                                startupInfo.szCmd, startupInfo.uFlags,
    760                                startupInfo.uNumArgs ? startupInfo.szArgs : "<None>",
    761                                startupInfo.uNumEnvVars ? startupInfo.szEnv : "<None>",
    762                                startupInfo.uTimeLimitMS);
    763 
    764             rc = GstCntlSessionProcessStartAllowed(pSession, &fStartAllowed);
     694            VGSvcVerbose(3, "Request to start process szCmd=%s, fFlags=0x%x, szArgs=%s, szEnv=%s, uTimeout=%RU32\n",
     695                         startupInfo.szCmd, startupInfo.uFlags,
     696                         startupInfo.uNumArgs ? startupInfo.szArgs : "<None>",
     697                         startupInfo.uNumEnvVars ? startupInfo.szEnv : "<None>",
     698                         startupInfo.uTimeLimitMS);
     699
     700            rc = VGSvcGstCtrlSessionProcessStartAllowed(pSession, &fStartAllowed);
    765701            if (RT_SUCCESS(rc))
    766702            {
    767703                if (fStartAllowed)
    768                 {
    769                     rc = GstCntlProcessStart(pSession, &startupInfo, pHostCtx->uContextID);
    770                 }
     704                    rc = VGSvcGstCtrlProcessStart(pSession, &startupInfo, pHostCtx->uContextID);
    771705                else
    772706                    rc = VERR_MAX_PROCS_REACHED; /* Maximum number of processes reached. */
     
    778712    if (RT_FAILURE(rc))
    779713    {
    780         VBoxServiceError("Starting process failed with rc=%Rrc, protocol=%RU32, parameters=%RU32\n",
    781                          rc, pHostCtx->uProtocol, pHostCtx->uNumParms);
     714        VGSvcError("Starting process failed with rc=%Rrc, protocol=%RU32, parameters=%RU32\n",
     715                   rc, pHostCtx->uProtocol, pHostCtx->uNumParms);
    782716
    783717        /* Don't report back if we didn't supply sufficient buffer for getting
     
    793727                                                  NULL /* pvData */, 0 /* cbData */);
    794728            if (RT_FAILURE(rc2))
    795                 VBoxServiceError("Error sending start process status to host, rc=%Rrc\n", rc2);
     729                VGSvcError("Error sending start process status to host, rc=%Rrc\n", rc2);
    796730        }
    797731    }
     
    804738 * Sends stdin input to a specific guest process.
    805739 *
    806  * @returns IPRT status code.
    807  * @param pSession            The session which is in charge.
    808  * @param pHostCtx            The host context to use.
    809  * @param pvScratchBuf        The scratch buffer.
    810  * @param cbScratchBuf        The scratch buffer size for retrieving the input data.
     740 * @returns VBox status code.
     741 * @param   pSession            The session which is in charge.
     742 * @param   pHostCtx            The host context to use.
     743 * @param   pvScratchBuf        The scratch buffer.
     744 * @param   cbScratchBuf        The scratch buffer size for retrieving the input
     745 *                              data.
    811746 */
    812 int gstcntlSessionHandleProcInput(PVBOXSERVICECTRLSESSION pSession,
    813                                   PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    814                                   void *pvScratchBuf, size_t cbScratchBuf)
     747static int vgsvcGstCtrlSessionHandleProcInput(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     748                                              void *pvScratchBuf, size_t cbScratchBuf)
    815749{
    816750    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    820754
    821755    uint32_t uPID;
    822     uint32_t uFlags;
     756    uint32_t fFlags;
    823757    uint32_t cbSize;
    824758
     
    829763     * Ask the host for the input data.
    830764     */
    831     int rc = VbglR3GuestCtrlProcGetInput(pHostCtx, &uPID, &uFlags,
     765    int rc = VbglR3GuestCtrlProcGetInput(pHostCtx, &uPID, &fFlags,
    832766                                         pvScratchBuf, (uint32_t)cbScratchBuf, &cbSize);
    833767    if (RT_FAILURE(rc))
    834     {
    835         VBoxServiceError("Failed to retrieve process input command for PID=%RU32, rc=%Rrc\n",
    836                          uPID, rc);
    837     }
     768        VGSvcError("Failed to retrieve process input command for PID=%RU32, rc=%Rrc\n", uPID, rc);
    838769    else if (cbSize > cbScratchBuf)
    839770    {
    840         VBoxServiceError("Too much process input received, rejecting: uPID=%RU32, cbSize=%RU32, cbScratchBuf=%RU32\n",
    841                          uPID, cbSize, cbScratchBuf);
     771        VGSvcError("Too much process input received, rejecting: uPID=%RU32, cbSize=%RU32, cbScratchBuf=%RU32\n",
     772                   uPID, cbSize, cbScratchBuf);
    842773        rc = VERR_TOO_MUCH_DATA;
    843774    }
     
    848779         */
    849780        bool fPendingClose = false;
    850         if (uFlags & INPUT_FLAG_EOF)
     781        if (fFlags & INPUT_FLAG_EOF)
    851782        {
    852783            fPendingClose = true;
    853784#ifdef DEBUG
    854             VBoxServiceVerbose(4, "Got last process input block for PID=%RU32 (%RU32 bytes) ...\n",
    855                                uPID, cbSize);
    856 #endif
    857         }
    858 
    859         PVBOXSERVICECTRLPROCESS pProcess = GstCntlSessionRetainProcess(pSession, uPID);
     785            VGSvcVerbose(4, "Got last process input block for PID=%RU32 (%RU32 bytes) ...\n", uPID, cbSize);
     786#endif
     787        }
     788
     789        PVBOXSERVICECTRLPROCESS pProcess = VGSvcGstCtrlSessionRetainProcess(pSession, uPID);
    860790        if (pProcess)
    861791        {
    862             rc = GstCntlProcessHandleInput(pProcess, pHostCtx, fPendingClose,
    863                                            pvScratchBuf, cbSize);
     792            rc = VGSvcGstCtrlProcessHandleInput(pProcess, pHostCtx, fPendingClose, pvScratchBuf, cbSize);
    864793            if (RT_FAILURE(rc))
    865                 VBoxServiceError("Error handling input command for PID=%RU32, rc=%Rrc\n",
    866                                  uPID, rc);
    867             GstCntlProcessRelease(pProcess);
     794                VGSvcError("Error handling input command for PID=%RU32, rc=%Rrc\n", uPID, rc);
     795            VGSvcGstCtrlProcessRelease(pProcess);
    868796        }
    869797        else
     
    872800
    873801#ifdef DEBUG
    874     VBoxServiceVerbose(4, "Setting input for PID=%RU32 resulted in rc=%Rrc\n",
    875                        uPID, rc);
     802    VGSvcVerbose(4, "Setting input for PID=%RU32 resulted in rc=%Rrc\n", uPID, rc);
    876803#endif
    877804    return rc;
     
    882809 * Gets stdout/stderr output of a specific guest process.
    883810 *
    884  * @return IPRT status code.
    885  * @param pSession            The session which is in charge.
    886  * @param pHostCtx            The host context to use.
     811 * @returns VBox status code.
     812 * @param   pSession            The session which is in charge.
     813 * @param   pHostCtx            The host context to use.
    887814 */
    888 int gstcntlSessionHandleProcOutput(PVBOXSERVICECTRLSESSION pSession,
    889                                    PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     815static int vgsvcGstCtrlSessionHandleProcOutput(PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    890816{
    891817    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    894820    uint32_t uPID;
    895821    uint32_t uHandleID;
    896     uint32_t uFlags;
    897 
    898     int rc = VbglR3GuestCtrlProcGetOutput(pHostCtx, &uPID, &uHandleID, &uFlags);
     822    uint32_t fFlags;
     823
     824    int rc = VbglR3GuestCtrlProcGetOutput(pHostCtx, &uPID, &uHandleID, &fFlags);
    899825#ifdef DEBUG_andy
    900     VBoxServiceVerbose(4, "Getting output for PID=%RU32, CID=%RU32, uHandleID=%RU32, uFlags=%RU32\n",
    901                        uPID, pHostCtx->uContextID, uHandleID, uFlags);
    902 #endif
    903     if (RT_SUCCESS(rc))
    904     {
    905         PVBOXSERVICECTRLPROCESS pProcess = GstCntlSessionRetainProcess(pSession, uPID);
     826    VGSvcVerbose(4, "Getting output for PID=%RU32, CID=%RU32, uHandleID=%RU32, fFlags=%RU32\n",
     827                 uPID, pHostCtx->uContextID, uHandleID, fFlags);
     828#endif
     829    if (RT_SUCCESS(rc))
     830    {
     831        PVBOXSERVICECTRLPROCESS pProcess = VGSvcGstCtrlSessionRetainProcess(pSession, uPID);
    906832        if (pProcess)
    907833        {
    908             rc = GstCntlProcessHandleOutput(pProcess, pHostCtx,
    909                                             uHandleID, _64K /* cbToRead */, uFlags);
     834            rc = VGSvcGstCtrlProcessHandleOutput(pProcess, pHostCtx, uHandleID, _64K /* cbToRead */, fFlags);
    910835            if (RT_FAILURE(rc))
    911                 VBoxServiceError("Error getting output for PID=%RU32, rc=%Rrc\n",
    912                                  uPID, rc);
    913             GstCntlProcessRelease(pProcess);
     836                VGSvcError("Error getting output for PID=%RU32, rc=%Rrc\n", uPID, rc);
     837            VGSvcGstCtrlProcessRelease(pProcess);
    914838        }
    915839        else
     
    918842
    919843#ifdef DEBUG_andy
    920     VBoxServiceVerbose(4, "Getting output for PID=%RU32 resulted in rc=%Rrc\n",
    921                        uPID, rc);
     844    VGSvcVerbose(4, "Getting output for PID=%RU32 resulted in rc=%Rrc\n", uPID, rc);
    922845#endif
    923846    return rc;
     
    928851 * Tells a guest process to terminate.
    929852 *
    930  * @return  IPRT status code.
    931  * @param pSession            The session which is in charge.
    932  * @param pHostCtx            The host context to use.
     853 * @returns VBox status code.
     854 * @param   pSession            The session which is in charge.
     855 * @param   pHostCtx            The host context to use.
    933856 */
    934 int gstcntlSessionHandleProcTerminate(const PVBOXSERVICECTRLSESSION pSession,
    935                                       PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     857static int vgsvcGstCtrlSessionHandleProcTerminate(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    936858{
    937859    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    942864    if (RT_SUCCESS(rc))
    943865    {
    944         PVBOXSERVICECTRLPROCESS pProcess = GstCntlSessionRetainProcess(pSession, uPID);
     866        PVBOXSERVICECTRLPROCESS pProcess = VGSvcGstCtrlSessionRetainProcess(pSession, uPID);
    945867        if (pProcess)
    946868        {
    947             rc = GstCntlProcessHandleTerm(pProcess);
    948 
    949             GstCntlProcessRelease(pProcess);
     869            rc = VGSvcGstCtrlProcessHandleTerm(pProcess);
     870
     871            VGSvcGstCtrlProcessRelease(pProcess);
    950872        }
    951873        else
     
    954876
    955877#ifdef DEBUG_andy
    956     VBoxServiceVerbose(4, "Terminating PID=%RU32 resulted in rc=%Rrc\n",
    957                        uPID, rc);
    958 #endif
    959     return rc;
    960 }
    961 
    962 
    963 int gstcntlSessionHandleProcWaitFor(const PVBOXSERVICECTRLSESSION pSession,
    964                                     PVBGLR3GUESTCTRLCMDCTX pHostCtx)
     878    VGSvcVerbose(4, "Terminating PID=%RU32 resulted in rc=%Rrc\n", uPID, rc);
     879#endif
     880    return rc;
     881}
     882
     883
     884static int vgsvcGstCtrlSessionHandleProcWaitFor(const PVBOXSERVICECTRLSESSION pSession, PVBGLR3GUESTCTRLCMDCTX pHostCtx)
    965885{
    966886    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    973893    if (RT_SUCCESS(rc))
    974894    {
    975         PVBOXSERVICECTRLPROCESS pProcess = GstCntlSessionRetainProcess(pSession, uPID);
     895        PVBOXSERVICECTRLPROCESS pProcess = VGSvcGstCtrlSessionRetainProcess(pSession, uPID);
    976896        if (pProcess)
    977897        {
    978898            rc = VERR_NOT_IMPLEMENTED; /** @todo */
    979             GstCntlProcessRelease(pProcess);
     899            VGSvcGstCtrlProcessRelease(pProcess);
    980900        }
    981901        else
     
    987907
    988908
    989 int GstCntlSessionHandler(PVBOXSERVICECTRLSESSION pSession,
    990                           uint32_t uMsg, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
    991                           void *pvScratchBuf, size_t cbScratchBuf,
    992                           volatile bool *pfShutdown)
     909int VGSvcGstCtrlSessionHandler(PVBOXSERVICECTRLSESSION pSession, uint32_t uMsg, PVBGLR3GUESTCTRLCMDCTX pHostCtx,
     910                               void *pvScratchBuf, size_t cbScratchBuf, volatile bool *pfShutdown)
    993911{
    994912    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    997915    AssertPtrReturn(pfShutdown, VERR_INVALID_POINTER);
    998916
    999     int rc = VINF_SUCCESS;
    1000     /**
     917
     918    /*
    1001919     * Only anonymous sessions (that is, sessions which run with local
    1002920     * service privileges) or spawned session processes can do certain
    1003921     * operations.
    1004922     */
    1005     bool fImpersonated = (   pSession->fFlags & VBOXSERVICECTRLSESSION_FLAG_SPAWN
    1006                           || pSession->fFlags & VBOXSERVICECTRLSESSION_FLAG_ANONYMOUS);
    1007 
     923    bool const fImpersonated = RT_BOOL(pSession->fFlags & ( VBOXSERVICECTRLSESSION_FLAG_SPAWN
     924                                                           | VBOXSERVICECTRLSESSION_FLAG_ANONYMOUS));
     925    int rc;
    1008926    switch (uMsg)
    1009927    {
    1010928        case HOST_SESSION_CLOSE:
    1011929            /* Shutdown (this spawn). */
    1012             rc = GstCntlSessionClose(pSession);
     930            rc = VGSvcGstCtrlSessionClose(pSession);
    1013931            *pfShutdown = true; /* Shutdown in any case. */
    1014932            break;
    1015933
    1016934        case HOST_DIR_REMOVE:
    1017             rc = fImpersonated
    1018                ? gstcntlSessionHandleDirRemove(pSession, pHostCtx)
    1019                : VERR_NOT_SUPPORTED;
     935            if (fImpersonated)
     936                rc = vgsvcGstCtrlSessionHandleDirRemove(pSession, pHostCtx);
     937            else
     938                rc = VERR_NOT_SUPPORTED;
    1020939            break;
    1021940
    1022941        case HOST_EXEC_CMD:
    1023             rc = gstcntlSessionHandleProcExec(pSession, pHostCtx);
     942            rc = vgsvcGstCtrlSessionHandleProcExec(pSession, pHostCtx);
    1024943            break;
    1025944
    1026945        case HOST_EXEC_SET_INPUT:
    1027             rc = gstcntlSessionHandleProcInput(pSession, pHostCtx,
    1028                                                pvScratchBuf, cbScratchBuf);
     946            rc = vgsvcGstCtrlSessionHandleProcInput(pSession, pHostCtx, pvScratchBuf, cbScratchBuf);
    1029947            break;
    1030948
    1031949        case HOST_EXEC_GET_OUTPUT:
    1032             rc = gstcntlSessionHandleProcOutput(pSession, pHostCtx);
     950            rc = vgsvcGstCtrlSessionHandleProcOutput(pSession, pHostCtx);
    1033951            break;
    1034952
    1035953        case HOST_EXEC_TERMINATE:
    1036             rc = gstcntlSessionHandleProcTerminate(pSession, pHostCtx);
     954            rc = vgsvcGstCtrlSessionHandleProcTerminate(pSession, pHostCtx);
    1037955            break;
    1038956
    1039957        case HOST_EXEC_WAIT_FOR:
    1040             rc = gstcntlSessionHandleProcWaitFor(pSession, pHostCtx);
     958            rc = vgsvcGstCtrlSessionHandleProcWaitFor(pSession, pHostCtx);
    1041959            break;
    1042960
    1043961        case HOST_FILE_OPEN:
    1044             rc = fImpersonated
    1045                ? gstcntlSessionHandleFileOpen(pSession, pHostCtx)
    1046                : VERR_NOT_SUPPORTED;
     962            if (fImpersonated)
     963                rc = vgsvcGstCtrlSessionHandleFileOpen(pSession, pHostCtx);
     964            else
     965                rc = VERR_NOT_SUPPORTED;
    1047966            break;
    1048967
    1049968        case HOST_FILE_CLOSE:
    1050             rc = fImpersonated
    1051                ? gstcntlSessionHandleFileClose(pSession, pHostCtx)
    1052                : VERR_NOT_SUPPORTED;
     969            if (fImpersonated)
     970                rc = vgsvcGstCtrlSessionHandleFileClose(pSession, pHostCtx);
     971            else
     972                rc = VERR_NOT_SUPPORTED;
    1053973            break;
    1054974
    1055975        case HOST_FILE_READ:
    1056             rc = fImpersonated
    1057                ? gstcntlSessionHandleFileRead(pSession, pHostCtx,
    1058                                               pvScratchBuf, cbScratchBuf)
    1059                : VERR_NOT_SUPPORTED;
     976            if (fImpersonated)
     977                rc = vgsvcGstCtrlSessionHandleFileRead(pSession, pHostCtx, pvScratchBuf, cbScratchBuf);
     978            else
     979                rc = VERR_NOT_SUPPORTED;
    1060980            break;
    1061981
    1062982        case HOST_FILE_READ_AT:
    1063             rc = fImpersonated
    1064                ? gstcntlSessionHandleFileReadAt(pSession, pHostCtx,
    1065                                                 pvScratchBuf, cbScratchBuf)
    1066                : VERR_NOT_SUPPORTED;
     983            if (fImpersonated)
     984                rc = vgsvcGstCtrlSessionHandleFileReadAt(pSession, pHostCtx, pvScratchBuf, cbScratchBuf);
     985            else
     986                rc = VERR_NOT_SUPPORTED;
    1067987            break;
    1068988
    1069989        case HOST_FILE_WRITE:
    1070             rc = fImpersonated
    1071                ? gstcntlSessionHandleFileWrite(pSession, pHostCtx,
    1072                                                pvScratchBuf, cbScratchBuf)
    1073                : VERR_NOT_SUPPORTED;
     990            if (fImpersonated)
     991                rc = vgsvcGstCtrlSessionHandleFileWrite(pSession, pHostCtx, pvScratchBuf, cbScratchBuf);
     992            else
     993                rc = VERR_NOT_SUPPORTED;
    1074994            break;
    1075995
    1076996        case HOST_FILE_WRITE_AT:
    1077             rc = fImpersonated
    1078                ? gstcntlSessionHandleFileWriteAt(pSession, pHostCtx,
    1079                                                  pvScratchBuf, cbScratchBuf)
    1080                : VERR_NOT_SUPPORTED;
     997            if (fImpersonated)
     998                rc = vgsvcGstCtrlSessionHandleFileWriteAt(pSession, pHostCtx, pvScratchBuf, cbScratchBuf);
     999            else
     1000                rc = VERR_NOT_SUPPORTED;
    10811001            break;
    10821002
    10831003        case HOST_FILE_SEEK:
    1084             rc = fImpersonated
    1085                ? gstcntlSessionHandleFileSeek(pSession, pHostCtx)
    1086                : VERR_NOT_SUPPORTED;
     1004            if (fImpersonated)
     1005                rc = vgsvcGstCtrlSessionHandleFileSeek(pSession, pHostCtx);
     1006            else
     1007                rc = VERR_NOT_SUPPORTED;
    10871008            break;
    10881009
    10891010        case HOST_FILE_TELL:
    1090             rc = fImpersonated
    1091                ? gstcntlSessionHandleFileTell(pSession, pHostCtx)
    1092                : VERR_NOT_SUPPORTED;
     1011            if (fImpersonated)
     1012                rc = vgsvcGstCtrlSessionHandleFileTell(pSession, pHostCtx);
     1013            else
     1014                rc = VERR_NOT_SUPPORTED;
    10931015            break;
    10941016
    10951017        case HOST_PATH_RENAME:
    1096             rc = fImpersonated
    1097                ? gstcntlSessionHandlePathRename(pSession, pHostCtx)
    1098                : VERR_NOT_SUPPORTED;
     1018            if (fImpersonated)
     1019                rc = vgsvcGstCtrlSessionHandlePathRename(pSession, pHostCtx);
     1020            else
     1021                rc = VERR_NOT_SUPPORTED;
    10991022            break;
    11001023
    11011024        default:
    11021025            rc = VbglR3GuestCtrlMsgSkip(pHostCtx->uClientID);
    1103             VBoxServiceVerbose(3, "Unsupported message (uMsg=%RU32, cParms=%RU32) from host, skipping\n",
    1104                                uMsg, pHostCtx->uNumParms);
     1026            VGSvcVerbose(3, "Unsupported message (uMsg=%RU32, cParms=%RU32) from host, skipping\n", uMsg, pHostCtx->uNumParms);
    11051027            break;
    11061028    }
    11071029
    11081030    if (RT_FAILURE(rc))
    1109         VBoxServiceError("Error while handling message (uMsg=%RU32, cParms=%RU32), rc=%Rrc\n",
    1110                          uMsg, pHostCtx->uNumParms, rc);
     1031        VGSvcError("Error while handling message (uMsg=%RU32, cParms=%RU32), rc=%Rrc\n", uMsg, pHostCtx->uNumParms, rc);
    11111032
    11121033    return rc;
     
    11181039 * This thread runs in the main executable to control the spawned session process.
    11191040 *
    1120  * @return IPRT status code.
    1121  * @param  RTTHREAD             Pointer to the thread's data.
    1122  * @param  void*                User-supplied argument pointer.
     1041 * @returns VBox status code.
     1042 * @param   hThreadSelf     Thread handle.
     1043 * @param   pvUser          Pointer to a VBOXSERVICECTRLSESSIONTHREAD structure.
    11231044 *
    11241045 */
    1125 static DECLCALLBACK(int) gstcntlSessionThread(RTTHREAD ThreadSelf, void *pvUser)
     1046static DECLCALLBACK(int) vgsvcGstCtrlSessionThread(RTTHREAD hThreadSelf, void *pvUser)
    11261047{
    11271048    PVBOXSERVICECTRLSESSIONTHREAD pThread = (PVBOXSERVICECTRLSESSIONTHREAD)pvUser;
     
    11341055    if (RT_SUCCESS(rc))
    11351056    {
    1136         VBoxServiceVerbose(3, "Session ID=%RU32 thread running, client ID=%RU32\n",
    1137                            uSessionID, uClientID);
     1057        VGSvcVerbose(3, "Session ID=%RU32 thread running, client ID=%RU32\n", uSessionID, uClientID);
    11381058
    11391059        /* The session thread is not interested in receiving any commands;
    11401060         * tell the host service. */
    1141         rc = VbglR3GuestCtrlMsgFilterSet(uClientID, 0 /* Skip all */,
    1142                                          0 /* Filter mask to add */, 0 /* Filter mask to remove */);
     1061        rc = VbglR3GuestCtrlMsgFilterSet(uClientID, 0 /* Skip all */, 0 /* Filter mask to add */, 0 /* Filter mask to remove */);
    11431062        if (RT_FAILURE(rc))
    11441063        {
    1145             VBoxServiceError("Unable to set message filter, rc=%Rrc\n", rc);
     1064            VGSvcError("Unable to set message filter, rc=%Rrc\n", rc);
    11461065            /* Non-critical. */
    11471066            rc = VINF_SUCCESS;
     
    11491068    }
    11501069    else
    1151         VBoxServiceError("Error connecting to guest control service, rc=%Rrc\n", rc);
     1070        VGSvcError("Error connecting to guest control service, rc=%Rrc\n", rc);
    11521071
    11531072    if (RT_FAILURE(rc))
     
    11551074
    11561075    /* Let caller know that we're done initializing, regardless of the result. */
    1157     int rc2 = RTThreadUserSignal(RTThreadSelf());
     1076    int rc2 = RTThreadUserSignal(hThreadSelf);
    11581077    AssertRC(rc2);
    11591078
     
    11731092        for (;;)
    11741093        {
    1175             rcWait = RTProcWaitNoResume(pThread->hProcess, RTPROCWAIT_FLAGS_NOBLOCK,
    1176                                         &ProcessStatus);
     1094            rcWait = RTProcWaitNoResume(pThread->hProcess, RTPROCWAIT_FLAGS_NOBLOCK, &ProcessStatus);
    11771095            if (RT_UNLIKELY(rcWait == VERR_INTERRUPTED))
    11781096                continue;
    1179             else if (   rcWait == VINF_SUCCESS
    1180                      || rcWait == VERR_PROCESS_NOT_FOUND)
     1097
     1098            if (   rcWait == VINF_SUCCESS
     1099                || rcWait == VERR_PROCESS_NOT_FOUND)
    11811100            {
    11821101                fProcessAlive = false;
    11831102                break;
    11841103            }
    1185             else
    1186                 AssertMsgBreak(rcWait == VERR_PROCESS_RUNNING,
    1187                                ("Got unexpected rc=%Rrc while waiting for session process termination\n", rcWait));
     1104            AssertMsgBreak(rcWait == VERR_PROCESS_RUNNING,
     1105                           ("Got unexpected rc=%Rrc while waiting for session process termination\n", rcWait));
    11881106
    11891107            if (ASMAtomicReadBool(&pThread->fShutdown))
     
    11911109                if (!u64TimeoutStart)
    11921110                {
    1193                     VBoxServiceVerbose(3, "Notifying guest session process (PID=%RU32, session ID=%RU32) ...\n",
    1194                                        pThread->hProcess, uSessionID);
    1195 
    1196                     VBGLR3GUESTCTRLCMDCTX hostCtx = { uClientID,
    1197                                                       VBOX_GUESTCTRL_CONTEXTID_MAKE_SESSION(uSessionID),
    1198                                                       pThread->StartupInfo.uProtocol, 2 /* uNumParms */ };
    1199                     rc = VbglR3GuestCtrlSessionClose(&hostCtx, 0 /* uFlags */);
     1111                    VGSvcVerbose(3, "Notifying guest session process (PID=%RU32, session ID=%RU32) ...\n",
     1112                                 pThread->hProcess, uSessionID);
     1113
     1114                    VBGLR3GUESTCTRLCMDCTX hostCtx =
     1115                    {
     1116                        /* .idClient  = */  uClientID,
     1117                        /* .idContext = */  VBOX_GUESTCTRL_CONTEXTID_MAKE_SESSION(uSessionID),
     1118                        /* .uProtocol = */  pThread->StartupInfo.uProtocol,
     1119                        /* .cParams   = */  2
     1120                    };
     1121                    rc = VbglR3GuestCtrlSessionClose(&hostCtx, 0 /* fFlags */);
    12001122                    if (RT_FAILURE(rc))
    12011123                    {
    1202                         VBoxServiceError("Unable to notify guest session process (PID=%RU32, session ID=%RU32), rc=%Rrc\n",
    1203                                          pThread->hProcess, uSessionID, rc);
     1124                        VGSvcError("Unable to notify guest session process (PID=%RU32, session ID=%RU32), rc=%Rrc\n",
     1125                                   pThread->hProcess, uSessionID, rc);
    12041126
    12051127                        if (rc == VERR_NOT_SUPPORTED)
     
    12071129                            /* Terminate guest session process in case it's not supported by a too old host. */
    12081130                            rc = RTProcTerminate(pThread->hProcess);
    1209                             VBoxServiceVerbose(3, "Terminating guest session process (PID=%RU32) ended with rc=%Rrc\n",
    1210                                                pThread->hProcess, rc);
     1131                            VGSvcVerbose(3, "Terminating guest session process (PID=%RU32) ended with rc=%Rrc\n",
     1132                                         pThread->hProcess, rc);
    12111133                        }
    12121134                        break;
    12131135                    }
    12141136
    1215                     VBoxServiceVerbose(3, "Guest session ID=%RU32 thread was asked to terminate, waiting for session process to exit (%RU32ms timeout) ...\n",
    1216                                        uSessionID, uTimeoutsMS);
     1137                    VGSvcVerbose(3, "Guest session ID=%RU32 thread was asked to terminate, waiting for session process to exit (%RU32ms timeout) ...\n",
     1138                                 uSessionID, uTimeoutsMS);
    12171139                    u64TimeoutStart = RTTimeMilliTS();
    1218 
    12191140                    continue; /* Don't waste time on waiting. */
    12201141                }
    12211142                if (RTTimeMilliTS() - u64TimeoutStart > uTimeoutsMS)
    12221143                {
    1223                      VBoxServiceVerbose(3, "Guest session ID=%RU32 process did not shut down within time\n",
    1224                                         uSessionID);
     1144                     VGSvcVerbose(3, "Guest session ID=%RU32 process did not shut down within time\n", uSessionID);
    12251145                     break;
    12261146                }
     
    12321152        if (!fProcessAlive)
    12331153        {
    1234             VBoxServiceVerbose(2, "Guest session process (ID=%RU32) terminated with rc=%Rrc, reason=%ld, status=%d\n",
    1235                                uSessionID, rcWait,
    1236                                ProcessStatus.enmReason, ProcessStatus.iStatus);
     1154            VGSvcVerbose(2, "Guest session process (ID=%RU32) terminated with rc=%Rrc, reason=%d, status=%d\n",
     1155                         uSessionID, rcWait, ProcessStatus.enmReason, ProcessStatus.iStatus);
    12371156            if (ProcessStatus.iStatus == RTEXITCODE_INIT)
    12381157            {
    1239                 VBoxServiceError("Guest session process (ID=%RU32) failed to initialize. Here some hints:\n",
    1240                                  uSessionID);
    1241                 VBoxServiceError("- Is logging enabled and the output directory is read-only by the guest session user?\n");
     1158                VGSvcError("Guest session process (ID=%RU32) failed to initialize. Here some hints:\n", uSessionID);
     1159                VGSvcError("- Is logging enabled and the output directory is read-only by the guest session user?\n");
    12421160                /** @todo Add more here. */
    12431161            }
     
    12521170        for (int i = 0; i < 3; i++)
    12531171        {
    1254             VBoxServiceVerbose(2, "Guest session ID=%RU32 process still alive, killing attempt %d/3\n",
    1255                                uSessionID, i + 1);
     1172            VGSvcVerbose(2, "Guest session ID=%RU32 process still alive, killing attempt %d/3\n", uSessionID, i + 1);
    12561173
    12571174            rc = RTProcTerminate(pThread->hProcess);
    12581175            if (RT_SUCCESS(rc))
    12591176                break;
     1177            /** @todo r=bird: What's the point of sleeping 3 second after the last attempt? */
    12601178            RTThreadSleep(3000);
    12611179        }
    12621180
    1263         VBoxServiceVerbose(2, "Guest session ID=%RU32 process termination resulted in rc=%Rrc\n",
    1264                            uSessionID, rc);
    1265 
    1266         uSessionStatus = RT_SUCCESS(rc)
    1267                        ? GUEST_SESSION_NOTIFYTYPE_TOK : GUEST_SESSION_NOTIFYTYPE_TOA;
     1181        VGSvcVerbose(2, "Guest session ID=%RU32 process termination resulted in rc=%Rrc\n", uSessionID, rc);
     1182
     1183        uSessionStatus = RT_SUCCESS(rc) ? GUEST_SESSION_NOTIFYTYPE_TOK : GUEST_SESSION_NOTIFYTYPE_TOA;
     1184    }
     1185    else if (RT_SUCCESS(rcWait))
     1186    {
     1187        switch (ProcessStatus.enmReason)
     1188        {
     1189            case RTPROCEXITREASON_NORMAL:
     1190                uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEN;
     1191                break;
     1192
     1193            case RTPROCEXITREASON_ABEND:
     1194                uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEA;
     1195                break;
     1196
     1197            case RTPROCEXITREASON_SIGNAL:
     1198                uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TES;
     1199                break;
     1200
     1201            default:
     1202                AssertMsgFailed(("Unhandled process termination reason (%d)\n", ProcessStatus.enmReason));
     1203                uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEA;
     1204                break;
     1205        }
    12681206    }
    12691207    else
    12701208    {
    1271         if (RT_SUCCESS(rcWait))
    1272         {
    1273             switch (ProcessStatus.enmReason)
    1274             {
    1275                 case RTPROCEXITREASON_NORMAL:
    1276                     uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEN;
    1277                     break;
    1278 
    1279                 case RTPROCEXITREASON_ABEND:
    1280                     uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEA;
    1281                     break;
    1282 
    1283                 case RTPROCEXITREASON_SIGNAL:
    1284                     uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TES;
    1285                     break;
    1286 
    1287                 default:
    1288                     AssertMsgFailed(("Unhandled process termination reason (%ld)\n",
    1289                                      ProcessStatus.enmReason));
    1290                     uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEA;
    1291                     break;
    1292             }
    1293         }
    1294         else
    1295         {
    1296             /* If we didn't find the guest process anymore, just assume it
    1297              * terminated normally. */
    1298             uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEN;
    1299         }
    1300     }
    1301 
    1302     VBoxServiceVerbose(3, "Guest session ID=%RU32 thread ended with sessionStatus=%RU32, sessionRc=%Rrc\n",
    1303                        uSessionID, uSessionStatus, uSessionRc);
     1209        /* If we didn't find the guest process anymore, just assume it
     1210         * terminated normally. */
     1211        uSessionStatus = GUEST_SESSION_NOTIFYTYPE_TEN;
     1212    }
     1213
     1214    VGSvcVerbose(3, "Guest session ID=%RU32 thread ended with sessionStatus=%RU32, sessionRc=%Rrc\n",
     1215                 uSessionID, uSessionStatus, uSessionRc);
    13041216
    13051217    /* Report final status. */
    13061218    Assert(uSessionStatus != GUEST_SESSION_NOTIFYTYPE_UNDEFINED);
    13071219    VBGLR3GUESTCTRLCMDCTX ctx = { uClientID, VBOX_GUESTCTRL_CONTEXTID_MAKE_SESSION(uSessionID) };
    1308     rc2 = VbglR3GuestCtrlSessionNotify(&ctx,
    1309                                        uSessionStatus, uSessionRc);
     1220    rc2 = VbglR3GuestCtrlSessionNotify(&ctx, uSessionStatus, uSessionRc);
    13101221    if (RT_FAILURE(rc2))
    1311         VBoxServiceError("Reporting session ID=%RU32 final status failed with rc=%Rrc\n",
    1312                          uSessionID, rc2);
     1222        VGSvcError("Reporting session ID=%RU32 final status failed with rc=%Rrc\n", uSessionID, rc2);
    13131223
    13141224    VbglR3GuestCtrlDisconnect(uClientID);
    13151225
    1316     VBoxServiceVerbose(3, "Session ID=%RU32 thread ended with rc=%Rrc\n",
    1317                        uSessionID, rc);
    1318     return rc;
    1319 }
    1320 
    1321 
    1322 RTEXITCODE gstcntlSessionSpawnWorker(PVBOXSERVICECTRLSESSION pSession)
     1226    VGSvcVerbose(3, "Session ID=%RU32 thread ended with rc=%Rrc\n", uSessionID, rc);
     1227    return rc;
     1228}
     1229
     1230
     1231static RTEXITCODE vgsvcGstCtrlSessionSpawnWorker(PVBOXSERVICECTRLSESSION pSession)
    13231232{
    13241233    AssertPtrReturn(pSession, RTEXITCODE_FAILURE);
     
    13261235    bool fSessionFilter = true;
    13271236
    1328     VBoxServiceVerbose(0, "Hi, this is guest session ID=%RU32\n",
    1329                        pSession->StartupInfo.uSessionID);
     1237    VGSvcVerbose(0, "Hi, this is guest session ID=%RU32\n", pSession->StartupInfo.uSessionID);
    13301238
    13311239    uint32_t uClientID;
     
    13361244         * host service to send messages which belong to another
    13371245         * session we don't want to handle. */
    1338         uint32_t uFilterAdd =
    1339             VBOX_GUESTCTRL_FILTER_BY_SESSION(pSession->StartupInfo.uSessionID);
     1246        uint32_t uFilterAdd = VBOX_GUESTCTRL_FILTER_BY_SESSION(pSession->StartupInfo.uSessionID);
    13401247        rc = VbglR3GuestCtrlMsgFilterSet(uClientID,
    13411248                                         VBOX_GUESTCTRL_CONTEXTID_MAKE_SESSION(pSession->StartupInfo.uSessionID),
    13421249                                         uFilterAdd, 0 /* Filter remove */);
    1343         VBoxServiceVerbose(3, "Setting message filterAdd=0x%x returned %Rrc\n",
    1344                            uFilterAdd, rc);
     1250        VGSvcVerbose(3, "Setting message filterAdd=0x%x returned %Rrc\n", uFilterAdd, rc);
    13451251
    13461252        if (   RT_FAILURE(rc)
     
    13531259        }
    13541260
    1355         VBoxServiceVerbose(1, "Using client ID=%RU32\n", uClientID);
     1261        VGSvcVerbose(1, "Using client ID=%RU32\n", uClientID);
    13561262    }
    13571263    else
    1358         VBoxServiceError("Error connecting to guest control service, rc=%Rrc\n", rc);
     1264        VGSvcError("Error connecting to guest control service, rc=%Rrc\n", rc);
    13591265
    13601266    /* Report started status. */
    13611267    VBGLR3GUESTCTRLCMDCTX ctx = { uClientID, VBOX_GUESTCTRL_CONTEXTID_MAKE_SESSION(pSession->StartupInfo.uSessionID) };
    1362     int rc2 = VbglR3GuestCtrlSessionNotify(&ctx,
    1363                                            GUEST_SESSION_NOTIFYTYPE_STARTED, VINF_SUCCESS);
     1268    int rc2 = VbglR3GuestCtrlSessionNotify(&ctx, GUEST_SESSION_NOTIFYTYPE_STARTED, VINF_SUCCESS);
    13641269    if (RT_FAILURE(rc2))
    13651270    {
    1366         VBoxServiceError("Reporting session ID=%RU32 started status failed with rc=%Rrc\n",
    1367                          pSession->StartupInfo.uSessionID, rc2);
     1271        VGSvcError("Reporting session ID=%RU32 started status failed with rc=%Rrc\n", pSession->StartupInfo.uSessionID, rc2);
    13681272
    13691273        /*
     
    13921296        bool fShutdown = false;
    13931297
    1394         VBGLR3GUESTCTRLCMDCTX ctxHost = { uClientID, 0 /* Context ID, zeroed */,
    1395                                           pSession->StartupInfo.uProtocol };
     1298        VBGLR3GUESTCTRLCMDCTX ctxHost = { uClientID, 0 /* Context ID */, pSession->StartupInfo.uProtocol };
    13961299        for (;;)
    13971300        {
    1398             VBoxServiceVerbose(3, "Waiting for host msg ...\n");
     1301            VGSvcVerbose(3, "Waiting for host msg ...\n");
    13991302            uint32_t uMsg = 0;
    14001303            uint32_t cParms = 0;
     
    14031306            {
    14041307#ifdef DEBUG
    1405                 VBoxServiceVerbose(4, "Message requires %RU32 parameters, but only 2 supplied -- retrying request (no error!)...\n", cParms);
     1308                VGSvcVerbose(4, "Message requires %RU32 parameters, but only 2 supplied -- retrying request (no error!)...\n",
     1309                             cParms);
    14061310#endif
    14071311                rc = VINF_SUCCESS; /* Try to get "real" message in next block below. */
    14081312            }
    14091313            else if (RT_FAILURE(rc))
    1410                 VBoxServiceVerbose(3, "Getting host message failed with %Rrc\n", rc); /* VERR_GEN_IO_FAILURE seems to be normal if ran into timeout. */
     1314                VGSvcVerbose(3, "Getting host message failed with %Rrc\n", rc); /* VERR_GEN_IO_FAILURE seems to be normal if ran into timeout. */
    14111315            if (RT_SUCCESS(rc))
    14121316            {
    1413                 VBoxServiceVerbose(4, "Msg=%RU32 (%RU32 parms) retrieved\n", uMsg, cParms);
     1317                VGSvcVerbose(4, "Msg=%RU32 (%RU32 parms) retrieved\n", uMsg, cParms);
    14141318
    14151319                /* Set number of parameters for current host context. */
     
    14171321
    14181322                /* ... and pass it on to the session handler. */
    1419                 rc = GstCntlSessionHandler(pSession, uMsg, &ctxHost,
    1420                                            pvScratchBuf, cbScratchBuf, &fShutdown);
     1323                rc = VGSvcGstCtrlSessionHandler(pSession, uMsg, &ctxHost, pvScratchBuf, cbScratchBuf, &fShutdown);
    14211324            }
    14221325
     
    14241327                break;
    14251328
    1426             /* Let's sleep for a bit and let others run ... */
     1329            /* Let others run ... */
    14271330            RTThreadYield();
    14281331        }
    14291332    }
    14301333
    1431     VBoxServiceVerbose(0, "Session %RU32 ended\n", pSession->StartupInfo.uSessionID);
     1334    VGSvcVerbose(0, "Session %RU32 ended\n", pSession->StartupInfo.uSessionID);
    14321335
    14331336    if (pvScratchBuf)
     
    14361339    if (uClientID)
    14371340    {
    1438         VBoxServiceVerbose(3, "Disconnecting client ID=%RU32 ...\n", uClientID);
     1341        VGSvcVerbose(3, "Disconnecting client ID=%RU32 ...\n", uClientID);
    14391342        VbglR3GuestCtrlDisconnect(uClientID);
    14401343    }
    14411344
    1442     VBoxServiceVerbose(3, "Session worker returned with rc=%Rrc\n", rc);
     1345    VGSvcVerbose(3, "Session worker returned with rc=%Rrc\n", rc);
    14431346    return RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    14441347}
     
    14461349
    14471350/**
    1448  * Finds a (formerly) started guest process given by its PID and increases
    1449  * its reference count. Must be decreased by the caller with GstCntlProcessRelease().
    1450  * Note: This does *not lock the process!
     1351 * Finds a (formerly) started guest process given by its PID and increases its
     1352 * reference count.
    14511353 *
    1452  * @return  PVBOXSERVICECTRLTHREAD      Guest process if found, otherwise NULL.
    1453  * @param   PVBOXSERVICECTRLSESSION     Pointer to guest session where to search process in.
    1454  * @param   uPID                        PID to search for.
     1354 * Must be decreased by the caller with VGSvcGstCtrlProcessRelease().
     1355 *
     1356 * @returns Guest process if found, otherwise NULL.
     1357 * @param   pSession    Pointer to guest session where to search process in.
     1358 * @param   uPID        PID to search for.
     1359 *
     1360 * @note    This does *not lock the process!
    14551361 */
    1456 PVBOXSERVICECTRLPROCESS GstCntlSessionRetainProcess(PVBOXSERVICECTRLSESSION pSession, uint32_t uPID)
     1362PVBOXSERVICECTRLPROCESS VGSvcGstCtrlSessionRetainProcess(PVBOXSERVICECTRLSESSION pSession, uint32_t uPID)
    14571363{
    14581364    AssertPtrReturn(pSession, NULL);
     
    14891395
    14901396
    1491 int GstCntlSessionClose(PVBOXSERVICECTRLSESSION pSession)
     1397int VGSvcGstCtrlSessionClose(PVBOXSERVICECTRLSESSION pSession)
    14921398{
    14931399    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
    14941400
    1495     VBoxServiceVerbose(0, "Session %RU32 is about to close ...\n",
    1496                        pSession->StartupInfo.uSessionID);
     1401    VGSvcVerbose(0, "Session %RU32 is about to close ...\n", pSession->StartupInfo.uSessionID);
    14971402
    14981403    int rc = RTCritSectEnter(&pSession->CritSect);
     
    15021407         * Close all guest processes.
    15031408         */
    1504         VBoxServiceVerbose(0, "Stopping all guest processes ...\n");
     1409        VGSvcVerbose(0, "Stopping all guest processes ...\n");
    15051410
    15061411        /* Signal all guest processes in the active list that we want to shutdown. */
     
    15091414        RTListForEach(&pSession->lstProcesses, pProcess, VBOXSERVICECTRLPROCESS, Node)
    15101415        {
    1511             GstCntlProcessStop(pProcess);
     1416            VGSvcGstCtrlProcessStop(pProcess);
    15121417            cProcesses++;
    15131418        }
    15141419
    1515         VBoxServiceVerbose(1, "%zu guest processes were signalled to stop\n", cProcesses);
     1420        VGSvcVerbose(1, "%zu guest processes were signalled to stop\n", cProcesses);
    15161421
    15171422        /* Wait for all active threads to shutdown and destroy the active thread list. */
     
    15251430            AssertRC(rc2);
    15261431
    1527             rc2 = GstCntlProcessWait(pProcess,
    1528                                      30 * 1000 /* Wait 30 seconds max. */,
    1529                                      NULL /* rc */);
     1432            rc2 = VGSvcGstCtrlProcessWait(pProcess, 30 * 1000 /* Wait 30 seconds max. */, NULL /* rc */);
    15301433
    15311434            int rc3 = RTCritSectEnter(&pSession->CritSect);
     
    15331436
    15341437            if (RT_SUCCESS(rc2))
    1535                 GstCntlProcessFree(pProcess);
     1438                VGSvcGstCtrlProcessFree(pProcess);
    15361439
    15371440            if (fLast)
     
    15481451            bool fLast = RTListNodeIsLast(&pSession->lstProcesses, &pProcess->Node);
    15491452
    1550             VBoxServiceVerbose(1, "Process %p (PID %RU32) still in list\n",
    1551                                pProcess, pProcess->uPID);
     1453            VGSvcVerbose(1, "Process %p (PID %RU32) still in list\n", pProcess, pProcess->uPID);
    15521454            if (fLast)
    15531455                break;
     
    15621464         * Close all left guest files.
    15631465         */
    1564         VBoxServiceVerbose(0, "Closing all guest files ...\n");
     1466        VGSvcVerbose(0, "Closing all guest files ...\n");
    15651467
    15661468        PVBOXSERVICECTRLFILE pFile;
     
    15711473            bool fLast = RTListNodeIsLast(&pSession->lstFiles, &pFile->Node);
    15721474
    1573             int rc2 = gstcntlSessionFileDestroy(pFile);
     1475            int rc2 = vgsvcGstCtrlSessionFileDestroy(pFile);
    15741476            if (RT_FAILURE(rc2))
    15751477            {
    1576                 VBoxServiceError("Unable to close file \"%s\"; rc=%Rrc\n",
    1577                                  pFile->szName, rc2);
     1478                VGSvcError("Unable to close file '%s'; rc=%Rrc\n", pFile->szName, rc2);
    15781479                if (RT_SUCCESS(rc))
    15791480                    rc = rc2;
     
    15871488        }
    15881489
    1589         AssertMsg(RTListIsEmpty(&pSession->lstFiles),
    1590                   ("Guest file list still contains entries when it should not\n"));
     1490        AssertMsg(RTListIsEmpty(&pSession->lstFiles), ("Guest file list still contains entries when it should not\n"));
    15911491
    15921492        int rc2 = RTCritSectLeave(&pSession->CritSect);
     
    15991499
    16001500
    1601 int GstCntlSessionDestroy(PVBOXSERVICECTRLSESSION pSession)
     1501int VGSvcGstCtrlSessionDestroy(PVBOXSERVICECTRLSESSION pSession)
    16021502{
    16031503    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
    16041504
    1605     int rc = GstCntlSessionClose(pSession);
     1505    int rc = VGSvcGstCtrlSessionClose(pSession);
    16061506
    16071507    /* Destroy critical section. */
     
    16121512
    16131513
    1614 int GstCntlSessionInit(PVBOXSERVICECTRLSESSION pSession, uint32_t fFlags)
     1514int VGSvcGstCtrlSessionInit(PVBOXSERVICECTRLSESSION pSession, uint32_t fFlags)
    16151515{
    16161516    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    16321532 * Adds a guest process to a session's process list.
    16331533 *
    1634  * @return  IPRT status code.
     1534 * @return  VBox status code.
    16351535 * @param   pSession                Guest session to add process to.
    16361536 * @param   pProcess                Guest process to add.
    16371537 */
    1638 int GstCntlSessionProcessAdd(PVBOXSERVICECTRLSESSION pSession,
    1639                              PVBOXSERVICECTRLPROCESS pProcess)
     1538int VGSvcGstCtrlSessionProcessAdd(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess)
    16401539{
    16411540    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    16451544    if (RT_SUCCESS(rc))
    16461545    {
    1647         VBoxServiceVerbose(3, "Adding process (PID %RU32) to session ID=%RU32\n",
    1648                            pProcess->uPID, pSession->StartupInfo.uSessionID);
     1546        VGSvcVerbose( 3, "Adding process (PID %RU32) to session ID=%RU32\n", pProcess->uPID, pSession->StartupInfo.uSessionID);
    16491547
    16501548        /* Add process to session list. */
    1651         /* rc = */ RTListAppend(&pSession->lstProcesses, &pProcess->Node);
     1549        RTListAppend(&pSession->lstProcesses, &pProcess->Node);
    16521550
    16531551        int rc2 = RTCritSectLeave(&pSession->CritSect);
     
    16631561 * Removes a guest process from a session's process list.
    16641562 *
    1665  * @return  IPRT status code.
     1563 * @return  VBox status code.
    16661564 * @param   pSession                Guest session to remove process from.
    16671565 * @param   pProcess                Guest process to remove.
    16681566 */
    1669 int GstCntlSessionProcessRemove(PVBOXSERVICECTRLSESSION pSession,
    1670                                 PVBOXSERVICECTRLPROCESS pProcess)
     1567int VGSvcGstCtrlSessionProcessRemove(PVBOXSERVICECTRLSESSION pSession, PVBOXSERVICECTRLPROCESS pProcess)
    16711568{
    16721569    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    16761573    if (RT_SUCCESS(rc))
    16771574    {
    1678         VBoxServiceVerbose(3, "Removing process (PID %RU32) from session ID=%RU32\n",
    1679                            pProcess->uPID, pSession->StartupInfo.uSessionID);
     1575        VGSvcVerbose(3, "Removing process (PID %RU32) from session ID=%RU32\n", pProcess->uPID, pSession->StartupInfo.uSessionID);
    16801576        Assert(pProcess->cRefs == 0);
    16811577
     
    16951591 * maximum number of concurrent guest processes defined is allowed or not.
    16961592 *
    1697  * @return  IPRT status code.
     1593 * @return  VBox status code.
    16981594 * @param   pbAllowed           True if starting (another) guest process
    16991595 *                              is allowed, false if not.
    17001596 */
    1701 int GstCntlSessionProcessStartAllowed(const PVBOXSERVICECTRLSESSION pSession,
    1702                                       bool *pbAllowed)
     1597int VGSvcGstCtrlSessionProcessStartAllowed(const PVBOXSERVICECTRLSESSION pSession, bool *pbAllowed)
    17031598{
    17041599    AssertPtrReturn(pSession, VERR_INVALID_POINTER);
     
    17201615                uProcsRunning++;
    17211616
    1722             VBoxServiceVerbose(3, "Maximum served guest processes set to %u, running=%u\n",
    1723                                pSession->uProcsMaxKept, uProcsRunning);
     1617            VGSvcVerbose(3, "Maximum served guest processes set to %u, running=%u\n", pSession->uProcsMaxKept, uProcsRunning);
    17241618
    17251619            int32_t iProcsLeft = (pSession->uProcsMaxKept - uProcsRunning - 1);
    17261620            if (iProcsLeft < 0)
    17271621            {
    1728                 VBoxServiceVerbose(3, "Maximum running guest processes reached (%u)\n",
    1729                                    pSession->uProcsMaxKept);
     1622                VGSvcVerbose(3, "Maximum running guest processes reached (%u)\n", pSession->uProcsMaxKept);
    17301623                fLimitReached = true;
    17311624            }
     
    17471640 *
    17481641 *
    1749  * @return  IPRT status code.
     1642 * @return  VBox status code.
    17501643 * @param   pSessionStartupInfo     Session startup info.
    17511644 * @param   pSessionThread          The session thread under construction.
    17521645 * @param   uCtrlSessionThread      The session thread debug ordinal.
    17531646 */
    1754 static int vgsvcGstCntlSessionThreadCreateProcess(const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo,
    1755                                                   PVBOXSERVICECTRLSESSIONTHREAD pSessionThread, uint32_t uCtrlSessionThread)
     1647static int vgsvcVGSvcGstCtrlSessionThreadCreateProcess(const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo,
     1648                                                       PVBOXSERVICECTRLSESSIONTHREAD pSessionThread, uint32_t uCtrlSessionThread)
    17561649{
    17571650    /*
     
    17651658        Assert(!strlen(pSessionThread->StartupInfo.szDomain));
    17661659
    1767         VBoxServiceVerbose(3, "New anonymous guest session ID=%RU32 created, fFlags=%x, using protocol %RU32\n",
    1768                            pSessionStartupInfo->uSessionID,
    1769                            pSessionStartupInfo->fFlags,
    1770                            pSessionStartupInfo->uProtocol);
     1660        VGSvcVerbose(3, "New anonymous guest session ID=%RU32 created, fFlags=%x, using protocol %RU32\n",
     1661                     pSessionStartupInfo->uSessionID,
     1662                     pSessionStartupInfo->fFlags,
     1663                     pSessionStartupInfo->uProtocol);
    17711664    }
    17721665    else
    17731666    {
    1774         VBoxServiceVerbose(3, "Spawning new guest session ID=%RU32, szUser=%s, szPassword=%s, szDomain=%s, fFlags=%x, using protocol %RU32\n",
    1775                            pSessionStartupInfo->uSessionID,
    1776                            pSessionStartupInfo->szUser,
    1777 #ifdef DEBUG
    1778                            pSessionStartupInfo->szPassword,
     1667        VGSvcVerbose(3, "Spawning new guest session ID=%RU32, szUser=%s, szPassword=%s, szDomain=%s, fFlags=%x, using protocol %RU32\n",
     1668                     pSessionStartupInfo->uSessionID,
     1669                     pSessionStartupInfo->szUser,
     1670#ifdef DEBUG
     1671                     pSessionStartupInfo->szPassword,
    17791672#else
    1780                            "XXX", /* Never show passwords in release mode. */
    1781 #endif
    1782                            pSessionStartupInfo->szDomain,
    1783                            pSessionStartupInfo->fFlags,
    1784                            pSessionStartupInfo->uProtocol);
     1673                     "XXX", /* Never show passwords in release mode. */
     1674#endif
     1675                     pSessionStartupInfo->szDomain,
     1676                     pSessionStartupInfo->fFlags,
     1677                     pSessionStartupInfo->uProtocol);
    17851678    }
    17861679
     
    18531746
    18541747#ifdef DEBUG
    1855         VBoxServiceVerbose(4, "Argv building rc=%Rrc, session flags=%x\n", rc, g_Session.fFlags);
     1748        VGSvcVerbose(4, "Argv building rc=%Rrc, session flags=%x\n", rc, g_Session.fFlags);
    18561749        if (RT_SUCCESS(rc))
    18571750        {
     
    18671760        if (g_cVerbosity > 3)
    18681761        {
    1869             VBoxServiceVerbose(4, "Spawning parameters:\n");
     1762            VGSvcVerbose(4, "Spawning parameters:\n");
    18701763            for (idxArg = 0; apszArgs[idxArg]; idxArg++)
    1871                 VBoxServiceVerbose(4, "\t%s\n", apszArgs[idxArg]);
     1764                VGSvcVerbose(4, "\t%s\n", apszArgs[idxArg]);
    18721765        }
    18731766
     
    19681861 * be added to the given session thread list.
    19691862 *
    1970  * @return  IPRT status code.
     1863 * @return  VBox status code.
    19711864 * @param   pList                   Which list to use to store the session thread in.
    19721865 * @param   pSessionStartupInfo     Session startup info.
     
    19741867 *                                  Optional.
    19751868 */
    1976 int GstCntlSessionThreadCreate(PRTLISTANCHOR pList,
    1977                                const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo,
    1978                                PVBOXSERVICECTRLSESSIONTHREAD *ppSessionThread)
     1869int VGSvcGstCtrlSessionThreadCreate(PRTLISTANCHOR pList, const PVBOXSERVICECTRLSESSIONSTARTUPINFO pSessionStartupInfo,
     1870                                    PVBOXSERVICECTRLSESSIONTHREAD *ppSessionThread)
    19791871{
    19801872    AssertPtrReturn(pList, VERR_INVALID_POINTER);
     
    20201912             * Start the session thread.
    20211913             */
    2022             rc = vgsvcGstCntlSessionThreadCreateProcess(pSessionStartupInfo, pSessionThread, s_uCtrlSessionThread);
     1914            rc = vgsvcVGSvcGstCtrlSessionThreadCreateProcess(pSessionStartupInfo, pSessionThread, s_uCtrlSessionThread);
    20231915            if (RT_SUCCESS(rc))
    20241916            {
     
    20261918                 * Start the session thread.
    20271919                 */
    2028                 rc = RTThreadCreateF(&pSessionThread->Thread, gstcntlSessionThread,
     1920                rc = RTThreadCreateF(&pSessionThread->Thread, vgsvcGstCtrlSessionThread,
    20291921                                     pSessionThread /*pvUser*/, 0 /*cbStack*/,
    20301922                                     RTTHREADTYPE_DEFAULT, RTTHREADFLAGS_WAITABLE, "sess%u", s_uCtrlSessionThread);
     
    20361928                        && !ASMAtomicReadBool(&pSessionThread->fShutdown))
    20371929                    {
    2038                         VBoxServiceVerbose(2, "Thread for session ID=%RU32 started\n", pSessionThread->StartupInfo.uSessionID);
     1930                        VGSvcVerbose(2, "Thread for session ID=%RU32 started\n", pSessionThread->StartupInfo.uSessionID);
    20391931
    20401932                        ASMAtomicXchgBool(&pSessionThread->fStarted, true);
    20411933
    20421934                        /* Add session to list. */
    2043                         /* rc = */ RTListAppend(pList, &pSessionThread->Node);
     1935                        RTListAppend(pList, &pSessionThread->Node);
    20441936                        if (ppSessionThread) /* Return session if wanted. */
    20451937                            *ppSessionThread = pSessionThread;
     
    20501942                     * Bail out.
    20511943                     */
    2052                     VBoxServiceError("Thread for session ID=%RU32 failed to start, rc=%Rrc\n",
    2053                                      pSessionThread->StartupInfo.uSessionID, rc);
     1944                    VGSvcError("Thread for session ID=%RU32 failed to start, rc=%Rrc\n",
     1945                               pSessionThread->StartupInfo.uSessionID, rc);
    20541946                    if (RT_SUCCESS_NP(rc))
    20551947                        rc = VERR_CANT_CREATE; /** @todo Find a better rc. */
    20561948                }
    20571949                else
    2058                     VBoxServiceError("Creating session thread failed, rc=%Rrc\n", rc);
     1950                    VGSvcError("Creating session thread failed, rc=%Rrc\n", rc);
    20591951
    20601952                RTProcTerminate(pSessionThread->hProcess);
     
    20741966        rc = VERR_NO_MEMORY;
    20751967
    2076     VBoxServiceVerbose(3, "Spawning session thread returned returned rc=%Rrc\n", rc);
     1968    VGSvcVerbose(3, "Spawning session thread returned returned rc=%Rrc\n", rc);
    20771969    return rc;
    20781970}
     
    20821974 * Waits for a formerly opened guest session process to close.
    20831975 *
    2084  * @return  IPRT status code.
     1976 * @return  VBox status code.
    20851977 * @param   pThread                 Guest session thread to wait for.
    20861978 * @param   uTimeoutMS              Waiting timeout (in ms).
    2087  * @param   uFlags                  Closing flags.
     1979 * @param   fFlags                  Closing flags.
    20881980 */
    2089 int GstCntlSessionThreadWait(PVBOXSERVICECTRLSESSIONTHREAD pThread,
    2090                              uint32_t uTimeoutMS, uint32_t uFlags)
     1981int VGSvcGstCtrlSessionThreadWait(PVBOXSERVICECTRLSESSIONTHREAD pThread, uint32_t uTimeoutMS, uint32_t fFlags)
    20911982{
    20921983    AssertPtrReturn(pThread, VERR_INVALID_POINTER);
    20931984    /** @todo Validate closing flags. */
    20941985
    2095     if (pThread->Thread == NIL_RTTHREAD)
    2096     {
    2097         AssertMsgFailed(("Guest session thread of session %p does not exist when it should\n",
    2098                          pThread));
    2099         return VERR_NOT_FOUND;
    2100     }
     1986    AssertMsgReturn(pThread->Thread != NIL_RTTHREAD,
     1987                    ("Guest session thread of session %p does not exist when it should\n", pThread),
     1988                    VERR_NOT_FOUND);
    21011989
    21021990    int rc = VINF_SUCCESS;
     
    21111999        ASMAtomicXchgBool(&pThread->fShutdown, true);
    21122000
    2113         VBoxServiceVerbose(3, "Waiting for session thread ID=%RU32 to close (%RU32ms) ...\n",
    2114                            pThread->StartupInfo.uSessionID, uTimeoutMS);
     2001        VGSvcVerbose(3, "Waiting for session thread ID=%RU32 to close (%RU32ms) ...\n",
     2002                     pThread->StartupInfo.uSessionID, uTimeoutMS);
    21152003
    21162004        int rcThread;
    21172005        rc = RTThreadWait(pThread->Thread, uTimeoutMS, &rcThread);
    2118         if (RT_FAILURE(rc))
    2119         {
    2120             VBoxServiceError("Waiting for session thread ID=%RU32 to close failed with rc=%Rrc\n",
    2121                              pThread->StartupInfo.uSessionID, rc);
    2122         }
     2006        if (RT_SUCCESS(rc))
     2007            VGSvcVerbose(3, "Session thread ID=%RU32 ended with rc=%Rrc\n", pThread->StartupInfo.uSessionID, rcThread);
    21232008        else
    2124             VBoxServiceVerbose(3, "Session thread ID=%RU32 ended with rc=%Rrc\n",
    2125                                pThread->StartupInfo.uSessionID, rcThread);
     2009            VGSvcError("Waiting for session thread ID=%RU32 to close failed with rc=%Rrc\n", pThread->StartupInfo.uSessionID, rc);
    21262010    }
    21272011
     
    21332017 * it from the session thread list.
    21342018 *
    2135  * @return  IPRT status code.
     2019 * @return  VBox status code.
    21362020 * @param   pThread                 Session thread to destroy.
    2137  * @param   uFlags                  Closing flags.
     2021 * @param   fFlags                  Closing flags.
    21382022 */
    2139 int GstCntlSessionThreadDestroy(PVBOXSERVICECTRLSESSIONTHREAD pThread, uint32_t uFlags)
     2023int VGSvcGstCtrlSessionThreadDestroy(PVBOXSERVICECTRLSESSIONTHREAD pThread, uint32_t fFlags)
    21402024{
    21412025    AssertPtrReturn(pThread, VERR_INVALID_POINTER);
    21422026
    2143     int rc = GstCntlSessionThreadWait(pThread,
    2144                                       5 * 60 * 1000 /* 5 minutes timeout */, uFlags);
     2027    int rc = VGSvcGstCtrlSessionThreadWait(pThread, 5 * 60 * 1000 /* 5 minutes timeout */, fFlags);
    21452028
    21462029    /* Remove session from list and destroy object. */
     
    21582041 * @note    Caller is responsible for locking!
    21592042 *
    2160  * @return  IPRT status code.
     2043 * @return  VBox status code.
    21612044 * @param   pList                   Which list to close the session threads for.
    2162  * @param   uFlags                  Closing flags.
     2045 * @param   fFlags                  Closing flags.
    21632046 */
    2164 int GstCntlSessionThreadDestroyAll(PRTLISTANCHOR pList, uint32_t uFlags)
     2047int VGSvcGstCtrlSessionThreadDestroyAll(PRTLISTANCHOR pList, uint32_t fFlags)
    21652048{
    21662049    AssertPtrReturn(pList, VERR_INVALID_POINTER);
     
    21702053    /*int rc = VbglR3GuestCtrlClose
    21712054        if (RT_FAILURE(rc))
    2172             VBoxServiceError("Cancelling pending waits failed; rc=%Rrc\n", rc);*/
     2055            VGSvcError("Cancelling pending waits failed; rc=%Rrc\n", rc);*/
    21732056
    21742057    PVBOXSERVICECTRLSESSIONTHREAD pSessIt;
     
    21762059    RTListForEachSafe(pList, pSessIt, pSessItNext, VBOXSERVICECTRLSESSIONTHREAD, Node)
    21772060    {
    2178         int rc2 = GstCntlSessionThreadDestroy(pSessIt, uFlags);
     2061        int rc2 = VGSvcGstCtrlSessionThreadDestroy(pSessIt, fFlags);
    21792062        if (RT_FAILURE(rc2))
    21802063        {
    2181             VBoxServiceError("Closing session thread '%s' failed with rc=%Rrc\n", RTThreadGetName(pSessIt->Thread), rc2);
     2064            VGSvcError("Closing session thread '%s' failed with rc=%Rrc\n", RTThreadGetName(pSessIt->Thread), rc2);
    21822065            if (RT_SUCCESS(rc))
    21832066                rc = rc2;
     
    21862069    }
    21872070
    2188     VBoxServiceVerbose(4, "Destroying guest session threads ended with %Rrc\n", rc);
    2189     return rc;
    2190 }
    2191 
    2192 RTEXITCODE VBoxServiceControlSessionSpawnInit(int argc, char **argv)
     2071    VGSvcVerbose(4, "Destroying guest session threads ended with %Rrc\n", rc);
     2072    return rc;
     2073}
     2074
     2075
     2076/**
     2077 * Main function for the session process.
     2078 *
     2079 * @returns exit code.
     2080 * @param   argc        Argument count.
     2081 * @param   argv        Argument vector (UTF-8).
     2082 */
     2083RTEXITCODE VGSvcGstCtrlSessionSpawnInit(int argc, char **argv)
    21932084{
    21942085    static const RTGETOPTDEF s_aOptions[] =
     
    22152106                 1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
    22162107
    2217     uint32_t uSessionFlags = VBOXSERVICECTRLSESSION_FLAG_SPAWN;
     2108    uint32_t fSession = VBOXSERVICECTRLSESSION_FLAG_SPAWN;
    22182109
    22192110    /* Protocol and session ID must be specified explicitly. */
     
    22352126#ifdef DEBUG
    22362127            case VBOXSERVICESESSIONOPT_DUMP_STDOUT:
    2237                 uSessionFlags |= VBOXSERVICECTRLSESSION_FLAG_DUMPSTDOUT;
     2128                fSession |= VBOXSERVICECTRLSESSION_FLAG_DUMPSTDOUT;
    22382129                break;
    22392130
    22402131            case VBOXSERVICESESSIONOPT_DUMP_STDERR:
    2241                 uSessionFlags |= VBOXSERVICECTRLSESSION_FLAG_DUMPSTDERR;
     2132                fSession |= VBOXSERVICECTRLSESSION_FLAG_DUMPSTDERR;
    22422133                break;
    22432134#endif
     
    22832174
    22842175    /* Init the session object. */
    2285     int rc = GstCntlSessionInit(&g_Session, uSessionFlags);
     2176    int rc = VGSvcGstCtrlSessionInit(&g_Session, fSession);
    22862177    if (RT_FAILURE(rc))
    22872178        return RTMsgErrorExit(RTEXITCODE_INIT, "Failed to initialize session object, rc=%Rrc\n", rc);
    22882179
    2289     rc = VBoxServiceLogCreate(g_szLogFile[0] ? g_szLogFile : NULL);
     2180    rc = VGSvcLogCreate(g_szLogFile[0] ? g_szLogFile : NULL);
    22902181    if (RT_FAILURE(rc))
    2291         return RTMsgErrorExit(RTEXITCODE_INIT, "Failed to create log file \"%s\", rc=%Rrc\n",
     2182        return RTMsgErrorExit(RTEXITCODE_INIT, "Failed to create log file '%s', rc=%Rrc\n",
    22922183                              g_szLogFile[0] ? g_szLogFile : "<None>", rc);
    22932184
    2294     RTEXITCODE rcExit = gstcntlSessionSpawnWorker(&g_Session);
    2295 
    2296     VBoxServiceLogDestroy();
     2185    RTEXITCODE rcExit = vgsvcGstCtrlSessionSpawnWorker(&g_Session);
     2186
     2187    VGSvcLogDestroy();
    22972188    return rcExit;
    22982189}
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceCpuHotPlug.cpp

    r57358 r58029  
    4040*********************************************************************************************************************************/
    4141#ifdef RT_OS_LINUX
     42
    4243/** @name Paths to access the CPU device
    4344 * @{
     
    7677
    7778/** Content of uId if the path wasn't probed yet. */
    78 #define ACPI_CPU_PATH_NOT_PROBED UINT32_MAX
    79 
     79# define ACPI_CPU_PATH_NOT_PROBED UINT32_MAX
     80#endif /* RT_OS_LINUX*/
     81
     82
     83/*********************************************************************************************************************************
     84*   Global Variables                                                                                                             *
     85*********************************************************************************************************************************/
     86#ifdef RT_OS_LINUX
    8087/** Possible combinations of all path components for level 1. */
    81 const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl1[] =
     88static const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl1[] =
    8289{
    8390    /** LNXSYSTEM:<id> */
    84     {true, "LNXSYSTM:*"}
     91    { true, "LNXSYSTM:*" }
    8592};
    8693
    8794/** Possible combinations of all path components for level 2. */
    88 const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl2[] =
     95static const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl2[] =
    8996{
    9097    /** device:<id> */
     
    95102
    96103/** Possible combinations of all path components for level 3 */
    97 const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl3[] =
     104static const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl3[] =
    98105{
    99106    /** ACPI0004:<id> */
     
    102109
    103110/** Possible combinations of all path components for level 4 */
    104 const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl4[] =
     111static const SYSFSCPUPATHCOMP g_aAcpiCpuPathLvl4[] =
    105112{
    106113    /** LNXCPU:<id> */
     
    111118
    112119/** All possible combinations. */
    113 SYSFSCPUPATH g_aAcpiCpuPath[] =
     120static SYSFSCPUPATH g_aAcpiCpuPath[] =
    114121{
    115122    /** Level 1 */
     
    129136 *          below and would make the hot unplug code fail.
    130137 */
    131 const char *g_apszTopologyPath[] =
     138static const char *g_apszTopologyPath[] =
    132139{
    133140    "sysdev",
    134141    "physical_node"
    135142};
    136 #endif
     143
     144#endif /* RT_OS_LINUX*/
     145
    137146
    138147#ifdef RT_OS_LINUX
     148
    139149/**
    140150 * Probes for the correct path to the ACPI CPU object in sysfs for the
     
    143153 * @returns VBox status code.
    144154 */
    145 static int VBoxServiceCpuHotPlugProbePath(void)
     155static int vgsvcCpuHotPlugProbePath(void)
    146156{
    147157    int rc = VINF_SUCCESS;
     
    221231        } /* For every level */
    222232
    223         VBoxServiceVerbose(1, "Final path after probing %s rc=%Rrc\n", pszPath, rc);
     233        VGSvcVerbose(1, "Final path after probing %s rc=%Rrc\n", pszPath, rc);
    224234        RTStrFree(pszPath);
    225235    }
     
    227237    return rc;
    228238}
     239
    229240
    230241/**
     
    236247 * @param   idCpuPackage The package ID of the CPU.
    237248 */
    238 static int VBoxServiceCpuHotPlugGetACPIDevicePath(char **ppszPath, uint32_t idCpuCore, uint32_t idCpuPackage)
     249static int vgsvcCpuHotPlugGetACPIDevicePath(char **ppszPath, uint32_t idCpuCore, uint32_t idCpuPackage)
    239250{
    240251    int rc = VINF_SUCCESS;
     
    242253    AssertPtrReturn(ppszPath, VERR_INVALID_PARAMETER);
    243254
    244     rc = VBoxServiceCpuHotPlugProbePath();
     255    rc = vgsvcCpuHotPlugProbePath();
    245256    if (RT_SUCCESS(rc))
    246257    {
     
    316327                            pszPath = pszPathCurr;
    317328                            fFound = true;
    318                             VBoxServiceVerbose(3, "CPU found\n");
     329                            VGSvcVerbose(3, "CPU found\n");
    319330                            break;
    320331                        }
     
    323334                            /* Get the next directory. */
    324335                            RTStrFree(pszPathCurr);
    325                             VBoxServiceVerbose(3, "CPU doesn't match, next directory\n");
     336                            VGSvcVerbose(3, "CPU doesn't match, next directory\n");
    326337                        }
    327338                    }
     
    331342                        iLvlCurr++;
    332343
    333                         VBoxServiceVerbose(3, "Going deeper (iLvlCurr=%u)\n", iLvlCurr);
     344                        VGSvcVerbose(3, "Going deeper (iLvlCurr=%u)\n", iLvlCurr);
    334345
    335346                        pAcpiCpuPathLvl = &g_aAcpiCpuPath[iLvlCurr];
     
    349360                        }
    350361
    351                         VBoxServiceVerbose(3, "New path %s\n", pszPathDir);
     362                        VGSvcVerbose(3, "New path %s\n", pszPathDir);
    352363
    353364                        /* Open the directory */
     
    369380                    iLvlCurr--;
    370381                    pAcpiCpuPathLvl = &g_aAcpiCpuPath[iLvlCurr];
    371                     VBoxServiceVerbose(3, "Directory not found, going back (iLvlCurr=%u)\n", iLvlCurr);
     382                    VGSvcVerbose(3, "Directory not found, going back (iLvlCurr=%u)\n", iLvlCurr);
    372383                }
    373384            } /* while not found */
     
    395406    return rc;
    396407}
     408
    397409#endif /* RT_OS_LINUX */
    398 
    399410
    400411/**
     
    404415 * @param   idCpuPackage    The CPU package ID.
    405416 */
    406 static void VBoxServiceCpuHotPlugHandlePlugEvent(uint32_t idCpuCore, uint32_t idCpuPackage)
     417static void vgsvcCpuHotPlugHandlePlugEvent(uint32_t idCpuCore, uint32_t idCpuPackage)
    407418{
    408419#ifdef RT_OS_LINUX
     
    413424     * Because the directory might not be available immediately we try a few times.
    414425     *
    415      * @todo: Maybe use udev to monitor hot-add events from the kernel
    416426     */
     427    /** @todo Maybe use udev to monitor hot-add events from the kernel */
    417428    bool fCpuOnline = false;
    418429    unsigned cTries = 5;
     
    457468                        if (RT_SUCCESS(rc))
    458469                        {
    459                             VBoxServiceVerbose(1, "CpuHotPlug: CPU %u/%u was brought online\n", idCpuPackage, idCpuCore);
     470                            VGSvcVerbose(1, "CpuHotPlug: CPU %u/%u was brought online\n", idCpuPackage, idCpuCore);
    460471                            fCpuOnline = true;
    461472                            break;
     
    464475                    }
    465476                    else
    466                         VBoxServiceError("CpuHotPlug: Failed to open \"%s/%s/online\" rc=%Rrc\n",
    467                                          SYSFS_CPU_PATH, DirFolderContent.szName, rc);
     477                        VGSvcError("CpuHotPlug: Failed to open '%s/%s/online' rc=%Rrc\n",
     478                                   SYSFS_CPU_PATH, DirFolderContent.szName, rc);
    468479                }
    469480            }
    470481        }
    471482        else
    472             VBoxServiceError("CpuHotPlug: Failed to open path %s rc=%Rrc\n", SYSFS_CPU_PATH, rc);
     483            VGSvcError("CpuHotPlug: Failed to open path %s rc=%Rrc\n", SYSFS_CPU_PATH, rc);
    473484
    474485        /* Sleep a bit */
     
    490501 * @param   idCpuPackage    The CPU package ID.
    491502 */
    492 static void VBoxServiceCpuHotPlugHandleUnplugEvent(uint32_t idCpuCore, uint32_t idCpuPackage)
     503static void vgsvcCpuHotPlugHandleUnplugEvent(uint32_t idCpuCore, uint32_t idCpuPackage)
    493504{
    494505#ifdef RT_OS_LINUX
    495506    char *pszCpuDevicePath = NULL;
    496     int rc = VBoxServiceCpuHotPlugGetACPIDevicePath(&pszCpuDevicePath, idCpuCore, idCpuPackage);
     507    int rc = vgsvcCpuHotPlugGetACPIDevicePath(&pszCpuDevicePath, idCpuCore, idCpuPackage);
    497508    if (RT_SUCCESS(rc))
    498509    {
    499510        RTFILE hFileCpuEject;
    500         rc = RTFileOpenF(&hFileCpuEject, RTFILE_O_WRITE | RTFILE_O_OPEN | RTFILE_O_DENY_NONE,
    501                          "%s/eject", pszCpuDevicePath);
     511        rc = RTFileOpenF(&hFileCpuEject, RTFILE_O_WRITE | RTFILE_O_OPEN | RTFILE_O_DENY_NONE, "%s/eject", pszCpuDevicePath);
    502512        if (RT_SUCCESS(rc))
    503513        {
     
    505515            rc = RTFileWrite(hFileCpuEject, "1", 1, NULL);
    506516            if (RT_SUCCESS(rc))
    507                 VBoxServiceVerbose(1, "CpuHotPlug: CPU %u/%u was ejected\n", idCpuPackage, idCpuCore);
     517                VGSvcVerbose(1, "CpuHotPlug: CPU %u/%u was ejected\n", idCpuPackage, idCpuCore);
    508518            else
    509                 VBoxServiceError("CpuHotPlug: Failed to eject CPU %u/%u rc=%Rrc\n", idCpuPackage, idCpuCore, rc);
     519                VGSvcError("CpuHotPlug: Failed to eject CPU %u/%u rc=%Rrc\n", idCpuPackage, idCpuCore, rc);
    510520
    511521            RTFileClose(hFileCpuEject);
    512522        }
    513523        else
    514             VBoxServiceError("CpuHotPlug: Failed to open \"%s/eject\" rc=%Rrc\n", pszCpuDevicePath, rc);
     524            VGSvcError("CpuHotPlug: Failed to open '%s/eject' rc=%Rrc\n", pszCpuDevicePath, rc);
    515525        RTStrFree(pszCpuDevicePath);
    516526    }
    517527    else
    518         VBoxServiceError("CpuHotPlug: Failed to get CPU device path rc=%Rrc\n", rc);
     528        VGSvcError("CpuHotPlug: Failed to get CPU device path rc=%Rrc\n", rc);
    519529#else
    520530# error "Port me"
     
    523533
    524534
    525 /** @copydoc VBOXSERVICE::pfnWorker */
    526 DECLCALLBACK(int) VBoxServiceCpuHotPlugWorker(bool volatile *pfShutdown)
     535/** @interface_method_impl{VBOXSERVICE,pfnWorker} */
     536static DECLCALLBACK(int) vgsvcCpuHotPlugWorker(bool volatile *pfShutdown)
    527537{
    528538    /*
     
    550560        if (RT_SUCCESS(rc))
    551561        {
    552             VBoxServiceVerbose(3, "CpuHotPlug: Event happened idCpuCore=%u idCpuPackage=%u enmEventType=%d\n",
    553                                idCpuCore, idCpuPackage, enmEventType);
     562            VGSvcVerbose(3, "CpuHotPlug: Event happened idCpuCore=%u idCpuPackage=%u enmEventType=%d\n",
     563                         idCpuCore, idCpuPackage, enmEventType);
    554564            switch (enmEventType)
    555565            {
    556566                case VMMDevCpuEventType_Plug:
    557                     VBoxServiceCpuHotPlugHandlePlugEvent(idCpuCore, idCpuPackage);
     567                    vgsvcCpuHotPlugHandlePlugEvent(idCpuCore, idCpuPackage);
    558568                    break;
    559569
    560570                case VMMDevCpuEventType_Unplug:
    561                     VBoxServiceCpuHotPlugHandleUnplugEvent(idCpuCore, idCpuPackage);
     571                    vgsvcCpuHotPlugHandleUnplugEvent(idCpuCore, idCpuPackage);
    562572                    break;
    563573
     
    566576                    static uint32_t s_iErrors = 0;
    567577                    if (s_iErrors++ < 10)
    568                         VBoxServiceError("CpuHotPlug: Unknown event: idCpuCore=%u idCpuPackage=%u enmEventType=%d\n",
    569                                          idCpuCore, idCpuPackage, enmEventType);
     578                        VGSvcError("CpuHotPlug: Unknown event: idCpuCore=%u idCpuPackage=%u enmEventType=%d\n",
     579                                   idCpuCore, idCpuPackage, enmEventType);
    570580                    break;
    571581                }
     
    574584        else if (rc != VERR_INTERRUPTED && rc != VERR_TRY_AGAIN)
    575585        {
    576             VBoxServiceError("CpuHotPlug: VbglR3CpuHotPlugWaitForEvent returned %Rrc\n", rc);
     586            VGSvcError("CpuHotPlug: VbglR3CpuHotPlugWaitForEvent returned %Rrc\n", rc);
    577587            break;
    578588        }
     
    587597
    588598
    589 /** @copydoc VBOXSERVICE::pfnStop */
    590 static DECLCALLBACK(void) VBoxServiceCpuHotPlugStop(void)
     599/** @interface_method_impl{VBOXSERVICE,pfnStop} */
     600static DECLCALLBACK(void) vgsvcCpuHotPlugStop(void)
    591601{
    592602    VbglR3InterruptEventWaits();
     
    609619    NULL,
    610620    /* methods */
    611     VBoxServiceDefaultPreInit,
    612     VBoxServiceDefaultOption,
    613     VBoxServiceDefaultInit,
    614     VBoxServiceCpuHotPlugWorker,
    615     VBoxServiceCpuHotPlugStop,
    616     VBoxServiceDefaultTerm
     621    VGSvcDefaultPreInit,
     622    VGSvcDefaultOption,
     623    VGSvcDefaultInit,
     624    vgsvcCpuHotPlugWorker,
     625    vgsvcCpuHotPlugStop,
     626    VGSvcDefaultTerm
    617627};
    618628
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h

    r57966 r58029  
    9696
    9797/* Default call-backs for services which do not need special behaviour. */
    98 DECLCALLBACK(int) VBoxServiceDefaultPreInit(void);
    99 DECLCALLBACK(int) VBoxServiceDefaultOption(const char **ppszShort, int argc,
    100                                            char **argv, int *pi);
    101 DECLCALLBACK(int) VBoxServiceDefaultInit(void);
    102 DECLCALLBACK(void) VBoxServiceDefaultTerm(void);
     98DECLCALLBACK(int)  VGSvcDefaultPreInit(void);
     99DECLCALLBACK(int)  VGSvcDefaultOption(const char **ppszShort, int argc, char **argv, int *pi);
     100DECLCALLBACK(int)  VGSvcDefaultInit(void);
     101DECLCALLBACK(void) VGSvcDefaultTerm(void);
    103102
    104103/** The service name.
     
    181180#endif
    182181
    183 extern RTEXITCODE               VBoxServiceSyntax(const char *pszFormat, ...);
    184 extern RTEXITCODE               VBoxServiceError(const char *pszFormat, ...);
    185 extern void                     VBoxServiceVerbose(unsigned iLevel, const char *pszFormat, ...);
    186 extern int                      VBoxServiceArgUInt32(int argc, char **argv, const char *psz, int *pi, uint32_t *pu32,
    187                                                      uint32_t u32Min, uint32_t u32Max);
    188 extern int                      VBoxServiceStartServices(void);
    189 extern int                      VBoxServiceStopServices(void);
    190 extern void                     VBoxServiceMainWait(void);
    191 extern int                      VBoxServiceReportStatus(VBoxGuestFacilityStatus enmStatus);
    192 #ifdef RT_OS_WINDOWS
    193 extern RTEXITCODE               VBoxServiceWinInstall(void);
    194 extern RTEXITCODE               VBoxServiceWinUninstall(void);
    195 extern RTEXITCODE               VBoxServiceWinEnterCtrlDispatcher(void);
    196 extern void                     VBoxServiceWinSetStopPendingStatus(uint32_t uCheckPoint);
     182extern RTEXITCODE               VGSvcSyntax(const char *pszFormat, ...);
     183extern RTEXITCODE               VGSvcError(const char *pszFormat, ...);
     184extern void                     VGSvcVerbose(unsigned iLevel, const char *pszFormat, ...);
     185extern int                      VGSvcLogCreate(const char *pszLogFile);
     186extern void                     VGSvcLogDestroy(void);
     187extern int                      VGSvcArgUInt32(int argc, char **argv, const char *psz, int *pi, uint32_t *pu32,
     188                                               uint32_t u32Min, uint32_t u32Max);
     189
     190/* Exposing the following bits because of windows: */
     191extern int                      VGSvcStartServices(void);
     192extern int                      VGSvcStopServices(void);
     193extern void                     VGSvcMainWait(void);
     194extern int                      VGSvcReportStatus(VBoxGuestFacilityStatus enmStatus);
     195#ifdef RT_OS_WINDOWS
     196extern RTEXITCODE               VGSvcWinInstall(void);
     197extern RTEXITCODE               VGSvcWinUninstall(void);
     198extern RTEXITCODE               VGSvcWinEnterCtrlDispatcher(void);
     199extern void                     VGSvcWinSetStopPendingStatus(uint32_t uCheckPoint);
    197200#endif
    198201
    199202#ifdef VBOXSERVICE_TOOLBOX
    200 extern bool                     VBoxServiceToolboxMain(int argc, char **argv, RTEXITCODE *prcExit);
     203extern bool                     VGSvcToolboxMain(int argc, char **argv, RTEXITCODE *prcExit);
    201204#endif
    202205
    203206#ifdef RT_OS_WINDOWS
    204207# ifdef VBOX_WITH_GUEST_PROPS
    205 extern int                      VBoxServiceVMInfoWinWriteUsers(PVBOXSERVICEVEPROPCACHE pCache, char **ppszUserList, uint32_t *pcUsersInList);
    206 extern int                      VBoxServiceWinGetComponentVersions(uint32_t uiClientID);
     208extern int                      VGSvcVMInfoWinWriteUsers(PVBOXSERVICEVEPROPCACHE pCache, char **ppszUserList, uint32_t *pcUsersInList);
     209extern int                      VGSvcVMInfoWinGetComponentVersions(uint32_t uClientID);
    207210# endif /* VBOX_WITH_GUEST_PROPS */
    208211#endif /* RT_OS_WINDOWS */
    209212
    210213#ifdef VBOXSERVICE_MANAGEMENT
    211 extern uint32_t                 VBoxServiceBalloonQueryPages(uint32_t cbPage);
     214extern uint32_t                 VGSvcBalloonQueryPages(uint32_t cbPage);
    212215#endif
    213216#if defined(VBOXSERVICE_PAGE_SHARING)
    214 extern RTEXITCODE               VBoxServicePageSharingWorkerChild(void);
    215 #endif
    216 extern int                      VBoxServiceVMInfoSignal(void);
     217extern RTEXITCODE               VGSvcPageSharingWorkerChild(void);
     218#endif
     219extern int                      VGSvcVMInfoSignal(void);
    217220
    218221RT_C_DECLS_END
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServicePageSharing.cpp

    r57358 r58029  
    3838#include "VBoxServiceUtils.h"
    3939
     40#if defined(RT_OS_WINDOWS) && !defined(TARGET_NT4)
     41# include <tlhelp32.h>
     42# include <psapi.h>
     43# include <winternl.h>
     44#endif
     45
    4046
    4147/*********************************************************************************************************************************
    42 *   Global Variables                                                                                                             *
     48*   Header Files                                                                                                                 *
    4349*********************************************************************************************************************************/
    44 
    45 /** The semaphore we're blocking on. */
    46 static RTSEMEVENTMULTI  g_PageSharingEvent = NIL_RTSEMEVENTMULTI;
    47 
    48 #if defined(RT_OS_WINDOWS) && !defined(TARGET_NT4)
    49 #include <tlhelp32.h>
    50 #include <psapi.h>
    51 #include <winternl.h>
    52 
    5350typedef struct
    5451{
    5552    AVLPVNODECORE   Core;
     53#ifdef RT_OS_WINDOWS
    5654    HMODULE         hModule;
    5755    char            szFileVersion[16];
    5856    MODULEENTRY32   Info;
    59 } KNOWN_MODULE, *PKNOWN_MODULE;
    60 
    61 #define SystemModuleInformation     11
     57#endif /* RT_OS_WINDOWS */
     58} VGSVCPGSHKNOWNMOD, *PVGSVCPGSHKNOWNMOD;
     59
     60
     61#ifdef RT_OS_WINDOWS
     62/* NTDLL API we want to use: */
     63# define SystemModuleInformation 11
    6264
    6365typedef struct _RTL_PROCESS_MODULE_INFORMATION
     
    8284
    8385typedef NTSTATUS (WINAPI *PFNZWQUERYSYSTEMINFORMATION)(ULONG, PVOID, ULONG, PULONG);
     86
     87#endif /* RT_OS_WINDOWS */
     88
     89
     90/*********************************************************************************************************************************
     91*   Global Variables                                                                                                             *
     92*********************************************************************************************************************************/
     93#ifdef RT_OS_WINDOWS
    8494static PFNZWQUERYSYSTEMINFORMATION g_pfnZwQuerySystemInformation = NULL;
    85 
    86 
    87 static DECLCALLBACK(int) VBoxServicePageSharingEmptyTreeCallback(PAVLPVNODECORE pNode, void *pvUser);
     95#endif
     96
     97/** The semaphore we're blocking on. */
     98static RTSEMEVENTMULTI  g_PageSharingEvent = NIL_RTSEMEVENTMULTI;
    8899
    89100static PAVLPVNODECORE   g_pKnownModuleTree = NULL;
    90101static uint64_t         g_idSession = 0;
     102
     103
     104/*********************************************************************************************************************************
     105*   Internal Functions                                                                                                           *
     106*********************************************************************************************************************************/
     107static DECLCALLBACK(int) vgsvcPageSharingEmptyTreeCallback(PAVLPVNODECORE pNode, void *pvUser);
     108
     109
     110#if defined(RT_OS_WINDOWS) && !defined(TARGET_NT4)
    91111
    92112/**
     
    95115 * @param   fValidateMemory Validate/touch memory pages or not
    96116 */
    97 void VBoxServicePageSharingRegisterModule(PKNOWN_MODULE pModule, bool fValidateMemory)
     117static void vgsvcPageSharingRegisterModule(PVGSVCPGSHKNOWNMOD pModule, bool fValidateMemory)
    98118{
    99119    VMMDEVSHAREDREGIONDESC   aRegions[VMMDEVSHAREDREGIONDESC_MAX];
     
    103123    BYTE                    *pVersionInfo;
    104124
    105     VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule\n");
     125    VGSvcVerbose(3, "vgsvcPageSharingRegisterModule\n");
    106126
    107127    cbVersionSize = GetFileVersionInfoSize(pModule->Info.szExePath, &dummy);
    108128    if (!cbVersionSize)
    109129    {
    110         VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: GetFileVersionInfoSize failed with %d\n", GetLastError());
     130        VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: GetFileVersionInfoSize failed with %d\n", GetLastError());
    111131        return;
    112132    }
     
    117137    if (!GetFileVersionInfo(pModule->Info.szExePath, 0, cbVersionSize, pVersionInfo))
    118138    {
    119         VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: GetFileVersionInfo failed with %d\n", GetLastError());
     139        VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: GetFileVersionInfo failed with %d\n", GetLastError());
    120140        goto end;
    121141    }
    122142
    123143    /* Fetch default code page. */
    124     struct LANGANDCODEPAGE {
     144    struct LANGANDCODEPAGE
     145    {
    125146        WORD wLanguage;
    126147        WORD wCodePage;
     
    128149
    129150    UINT   cbTranslate;
    130     BOOL ret = VerQueryValue(pVersionInfo, TEXT("\\VarFileInfo\\Translation"), (LPVOID *)&lpTranslate, &cbTranslate);
    131     if (    !ret
    132         ||  cbTranslate < 4)
    133     {
    134         VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: VerQueryValue failed with %d (cb=%d)\n", GetLastError(), cbTranslate);
     151    BOOL fRet = VerQueryValue(pVersionInfo, TEXT("\\VarFileInfo\\Translation"), (LPVOID *)&lpTranslate, &cbTranslate);
     152    if (   !fRet
     153        || cbTranslate < 4)
     154    {
     155        VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: VerQueryValue failed with %d (cb=%d)\n", GetLastError(), cbTranslate);
    135156        goto end;
    136157    }
     
    147168
    148169        sprintf(szFileVersionLocation, TEXT("\\StringFileInfo\\%04x%04x\\FileVersion"), lpTranslate[i].wLanguage, lpTranslate[i].wCodePage);
    149         ret = VerQueryValue(pVersionInfo, szFileVersionLocation, (LPVOID *)&lpszFileVersion, &cbFileVersion);
    150         if (ret)
     170        fRet = VerQueryValue(pVersionInfo, szFileVersionLocation, (LPVOID *)&lpszFileVersion, &cbFileVersion);
     171        if (fRet)
    151172            break;
    152173    }
    153174    if (i == cTranslationBlocks)
    154175    {
    155         VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: no file version found!\n");
     176        VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: no file version found!\n");
    156177        goto end;
    157178    }
     
    167188        {
    168189            MEMORY_BASIC_INFORMATION MemInfo;
    169 
    170             SIZE_T ret = VirtualQuery(pBaseAddress, &MemInfo, sizeof(MemInfo));
    171             Assert(ret);
    172             if (!ret)
     190            SIZE_T cbRet = VirtualQuery(pBaseAddress, &MemInfo, sizeof(MemInfo));
     191            Assert(cbRet);
     192            if (!cbRet)
    173193            {
    174                 VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: VirtualQueryEx failed with %d\n", GetLastError());
     194                VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: VirtualQueryEx failed with %d\n", GetLastError());
    175195                break;
    176196            }
    177197
    178             if (    MemInfo.State == MEM_COMMIT
    179                 &&  MemInfo.Type == MEM_IMAGE)
     198            if (   MemInfo.State == MEM_COMMIT
     199                && MemInfo.Type == MEM_IMAGE)
    180200            {
    181201                switch (MemInfo.Protect)
    182202                {
    183                 case PAGE_EXECUTE:
    184                 case PAGE_EXECUTE_READ:
    185                 case PAGE_READONLY:
    186                 {
    187                     char *pRegion = (char *)MemInfo.BaseAddress;
    188 
    189                     /* Skip the first region as it only contains the image file header. */
    190                     if (pRegion != (char *)pModule->Info.modBaseAddr)
     203                    case PAGE_EXECUTE:
     204                    case PAGE_EXECUTE_READ:
     205                    case PAGE_READONLY:
    191206                    {
    192                         /* Touch all pages. */
    193                         while (pRegion < (char *)MemInfo.BaseAddress + MemInfo.RegionSize)
     207                        char *pRegion = (char *)MemInfo.BaseAddress;
     208
     209                        /* Skip the first region as it only contains the image file header. */
     210                        if (pRegion != (char *)pModule->Info.modBaseAddr)
    194211                        {
    195                             /* Try to trick the optimizer to leave the page touching code in place. */
    196                             ASMProbeReadByte(pRegion);
    197                             pRegion += PAGE_SIZE;
     212                            /* Touch all pages. */
     213                            while ((uintptr_t)pRegion < (uintptr_t)MemInfo.BaseAddress + MemInfo.RegionSize)
     214                            {
     215                                /* Try to trick the optimizer to leave the page touching code in place. */
     216                                ASMProbeReadByte(pRegion);
     217                                pRegion += PAGE_SIZE;
     218                            }
    198219                        }
     220#ifdef RT_ARCH_X86
     221                        aRegions[idxRegion].GCRegionAddr = (RTGCPTR32)MemInfo.BaseAddress;
     222#else
     223                        aRegions[idxRegion].GCRegionAddr = (RTGCPTR64)MemInfo.BaseAddress;
     224#endif
     225                        aRegions[idxRegion].cbRegion     = MemInfo.RegionSize;
     226                        idxRegion++;
     227
     228                        break;
    199229                    }
    200 #ifdef RT_ARCH_X86
    201                     aRegions[idxRegion].GCRegionAddr = (RTGCPTR32)MemInfo.BaseAddress;
    202 #else
    203                     aRegions[idxRegion].GCRegionAddr = (RTGCPTR64)MemInfo.BaseAddress;
    204 #endif
    205                     aRegions[idxRegion].cbRegion     = MemInfo.RegionSize;
    206                     idxRegion++;
    207 
    208                     break;
    209                 }
    210 
    211                 default:
    212                     break; /* ignore */
     230
     231                    default:
     232                        break; /* ignore */
    213233                }
    214234            }
     
    216236            pBaseAddress = (BYTE *)MemInfo.BaseAddress + MemInfo.RegionSize;
    217237            if (dwModuleSize > MemInfo.RegionSize)
    218             {
    219238                dwModuleSize -= MemInfo.RegionSize;
    220             }
    221239            else
    222240            {
     
    241259        idxRegion++;
    242260    }
    243     VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: VbglR3RegisterSharedModule %s %s base=%p size=%x cregions=%d\n", pModule->Info.szModule, pModule->szFileVersion, pModule->Info.modBaseAddr, pModule->Info.modBaseSize, idxRegion);
     261    VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: VbglR3RegisterSharedModule %s %s base=%p size=%x cregions=%d\n", pModule->Info.szModule, pModule->szFileVersion, pModule->Info.modBaseAddr, pModule->Info.modBaseSize, idxRegion);
    244262    int rc = VbglR3RegisterSharedModule(pModule->Info.szModule, pModule->szFileVersion, (uintptr_t)pModule->Info.modBaseAddr,
    245263                                        pModule->Info.modBaseSize, idxRegion, aRegions);
    246264    if (RT_FAILURE(rc))
    247         VBoxServiceVerbose(3, "VBoxServicePageSharingRegisterModule: VbglR3RegisterSharedModule failed with %Rrc\n", rc);
     265        VGSvcVerbose(3, "vgsvcPageSharingRegisterModule: VbglR3RegisterSharedModule failed with %Rrc\n", rc);
    248266
    249267end:
     
    252270}
    253271
     272
    254273/**
    255274 * Inspect all loaded modules for the specified process
    256275 * @param   dwProcessId     Process id
    257276 */
    258 void VBoxServicePageSharingInspectModules(DWORD dwProcessId, PAVLPVNODECORE *ppNewTree)
    259 {
    260     HANDLE hProcess, hSnapshot;
    261 
     277static void vgsvcPageSharingInspectModules(DWORD dwProcessId, PAVLPVNODECORE *ppNewTree)
     278{
    262279    /* Get a list of all the modules in this process. */
    263     hProcess = OpenProcess(PROCESS_QUERY_INFORMATION,
    264                            FALSE /* no child process handle inheritance */, dwProcessId);
     280    HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE /* no child process handle inheritance */, dwProcessId);
    265281    if (hProcess == NULL)
    266282    {
    267         VBoxServiceVerbose(3, "VBoxServicePageSharingInspectModules: OpenProcess %x failed with %d\n", dwProcessId, GetLastError());
     283        VGSvcVerbose(3, "vgsvcPageSharingInspectModules: OpenProcess %x failed with %d\n", dwProcessId, GetLastError());
    268284        return;
    269285    }
    270286
    271     hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
     287    HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwProcessId);
    272288    if (hSnapshot == INVALID_HANDLE_VALUE)
    273289    {
    274         VBoxServiceVerbose(3, "VBoxServicePageSharingInspectModules: CreateToolhelp32Snapshot failed with %d\n", GetLastError());
     290        VGSvcVerbose(3, "vgsvcPageSharingInspectModules: CreateToolhelp32Snapshot failed with %d\n", GetLastError());
    275291        CloseHandle(hProcess);
    276292        return;
    277293    }
    278294
    279     VBoxServiceVerbose(3, "VBoxServicePageSharingInspectModules\n");
     295    VGSvcVerbose(3, "vgsvcPageSharingInspectModules\n");
    280296
    281297    MODULEENTRY32 ModuleInfo;
     
    300316            {
    301317                /* New module; register it. */
    302                 PKNOWN_MODULE pModule = (PKNOWN_MODULE)RTMemAllocZ(sizeof(*pModule));
     318                PVGSVCPGSHKNOWNMOD pModule = (PVGSVCPGSHKNOWNMOD)RTMemAllocZ(sizeof(*pModule));
    303319                Assert(pModule);
    304320                if (!pModule)
     
    309325                pModule->hModule  = LoadLibraryEx(ModuleInfo.szExePath, 0, DONT_RESOLVE_DLL_REFERENCES);
    310326                if (pModule->hModule)
    311                     VBoxServicePageSharingRegisterModule(pModule, true /* validate pages */);
    312 
    313                 VBoxServiceVerbose(3, "\n\n     MODULE NAME:     %s",           ModuleInfo.szModule );
    314                 VBoxServiceVerbose(3, "\n     executable     = %s",             ModuleInfo.szExePath );
    315                 VBoxServiceVerbose(3, "\n     process ID     = 0x%08X",         ModuleInfo.th32ProcessID );
    316                 VBoxServiceVerbose(3, "\n     base address   = 0x%08X", (DWORD) ModuleInfo.modBaseAddr );
    317                 VBoxServiceVerbose(3, "\n     base size      = %d",             ModuleInfo.modBaseSize );
     327                    vgsvcPageSharingRegisterModule(pModule, true /* validate pages */);
     328
     329                VGSvcVerbose(3, "\n\n     MODULE NAME:     %s",           ModuleInfo.szModule );
     330                VGSvcVerbose(3, "\n     executable     = %s",             ModuleInfo.szExePath );
     331                VGSvcVerbose(3, "\n     process ID     = 0x%08X",         ModuleInfo.th32ProcessID );
     332                VGSvcVerbose(3, "\n     base address   = 0x%08X", (DWORD) ModuleInfo.modBaseAddr );
     333                VGSvcVerbose(3, "\n     base size      = %d",             ModuleInfo.modBaseSize );
    318334
    319335                pRec = &pModule->Core;
     
    322338            Assert(ret); NOREF(ret);
    323339        }
    324     }
    325     while (Module32Next(hSnapshot, &ModuleInfo));
     340    } while (Module32Next(hSnapshot, &ModuleInfo));
    326341
    327342    CloseHandle(hSnapshot);
    328343    CloseHandle(hProcess);
    329344}
     345
    330346
    331347/**
     
    334350 *
    335351 */
    336 static void VBoxServicePageSharingInspectGuest(void)
     352static void vgsvcPageSharingInspectGuest(void)
    337353{
    338354    HANDLE hSnapshot;
     
    340356    DWORD dwProcessId = GetCurrentProcessId();
    341357
    342     VBoxServiceVerbose(3, "VBoxServicePageSharingInspectGuest\n");
     358    VGSvcVerbose(3, "vgsvcPageSharingInspectGuest\n");
    343359
    344360    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
    345361    if (hSnapshot == INVALID_HANDLE_VALUE)
    346362    {
    347         VBoxServiceVerbose(3, "VBoxServicePageSharingInspectGuest: CreateToolhelp32Snapshot failed with %d\n", GetLastError());
     363        VGSvcVerbose(3, "vgsvcPageSharingInspectGuest: CreateToolhelp32Snapshot failed with %d\n", GetLastError());
    348364        return;
    349365    }
     
    359375        /* Skip our own process. */
    360376        if (ProcessInfo.th32ProcessID != dwProcessId)
    361             VBoxServicePageSharingInspectModules(ProcessInfo.th32ProcessID, &pNewTree);
     377            vgsvcPageSharingInspectModules(ProcessInfo.th32ProcessID, &pNewTree);
    362378    }
    363379    while (Process32Next(hSnapshot, &ProcessInfo));
     
    375391        if (!cbBuffer)
    376392        {
    377             VBoxServiceVerbose(1, "ZwQuerySystemInformation returned length 0\n");
     393            VGSvcVerbose(1, "ZwQuerySystemInformation returned length 0\n");
    378394            goto skipkernelmodules;
    379395        }
     
    386402        if (ret != STATUS_SUCCESS)
    387403        {
    388             VBoxServiceVerbose(1, "ZwQuerySystemInformation returned %x (1)\n", ret);
     404            VGSvcVerbose(1, "ZwQuerySystemInformation returned %x (1)\n", ret);
    389405            goto skipkernelmodules;
    390406        }
     
    393409        for (unsigned i = 0; i < pSystemModules->NumberOfModules; i++)
    394410        {
    395             VBoxServiceVerbose(4, "\n\n   KERNEL  MODULE NAME:     %s",    pSystemModules->Modules[i].FullPathName[pSystemModules->Modules[i].OffsetToFileName] );
    396             VBoxServiceVerbose(4, "\n     executable     = %s",             pSystemModules->Modules[i].FullPathName );
    397             VBoxServiceVerbose(4, "\n     flags          = 0x%08X\n",       pSystemModules->Modules[i].Flags);
     411            VGSvcVerbose(4, "\n\n   KERNEL  MODULE NAME:     %s", pSystemModules->Modules[i].FullPathName[pSystemModules->Modules[i].OffsetToFileName] );
     412            VGSvcVerbose(4, "\n     executable     = %s",         pSystemModules->Modules[i].FullPathName );
     413            VGSvcVerbose(4, "\n     flags          = 0x%08X\n",   pSystemModules->Modules[i].Flags);
    398414
    399415            /* User-mode modules seem to have no flags set; skip them as we detected them above. */
     
    409425                {
    410426                    /* New module; register it. */
    411                     char          szFullFilePath[512];
    412                     PKNOWN_MODULE pModule = (PKNOWN_MODULE)RTMemAllocZ(sizeof(*pModule));
     427                    char szFullFilePath[512];
     428                    PVGSVCPGSHKNOWNMOD pModule = (PVGSVCPGSHKNOWNMOD)RTMemAllocZ(sizeof(*pModule));
    413429                    Assert(pModule);
    414430                    if (!pModule)
    415431                        break;
    416432
     433/** @todo Use unicode APIs! */
    417434                    strcpy(pModule->Info.szModule, &pSystemModules->Modules[i].FullPathName[pSystemModules->Modules[i].OffsetToFileName]);
    418435                    GetSystemDirectoryA(szFullFilePath, sizeof(szFullFilePath));
     
    425442                        strcat(szFullFilePath, "\\");
    426443                        strcat(szFullFilePath, pSystemModules->Modules[i].FullPathName);
    427                         VBoxServiceVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
     444                        VGSvcVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
    428445                        if (RTFileExists(szFullFilePath) == false)
    429446                        {
     
    431448                            strcat(szFullFilePath, "\\drivers\\");
    432449                            strcat(szFullFilePath, pSystemModules->Modules[i].FullPathName);
    433                             VBoxServiceVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
     450                            VGSvcVerbose(3, "Unexpected kernel module name try %s\n", szFullFilePath);
    434451                            if (RTFileExists(szFullFilePath) == false)
    435452                            {
    436                                 VBoxServiceVerbose(1, "Unexpected kernel module name %s\n", pSystemModules->Modules[i].FullPathName);
     453                                VGSvcVerbose(1, "Unexpected kernel module name %s\n", pSystemModules->Modules[i].FullPathName);
    437454                                RTMemFree(pModule);
    438455                                continue;
     
    445462                        if (!lpPath)
    446463                        {
    447                             VBoxServiceVerbose(1, "Unexpected kernel module name %s (2)\n", pSystemModules->Modules[i].FullPathName);
     464                            VGSvcVerbose(1, "Unexpected kernel module name %s (2)\n", pSystemModules->Modules[i].FullPathName);
    448465                            RTMemFree(pModule);
    449466                            continue;
     
    458475
    459476                    pModule->Core.Key = pSystemModules->Modules[i].ImageBase;
    460                     VBoxServicePageSharingRegisterModule(pModule, false /* don't check memory pages */);
    461 
    462                     VBoxServiceVerbose(3, "\n\n   KERNEL  MODULE NAME:     %s",     pModule->Info.szModule );
    463                     VBoxServiceVerbose(3, "\n     executable     = %s",             pModule->Info.szExePath );
    464                     VBoxServiceVerbose(3, "\n     base address   = 0x%08X", (DWORD) pModule->Info.modBaseAddr );
    465                     VBoxServiceVerbose(3, "\n     flags          = 0x%08X",         pSystemModules->Modules[i].Flags);
    466                     VBoxServiceVerbose(3, "\n     base size      = %d",             pModule->Info.modBaseSize );
     477                    vgsvcPageSharingRegisterModule(pModule, false /* don't check memory pages */);
     478
     479                    VGSvcVerbose(3, "\n\n   KERNEL  MODULE NAME:     %s",     pModule->Info.szModule );
     480                    VGSvcVerbose(3, "\n     executable     = %s",             pModule->Info.szExePath );
     481                    VGSvcVerbose(3, "\n     base address   = 0x%08X", (DWORD) pModule->Info.modBaseAddr );
     482                    VGSvcVerbose(3, "\n     flags          = 0x%08X",         pSystemModules->Modules[i].Flags);
     483                    VGSvcVerbose(3, "\n     base size      = %d",             pModule->Info.modBaseSize );
    467484
    468485                    pRec = &pModule->Core;
     
    478495
    479496    /* Delete leftover modules in the old tree. */
    480     RTAvlPVDestroy(&g_pKnownModuleTree, VBoxServicePageSharingEmptyTreeCallback, NULL);
     497    RTAvlPVDestroy(&g_pKnownModuleTree, vgsvcPageSharingEmptyTreeCallback, NULL);
    481498
    482499    /* Check all registered modules. */
     
    487504}
    488505
     506
    489507/**
    490508 * RTAvlPVDestroy callback.
    491509 */
    492 static DECLCALLBACK(int) VBoxServicePageSharingEmptyTreeCallback(PAVLPVNODECORE pNode, void *pvUser)
    493 {
    494     PKNOWN_MODULE pModule = (PKNOWN_MODULE)pNode;
     510static DECLCALLBACK(int) vgsvcPageSharingEmptyTreeCallback(PAVLPVNODECORE pNode, void *pvUser)
     511{
     512    PVGSVCPGSHKNOWNMOD pModule = (PVGSVCPGSHKNOWNMOD)pNode;
    495513    bool *pfUnregister = (bool *)pvUser;
    496514
    497     VBoxServiceVerbose(3, "VBoxServicePageSharingEmptyTreeCallback %s %s\n", pModule->Info.szModule, pModule->szFileVersion);
     515    VGSvcVerbose(3, "vgsvcPageSharingEmptyTreeCallback %s %s\n", pModule->Info.szModule, pModule->szFileVersion);
    498516
    499517    /* Dereference module in the hypervisor. */
     
    514532
    515533#elif TARGET_NT4
    516 static void VBoxServicePageSharingInspectGuest(void)
     534
     535static void vgsvcPageSharingInspectGuest(void)
    517536{
    518537    /* not implemented */
    519538}
     539
    520540#else
    521 static void VBoxServicePageSharingInspectGuest(void)
     541
     542static void vgsvcPageSharingInspectGuest(void)
    522543{
    523544    /** @todo other platforms */
    524545}
     546
    525547#endif
    526548
    527 /** @copydoc VBOXSERVICE::pfnInit */
    528 static DECLCALLBACK(int) VBoxServicePageSharingInit(void)
    529 {
    530     VBoxServiceVerbose(3, "VBoxServicePageSharingInit\n");
     549/** @interface_method_impl{VBOXSERVICE,pfnInit} */
     550static DECLCALLBACK(int) vgsvcPageSharingInit(void)
     551{
     552    VGSvcVerbose(3, "vgsvcPageSharingInit\n");
    531553
    532554    int rc = RTSemEventMultiCreate(&g_PageSharingEvent);
     
    540562    {
    541563        if (rc == VERR_IO_GEN_FAILURE)
    542             VBoxServiceVerbose(0, "PageSharing: Page sharing support is not available by the host\n");
     564            VGSvcVerbose(0, "PageSharing: Page sharing support is not available by the host\n");
    543565        else
    544             VBoxServiceError("VBoxServicePageSharingInit: Failed with rc=%Rrc\n", rc);
     566            VGSvcError("vgsvcPageSharingInit: Failed with rc=%Rrc\n", rc);
    545567
    546568        rc = VERR_SERVICE_DISABLED;
     
    555577}
    556578
    557 /** @copydoc VBOXSERVICE::pfnWorker */
    558 DECLCALLBACK(int) VBoxServicePageSharingWorker(bool volatile *pfShutdown)
     579
     580/**
     581 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     582 */
     583static DECLCALLBACK(int) vgsvcPageSharingWorker(bool volatile *pfShutdown)
    559584{
    560585    /*
     
    569594    for (;;)
    570595    {
    571         BOOL fEnabled = VbglR3PageSharingIsEnabled();
    572 
    573         VBoxServiceVerbose(3, "VBoxServicePageSharingWorker: enabled=%d\n", fEnabled);
     596        bool fEnabled = VbglR3PageSharingIsEnabled();
     597        VGSvcVerbose(3, "vgsvcPageSharingWorker: enabled=%d\n", fEnabled);
    574598
    575599        if (fEnabled)
    576             VBoxServicePageSharingInspectGuest();
     600            vgsvcPageSharingInspectGuest();
    577601
    578602        /*
     
    589613        if (rc != VERR_TIMEOUT && RT_FAILURE(rc))
    590614        {
    591             VBoxServiceError("VBoxServicePageSharingWorker: RTSemEventMultiWait failed; rc=%Rrc\n", rc);
     615            VGSvcError("vgsvcPageSharingWorker: RTSemEventMultiWait failed; rc=%Rrc\n", rc);
    592616            break;
    593617        }
     
    601625            bool fUnregister = false;
    602626
    603             VBoxServiceVerbose(3, "VBoxServicePageSharingWorker: VM was restored!!\n");
     627            VGSvcVerbose(3, "vgsvcPageSharingWorker: VM was restored!!\n");
    604628            /* The VM was restored, so reregister all modules the next time. */
    605             RTAvlPVDestroy(&g_pKnownModuleTree, VBoxServicePageSharingEmptyTreeCallback, &fUnregister);
     629            RTAvlPVDestroy(&g_pKnownModuleTree, vgsvcPageSharingEmptyTreeCallback, &fUnregister);
    606630            g_pKnownModuleTree = NULL;
    607631
     
    614638    g_PageSharingEvent = NIL_RTSEMEVENTMULTI;
    615639
    616     VBoxServiceVerbose(3, "VBoxServicePageSharingWorker: finished thread\n");
     640    VGSvcVerbose(3, "vgsvcPageSharingWorker: finished thread\n");
    617641    return 0;
    618642}
     
    622646/**
    623647 * This gets control when VBoxService is launched with "pagefusion" by
    624  * VBoxServicePageSharingWorkerProcess().
     648 * vgsvcPageSharingWorkerProcess().
    625649 *
    626650 * @returns RTEXITCODE_SUCCESS.
     
    629653 *          via RTProcTerminate().
    630654 */
    631 RTEXITCODE VBoxServicePageSharingWorkerChild(void)
    632 {
    633     VBoxServiceVerbose(3, "VBoxServicePageSharingInitFork\n");
     655RTEXITCODE VGSvcPageSharingWorkerChild(void)
     656{
     657    VGSvcVerbose(3, "vgsvcPageSharingInitFork\n");
    634658
    635659    bool fShutdown = false;
    636     VBoxServicePageSharingInit();
    637     VBoxServicePageSharingWorker(&fShutdown);
     660    vgsvcPageSharingInit();
     661    vgsvcPageSharingWorker(&fShutdown);
    638662
    639663    return RTEXITCODE_SUCCESS;
    640664}
    641665
    642 /** @copydoc VBOXSERVICE::pfnWorker */
    643 DECLCALLBACK(int) VBoxServicePageSharingWorkerProcess(bool volatile *pfShutdown)
     666
     667/**
     668 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     669 */
     670static DECLCALLBACK(int) vgsvcPageSharingWorkerProcess(bool volatile *pfShutdown)
    644671{
    645672    RTPROCESS hProcess = NIL_RTPROCESS;
     
    657684    for (;;)
    658685    {
    659         BOOL fEnabled = VbglR3PageSharingIsEnabled();
    660         VBoxServiceVerbose(3, "VBoxServicePageSharingWorkerProcess: enabled=%d\n", fEnabled);
     686        bool fEnabled = VbglR3PageSharingIsEnabled();
     687        VGSvcVerbose(3, "vgsvcPageSharingWorkerProcess: enabled=%d\n", fEnabled);
    661688
    662689        /*
     
    678705                rc = RTProcCreate(pszExeName, papszArgs, RTENV_DEFAULT, 0 /* normal child */, &hProcess);
    679706                if (RT_FAILURE(rc))
    680                     VBoxServiceError("VBoxServicePageSharingWorkerProcess: RTProcCreate %s failed; rc=%Rrc\n", pszExeName, rc);
     707                    VGSvcError("vgsvcPageSharingWorkerProcess: RTProcCreate %s failed; rc=%Rrc\n", pszExeName, rc);
    681708            }
    682709        }
     
    695722        if (rc != VERR_TIMEOUT && RT_FAILURE(rc))
    696723        {
    697             VBoxServiceError("VBoxServicePageSharingWorkerProcess: RTSemEventMultiWait failed; rc=%Rrc\n", rc);
     724            VGSvcError("vgsvcPageSharingWorkerProcess: RTSemEventMultiWait failed; rc=%Rrc\n", rc);
    698725            break;
    699726        }
     
    706733    g_PageSharingEvent = NIL_RTSEMEVENTMULTI;
    707734
    708     VBoxServiceVerbose(3, "VBoxServicePageSharingWorkerProcess: finished thread\n");
     735    VGSvcVerbose(3, "vgsvcPageSharingWorkerProcess: finished thread\n");
    709736    return 0;
    710737}
     
    712739#endif /* RT_OS_WINDOWS */
    713740
    714 /** @copydoc VBOXSERVICE::pfnStop */
    715 static DECLCALLBACK(void) VBoxServicePageSharingStop(void)
     741/**
     742 * @interface_method_impl{VBOXSERVICE,pfnStop}
     743 */
     744static DECLCALLBACK(void) vgsvcPageSharingStop(void)
    716745{
    717746    RTSemEventMultiSignal(g_PageSharingEvent);
     
    733762    NULL,
    734763    /* methods */
    735     VBoxServiceDefaultPreInit,
    736     VBoxServiceDefaultOption,
    737     VBoxServicePageSharingInit,
     764    VGSvcDefaultPreInit,
     765    VGSvcDefaultOption,
     766    vgsvcPageSharingInit,
    738767#ifdef RT_OS_WINDOWS
    739     VBoxServicePageSharingWorkerProcess,
     768    vgsvcPageSharingWorkerProcess,
    740769#else
    741     VBoxServicePageSharingWorker,
     770    vgsvcPageSharingWorker,
    742771#endif
    743     VBoxServicePageSharingStop,
    744     VBoxServiceDefaultTerm
     772    vgsvcPageSharingStop,
     773    VGSvcDefaultTerm
    745774};
     775
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServicePropCache.cpp

    r57358 r58029  
    3131
    3232
    33 /** Internal functions, not for public use. */
    34 PVBOXSERVICEVEPROPCACHEENTRY vboxServicePropCacheFindInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, uint32_t uFlags);
    35 PVBOXSERVICEVEPROPCACHEENTRY vboxServicePropCacheInsertEntryInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName);
    36 
    3733
    3834/** @todo Docs */
    39 PVBOXSERVICEVEPROPCACHEENTRY vboxServicePropCacheFindInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, uint32_t uFlags)
     35static PVBOXSERVICEVEPROPCACHEENTRY vgsvcPropCacheFindInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName,
     36                                                               uint32_t fFlags)
    4037{
    4138    AssertPtrReturn(pCache, NULL);
     
    6562
    6663/** @todo Docs */
    67 PVBOXSERVICEVEPROPCACHEENTRY vboxServicePropCacheInsertEntryInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName)
     64static PVBOXSERVICEVEPROPCACHEENTRY vgsvcPropCacheInsertEntryInternal(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName)
    6865{
    6966    AssertPtrReturn(pCache, NULL);
     
    8683        if (RT_SUCCESS(rc))
    8784        {
    88             /*rc =*/ RTListAppend(&pCache->NodeHead, &pNode->NodeSucc);
     85            RTListAppend(&pCache->NodeHead, &pNode->NodeSucc);
    8986            rc = RTCritSectLeave(&pCache->CritSect);
    9087        }
     
    9592
    9693/** @todo Docs */
    97 int vboxServicePropCacheWritePropF(uint32_t u32ClientId, const char *pszName, uint32_t fFlags, const char *pszValueFormat, ...)
     94static int vgsvcPropCacheWritePropF(uint32_t u32ClientId, const char *pszName, uint32_t fFlags, const char *pszValueFormat, ...)
    9895{
    9996    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
     
    108105        if (RTStrAPrintfV(&pszValue, pszValueFormat, va) >= 0)
    109106        {
    110             if (fFlags & VBOXSERVICEPROPCACHEFLAG_TRANSIENT)
     107            if (fFlags & VGSVCPROPCACHE_FLAGS_TRANSIENT)
    111108            {
    112109                /*
     
    135132    }
    136133    else
    137     {
    138134        rc = VbglR3GuestPropWriteValue(u32ClientId, pszName, NULL);
    139     }
    140135    return rc;
    141136}
     
    149144 * @param   uClientId       The HGCM handle of to the guest property service.
    150145 */
    151 int VBoxServicePropCacheCreate(PVBOXSERVICEVEPROPCACHE pCache, uint32_t uClientId)
     146int VGSvcPropCacheCreate(PVBOXSERVICEVEPROPCACHE pCache, uint32_t uClientId)
    152147{
    153148    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    162157/**
    163158 * Updates a cache entry without submitting any changes to the host.
     159 *
    164160 * This is handy for defining default values/flags.
    165161 *
     
    171167 * @param   pszValueReset   The property reset value.
    172168 */
    173 int VBoxServicePropCacheUpdateEntry(PVBOXSERVICEVEPROPCACHE pCache,
    174                                     const char *pszName, uint32_t fFlags, const char *pszValueReset)
     169int VGSvcPropCacheUpdateEntry(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, uint32_t fFlags, const char *pszValueReset)
    175170{
    176171    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
    177172    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
    178     PVBOXSERVICEVEPROPCACHEENTRY pNode = vboxServicePropCacheFindInternal(pCache, pszName, 0);
     173    PVBOXSERVICEVEPROPCACHEENTRY pNode = vgsvcPropCacheFindInternal(pCache, pszName, 0);
    179174    if (pNode == NULL)
    180         pNode = vboxServicePropCacheInsertEntryInternal(pCache, pszName);
     175        pNode = vgsvcPropCacheInsertEntryInternal(pCache, pszName);
    181176
    182177    int rc;
     
    214209 * @param   ...             Format arguments.
    215210 */
    216 int VBoxServicePropCacheUpdate(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, const char *pszValueFormat, ...)
     211int VGSvcPropCacheUpdate(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, const char *pszValueFormat, ...)
    217212{
    218213    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    235230    }
    236231
    237     PVBOXSERVICEVEPROPCACHEENTRY pNode = vboxServicePropCacheFindInternal(pCache, pszName, 0);
     232    PVBOXSERVICEVEPROPCACHEENTRY pNode = vgsvcPropCacheFindInternal(pCache, pszName, 0);
    238233
    239234    /* Lock the cache. */
     
    242237    {
    243238        if (pNode == NULL)
    244             pNode = vboxServicePropCacheInsertEntryInternal(pCache, pszName);
     239            pNode = vgsvcPropCacheInsertEntryInternal(pCache, pszName);
    245240
    246241        AssertPtr(pNode);
     
    249244            bool fUpdate = false;
    250245            /* Always update this property, no matter what? */
    251             if (pNode->fFlags & VBOXSERVICEPROPCACHEFLAG_ALWAYS_UPDATE)
     246            if (pNode->fFlags & VGSVCPROPCACHE_FLAGS_ALWAYS_UPDATE)
    252247                fUpdate = true;
    253248            /* Did the value change so we have to update? */
     
    261256            {
    262257                /* Write the update. */
    263                 rc = vboxServicePropCacheWritePropF(pCache->uClientID, pNode->pszName, pNode->fFlags, pszValue);
    264                 VBoxServiceVerbose(4, "[PropCache %p]: Written \"%s\"=\"%s\" (flags: %x), rc=%Rrc\n",
     258                rc = vgsvcPropCacheWritePropF(pCache->uClientID, pNode->pszName, pNode->fFlags, pszValue);
     259                VGSvcVerbose(4, "[PropCache %p]: Written '%s'='%s' (flags: %x), rc=%Rrc\n",
    265260                                   pCache, pNode->pszName, pszValue, pNode->fFlags, rc);
    266261                if (RT_SUCCESS(rc)) /* Only update the node's value on successful write. */
     
    280275            if (pNode->pszValue) /* Did we have a value before? Then the value needs to be deleted. */
    281276            {
    282                 rc = vboxServicePropCacheWritePropF(pCache->uClientID, pNode->pszName,
     277                rc = vgsvcPropCacheWritePropF(pCache->uClientID, pNode->pszName,
    283278                                                    0, /* Flags */ NULL /* Value */);
    284                 VBoxServiceVerbose(4, "[PropCache %p]: Deleted \"%s\"=\"%s\" (flags: %x), rc=%Rrc\n",
     279                VGSvcVerbose(4, "[PropCache %p]: Deleted '%s'='%s' (flags: %x), rc=%Rrc\n",
    285280                                   pCache, pNode->pszName, pNode->pszValue, pNode->fFlags, rc);
    286281                if (RT_SUCCESS(rc)) /* Only delete property value on successful Vbgl deletion. */
     
    299294    }
    300295
    301     VBoxServiceVerbose(4, "[PropCache %p]: Updating \"%s\" resulted in rc=%Rrc\n",
    302                        pCache, pszName, rc);
     296    VGSvcVerbose(4, "[PropCache %p]: Updating '%s' resulted in rc=%Rrc\n", pCache, pszName, rc);
    303297
    304298    /* Delete temp stuff. */
     
    320314 * @param   ...             Format arguments.
    321315 */
    322 int VBoxServicePropCacheUpdateByPath(PVBOXSERVICEVEPROPCACHE pCache, const char *pszValue, uint32_t fFlags, const char *pszPathFormat, ...)
     316int VGSvcPropCacheUpdateByPath(PVBOXSERVICEVEPROPCACHE pCache, const char *pszValue, uint32_t fFlags,
     317                               const char *pszPathFormat, ...)
    323318{
    324319    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    349344                {
    350345                    /** @todo Use some internal function to update the node directly, this is slow atm. */
    351                     rc = VBoxServicePropCacheUpdate(pCache, pNodeIt->pszName, pszValue);
     346                    rc = VGSvcPropCacheUpdate(pCache, pNodeIt->pszName, pszValue);
    352347                }
    353348                if (RT_FAILURE(rc))
     
    367362 * @param   pCache          The property cache.
    368363 */
    369 int VBoxServicePropCacheFlush(PVBOXSERVICEVEPROPCACHE pCache)
     364int VGSvcPropCacheFlush(PVBOXSERVICEVEPROPCACHE pCache)
    370365{
    371366    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    377372        RTListForEach(&pCache->NodeHead, pNodeIt, VBOXSERVICEVEPROPCACHEENTRY, NodeSucc)
    378373        {
    379             rc = vboxServicePropCacheWritePropF(pCache->uClientID, pNodeIt->pszName,
    380                                                 pNodeIt->fFlags, pNodeIt->pszValue);
     374            rc = vgsvcPropCacheWritePropF(pCache->uClientID, pNodeIt->pszName, pNodeIt->fFlags, pNodeIt->pszValue);
    381375            if (RT_FAILURE(rc))
    382376                break;
     
    393387 * @param   pCache          The property cache.
    394388 */
    395 void VBoxServicePropCacheDestroy(PVBOXSERVICEVEPROPCACHE pCache)
     389void VGSvcPropCacheDestroy(PVBOXSERVICEVEPROPCACHE pCache)
    396390{
    397391    AssertPtrReturnVoid(pCache);
     
    411405            RTListNodeRemove(&pNode->NodeSucc);
    412406
    413             if (pNode->fFlags & VBOXSERVICEPROPCACHEFLAG_TEMPORARY)
    414             {
    415                 rc = vboxServicePropCacheWritePropF(pCache->uClientID, pNode->pszName,
    416                                                     pNode->fFlags, pNode->pszValueReset);
    417             }
     407            if (pNode->fFlags & VGSVCPROPCACHE_FLAGS_TEMPORARY)
     408                rc = vgsvcPropCacheWritePropF(pCache->uClientID, pNode->pszName, pNode->fFlags, pNode->pszValueReset);
    418409
    419410            AssertPtr(pNode->pszName);
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServicePropCache.h

    r56294 r58029  
    2121#include "VBoxServiceInternal.h"
    2222
    23 # ifdef VBOX_WITH_GUEST_PROPS
     23#ifdef VBOX_WITH_GUEST_PROPS
    2424
     25/** @name VGSVCPROPCACHE_FLAG_XXX - Guest Property Cache Flags.
     26 * @{ */
    2527/** Indicates wheter a guest property is temporary and either should
    2628 *  - a) get a "reset" value assigned (via VBoxServicePropCacheUpdateEntry)
     
    2830 *  - b) get deleted when no reset value is specified.
    2931 */
    30 #define VBOXSERVICEPROPCACHEFLAG_TEMPORARY              RT_BIT(1)
     32# define VGSVCPROPCACHE_FLAGS_TEMPORARY             RT_BIT(1)
    3133/** Indicates whether a property every time needs to be updated, regardless
    3234 *  if its real value changed or not. */
    33 #define VBOXSERVICEPROPCACHEFLAG_ALWAYS_UPDATE          RT_BIT(2)
     35# define VGSVCPROPCACHE_FLAGS_ALWAYS_UPDATE         RT_BIT(2)
    3436/** The guest property gets deleted when
    3537 *  - a) the property cache gets destroyed, or
    3638 *  - b) the VM gets reset / shutdown / destroyed.
    3739 */
    38 #define VBOXSERVICEPROPCACHEFLAG_TRANSIENT              RT_BIT(3)
     40# define VGSVCPROPCACHE_FLAGS_TRANSIENT             RT_BIT(3)
     41/** @}  */
    3942
    40 int VBoxServicePropCacheCreate(PVBOXSERVICEVEPROPCACHE pCache, uint32_t uClientId);
    41 int VBoxServicePropCacheUpdateEntry(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, uint32_t fFlags, const char *pszValueReset);
    42 int VBoxServicePropCacheUpdate(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, const char *pszValueFormat, ...);
    43 int VBoxServicePropCacheUpdateByPath(PVBOXSERVICEVEPROPCACHE pCache, const char *pszValue, uint32_t fFlags, const char *pszPathFormat, ...);
    44 int VBoxServicePropCacheFlush(PVBOXSERVICEVEPROPCACHE pCache);
    45 void VBoxServicePropCacheDestroy(PVBOXSERVICEVEPROPCACHE pCache);
    46 # endif /* VBOX_WITH_GUEST_PROPS */
     43int  VGSvcPropCacheCreate(PVBOXSERVICEVEPROPCACHE pCache, uint32_t uClientId);
     44int  VGSvcPropCacheUpdateEntry(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, uint32_t fFlags, const char *pszValueReset);
     45int  VGSvcPropCacheUpdate(PVBOXSERVICEVEPROPCACHE pCache, const char *pszName, const char *pszValueFormat, ...);
     46int  VGSvcPropCacheUpdateByPath(PVBOXSERVICEVEPROPCACHE pCache, const char *pszValue, uint32_t fFlags,
     47                                const char *pszPathFormat, ...);
     48int  VGSvcPropCacheFlush(PVBOXSERVICEVEPROPCACHE pCache);
     49void VGSvcPropCacheDestroy(PVBOXSERVICEVEPROPCACHE pCache);
     50#endif /* VBOX_WITH_GUEST_PROPS */
    4751
    48 #endif  /* ___VBoxServicePropCache_h */
     52#endif
    4953
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceStats.cpp

    r57358 r58029  
    6262typedef struct _VBOXSTATSCONTEXT
    6363{
    64     RTMSINTERVAL          cMsStatInterval;
    65 
    66     uint64_t              au64LastCpuLoad_Idle[VMM_MAX_CPU_COUNT];
    67     uint64_t              au64LastCpuLoad_Kernel[VMM_MAX_CPU_COUNT];
    68     uint64_t              au64LastCpuLoad_User[VMM_MAX_CPU_COUNT];
    69     uint64_t              au64LastCpuLoad_Nice[VMM_MAX_CPU_COUNT];
     64    RTMSINTERVAL    cMsStatInterval;
     65
     66    uint64_t        au64LastCpuLoad_Idle[VMM_MAX_CPU_COUNT];
     67    uint64_t        au64LastCpuLoad_Kernel[VMM_MAX_CPU_COUNT];
     68    uint64_t        au64LastCpuLoad_User[VMM_MAX_CPU_COUNT];
     69    uint64_t        au64LastCpuLoad_Nice[VMM_MAX_CPU_COUNT];
    7070
    7171#ifdef RT_OS_WINDOWS
    72     NTSTATUS (WINAPI *pfnNtQuerySystemInformation)(SYSTEM_INFORMATION_CLASS SystemInformationClass, PVOID SystemInformation, ULONG SystemInformationLength, PULONG ReturnLength);
     72    NTSTATUS (WINAPI *pfnNtQuerySystemInformation)(SYSTEM_INFORMATION_CLASS SystemInformationClass, PVOID SystemInformation,
     73                                                   ULONG SystemInformationLength, PULONG ReturnLength);
    7374    void     (WINAPI *pfnGlobalMemoryStatusEx)(LPMEMORYSTATUSEX lpBuffer);
    7475    BOOL     (WINAPI *pfnGetPerformanceInfo)(PPERFORMANCE_INFORMATION pPerformanceInformation, DWORD cb);
     
    8081*   Global Variables                                                                                                             *
    8182*********************************************************************************************************************************/
    82 static VBOXSTATSCONTEXT gCtx = {0};
     83/** Global data. */
     84static VBOXSTATSCONTEXT g_VMStat = {0};
    8385
    8486/** The semaphore we're blocking on. */
     
    8688
    8789
    88 /** @copydoc VBOXSERVICE::pfnInit */
    89 static DECLCALLBACK(int) VBoxServiceVMStatsInit(void)
     90/**
     91 * @interface_method_impl{VBOXSERVICE,pfnInit}
     92 */
     93static DECLCALLBACK(int) vgsvcVMStatsInit(void)
    9094{
    91     VBoxServiceVerbose(3, "VBoxServiceVMStatsInit\n");
     95    VGSvcVerbose(3, "vgsvcVMStatsInit\n");
    9296
    9397    int rc = RTSemEventMultiCreate(&g_VMStatEvent);
    9498    AssertRCReturn(rc, rc);
    9599
    96     gCtx.cMsStatInterval        = 0;     /* default; update disabled */
    97     RT_ZERO(gCtx.au64LastCpuLoad_Idle);
    98     RT_ZERO(gCtx.au64LastCpuLoad_Kernel);
    99     RT_ZERO(gCtx.au64LastCpuLoad_User);
    100     RT_ZERO(gCtx.au64LastCpuLoad_Nice);
    101 
    102     rc = VbglR3StatQueryInterval(&gCtx.cMsStatInterval);
     100    g_VMStat.cMsStatInterval        = 0;     /* default; update disabled */
     101    RT_ZERO(g_VMStat.au64LastCpuLoad_Idle);
     102    RT_ZERO(g_VMStat.au64LastCpuLoad_Kernel);
     103    RT_ZERO(g_VMStat.au64LastCpuLoad_User);
     104    RT_ZERO(g_VMStat.au64LastCpuLoad_Nice);
     105
     106    rc = VbglR3StatQueryInterval(&g_VMStat.cMsStatInterval);
    103107    if (RT_SUCCESS(rc))
    104         VBoxServiceVerbose(3, "VBoxStatsInit: New statistics interval %u seconds\n", gCtx.cMsStatInterval);
     108        VGSvcVerbose(3, "vgsvcVMStatsInit: New statistics interval %u seconds\n", g_VMStat.cMsStatInterval);
    105109    else
    106         VBoxServiceVerbose(3, "VBoxStatsInit: DeviceIoControl failed with %d\n", rc);
     110        VGSvcVerbose(3, "vgsvcVMStatsInit: DeviceIoControl failed with %d\n", rc);
    107111
    108112#ifdef RT_OS_WINDOWS
    109113    /* NtQuerySystemInformation might be dropped in future releases, so load
    110114       it dynamically as per Microsoft's recommendation. */
    111     *(void **)&gCtx.pfnNtQuerySystemInformation = RTLdrGetSystemSymbol("ntdll.dll", "NtQuerySystemInformation");
    112     if (gCtx.pfnNtQuerySystemInformation)
    113         VBoxServiceVerbose(3, "VBoxStatsInit: gCtx.pfnNtQuerySystemInformation = %x\n", gCtx.pfnNtQuerySystemInformation);
     115    *(void **)&g_VMStat.pfnNtQuerySystemInformation = RTLdrGetSystemSymbol("ntdll.dll", "NtQuerySystemInformation");
     116    if (g_VMStat.pfnNtQuerySystemInformation)
     117        VGSvcVerbose(3, "vgsvcVMStatsInit: g_VMStat.pfnNtQuerySystemInformation = %x\n", g_VMStat.pfnNtQuerySystemInformation);
    114118    else
    115119    {
    116         VBoxServiceVerbose(3, "VBoxStatsInit: ntdll.NtQuerySystemInformation not found!\n");
     120        VGSvcVerbose(3, "vgsvcVMStatsInit: ntdll.NtQuerySystemInformation not found!\n");
    117121        return VERR_SERVICE_DISABLED;
    118122    }
    119123
    120124    /* GlobalMemoryStatus is win2k and up, so load it dynamically */
    121     *(void **)&gCtx.pfnGlobalMemoryStatusEx = RTLdrGetSystemSymbol("kernel32.dll", "GlobalMemoryStatusEx");
    122     if (gCtx.pfnGlobalMemoryStatusEx)
    123         VBoxServiceVerbose(3, "VBoxStatsInit: gCtx.GlobalMemoryStatusEx = %x\n", gCtx.pfnGlobalMemoryStatusEx);
     125    *(void **)&g_VMStat.pfnGlobalMemoryStatusEx = RTLdrGetSystemSymbol("kernel32.dll", "GlobalMemoryStatusEx");
     126    if (g_VMStat.pfnGlobalMemoryStatusEx)
     127        VGSvcVerbose(3, "vgsvcVMStatsInit: g_VMStat.GlobalMemoryStatusEx = %x\n", g_VMStat.pfnGlobalMemoryStatusEx);
    124128    else
    125129    {
    126130        /** @todo Now fails in NT4; do we care? */
    127         VBoxServiceVerbose(3, "VBoxStatsInit: kernel32.GlobalMemoryStatusEx not found!\n");
     131        VGSvcVerbose(3, "vgsvcVMStatsInit: kernel32.GlobalMemoryStatusEx not found!\n");
    128132        return VERR_SERVICE_DISABLED;
    129133    }
    130134
    131135    /* GetPerformanceInfo is xp and up, so load it dynamically */
    132     *(void **)&gCtx.pfnGetPerformanceInfo = RTLdrGetSystemSymbol("psapi.dll", "GetPerformanceInfo");
    133     if (gCtx.pfnGetPerformanceInfo)
    134         VBoxServiceVerbose(3, "VBoxStatsInit: gCtx.pfnGetPerformanceInfo= %x\n", gCtx.pfnGetPerformanceInfo);
     136    *(void **)&g_VMStat.pfnGetPerformanceInfo = RTLdrGetSystemSymbol("psapi.dll", "GetPerformanceInfo");
     137    if (g_VMStat.pfnGetPerformanceInfo)
     138        VGSvcVerbose(3, "vgsvcVMStatsInit: g_VMStat.pfnGetPerformanceInfo= %x\n", g_VMStat.pfnGetPerformanceInfo);
    135139#endif /* RT_OS_WINDOWS */
    136140
     
    142146 * Gathers VM statistics and reports them to the host.
    143147 */
    144 static void VBoxServiceVMStatsReport(void)
     148static void vgsvcVMStatsReport(void)
    145149{
    146150#if defined(RT_OS_WINDOWS)
    147     SYSTEM_INFO systemInfo;
    148     PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION pProcInfo;
    149     MEMORYSTATUSEX memStatus;
    150     uint32_t cbStruct;
    151     DWORD    cbReturned;
    152 
    153     Assert(gCtx.pfnGlobalMemoryStatusEx && gCtx.pfnNtQuerySystemInformation);
    154     if (    !gCtx.pfnGlobalMemoryStatusEx
    155         ||  !gCtx.pfnNtQuerySystemInformation)
     151    Assert(g_VMStat.pfnGlobalMemoryStatusEx && g_VMStat.pfnNtQuerySystemInformation);
     152    if (   !g_VMStat.pfnGlobalMemoryStatusEx
     153        || !g_VMStat.pfnNtQuerySystemInformation)
    156154        return;
    157155
     
    162160
    163161    /* Query and report guest statistics */
     162    SYSTEM_INFO systemInfo;
    164163    GetSystemInfo(&systemInfo);
    165164
     165    MEMORYSTATUSEX memStatus;
    166166    memStatus.dwLength = sizeof(memStatus);
    167     gCtx.pfnGlobalMemoryStatusEx(&memStatus);
     167    g_VMStat.pfnGlobalMemoryStatusEx(&memStatus);
    168168
    169169    req.guestStats.u32PageSize          = systemInfo.dwPageSize;
     
    178178                                        | VBOX_GUEST_STAT_PAGE_FILE_SIZE
    179179                                        | VBOX_GUEST_STAT_MEMORY_LOAD;
    180 #ifdef VBOX_WITH_MEMBALLOON
    181     req.guestStats.u32PhysMemBalloon    = VBoxServiceBalloonQueryPages(_4K);
     180# ifdef VBOX_WITH_MEMBALLOON
     181    req.guestStats.u32PhysMemBalloon    = VGSvcBalloonQueryPages(_4K);
    182182    req.guestStats.u32StatCaps         |= VBOX_GUEST_STAT_PHYS_MEM_BALLOON;
    183 #else
     183# else
    184184    req.guestStats.u32PhysMemBalloon    = 0;
    185 #endif
    186 
    187     if (gCtx.pfnGetPerformanceInfo)
     185# endif
     186
     187    if (g_VMStat.pfnGetPerformanceInfo)
    188188    {
    189189        PERFORMANCE_INFORMATION perfInfo;
    190190
    191         if (gCtx.pfnGetPerformanceInfo(&perfInfo, sizeof(perfInfo)))
     191        if (g_VMStat.pfnGetPerformanceInfo(&perfInfo, sizeof(perfInfo)))
    192192        {
    193193            req.guestStats.u32Processes         = perfInfo.ProcessCount;
     
    200200            req.guestStats.u32MemSystemCache    = perfInfo.SystemCache;     /* already in pages */
    201201            req.guestStats.u32StatCaps |= VBOX_GUEST_STAT_PROCESSES | VBOX_GUEST_STAT_THREADS | VBOX_GUEST_STAT_HANDLES
    202                                         | VBOX_GUEST_STAT_MEM_COMMIT_TOTAL | VBOX_GUEST_STAT_MEM_KERNEL_TOTAL
    203                                         | VBOX_GUEST_STAT_MEM_KERNEL_PAGED | VBOX_GUEST_STAT_MEM_KERNEL_NONPAGED
    204                                         | VBOX_GUEST_STAT_MEM_SYSTEM_CACHE;
     202                                       | VBOX_GUEST_STAT_MEM_COMMIT_TOTAL | VBOX_GUEST_STAT_MEM_KERNEL_TOTAL
     203                                       | VBOX_GUEST_STAT_MEM_KERNEL_PAGED | VBOX_GUEST_STAT_MEM_KERNEL_NONPAGED
     204                                       | VBOX_GUEST_STAT_MEM_SYSTEM_CACHE;
    205205        }
    206206        else
    207             VBoxServiceVerbose(3, "VBoxServiceVMStatsReport: GetPerformanceInfo failed with %d\n", GetLastError());
     207            VGSvcVerbose(3, "vgsvcVMStatsReport: GetPerformanceInfo failed with %d\n", GetLastError());
    208208    }
    209209
    210210    /* Query CPU load information */
    211     cbStruct = systemInfo.dwNumberOfProcessors * sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION);
     211    uint32_t cbStruct = systemInfo.dwNumberOfProcessors * sizeof(SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION);
     212    PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION pProcInfo;
    212213    pProcInfo = (PSYSTEM_PROCESSOR_PERFORMANCE_INFORMATION)RTMemAlloc(cbStruct);
    213214    if (!pProcInfo)
     
    215216
    216217    /* Unfortunately GetSystemTimes is XP SP1 and up only, so we need to use the semi-undocumented NtQuerySystemInformation */
    217     bool fCpuInfoAvail = false;
    218     NTSTATUS rc = gCtx.pfnNtQuerySystemInformation(SystemProcessorPerformanceInformation, pProcInfo, cbStruct, &cbReturned);
     218    bool  fCpuInfoAvail = false;
     219    DWORD cbReturned;
     220    NTSTATUS rc = g_VMStat.pfnNtQuerySystemInformation(SystemProcessorPerformanceInformation, pProcInfo, cbStruct, &cbReturned);
    219221    if (    !rc
    220222        &&  cbReturned == cbStruct)
     
    224226            if (i >= VMM_MAX_CPU_COUNT)
    225227            {
    226                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: skipping information for CPU%u\n", i);
    227                 continue;
    228             }
    229 
    230             if (gCtx.au64LastCpuLoad_Kernel[i] == 0)
     228                VGSvcVerbose(3, "vgsvcVMStatsReport: skipping information for CPUs %u..%u\n", i, systemInfo.dwNumberOfProcessors);
     229                break;
     230            }
     231
     232            if (g_VMStat.au64LastCpuLoad_Kernel[i] == 0)
    231233            {
    232234                /* first time */
    233                 gCtx.au64LastCpuLoad_Idle[i]    = pProcInfo[i].IdleTime.QuadPart;
    234                 gCtx.au64LastCpuLoad_Kernel[i]  = pProcInfo[i].KernelTime.QuadPart;
    235                 gCtx.au64LastCpuLoad_User[i]    = pProcInfo[i].UserTime.QuadPart;
     235                g_VMStat.au64LastCpuLoad_Idle[i]    = pProcInfo[i].IdleTime.QuadPart;
     236                g_VMStat.au64LastCpuLoad_Kernel[i]  = pProcInfo[i].KernelTime.QuadPart;
     237                g_VMStat.au64LastCpuLoad_User[i]    = pProcInfo[i].UserTime.QuadPart;
    236238
    237239                Sleep(250);
    238240
    239                 rc = gCtx.pfnNtQuerySystemInformation(SystemProcessorPerformanceInformation, pProcInfo, cbStruct, &cbReturned);
     241                rc = g_VMStat.pfnNtQuerySystemInformation(SystemProcessorPerformanceInformation, pProcInfo, cbStruct, &cbReturned);
    240242                Assert(!rc);
    241243            }
    242244
    243             uint64_t deltaIdle    = (pProcInfo[i].IdleTime.QuadPart   - gCtx.au64LastCpuLoad_Idle[i]);
    244             uint64_t deltaKernel  = (pProcInfo[i].KernelTime.QuadPart - gCtx.au64LastCpuLoad_Kernel[i]);
    245             uint64_t deltaUser    = (pProcInfo[i].UserTime.QuadPart   - gCtx.au64LastCpuLoad_User[i]);
     245            uint64_t deltaIdle    = (pProcInfo[i].IdleTime.QuadPart   - g_VMStat.au64LastCpuLoad_Idle[i]);
     246            uint64_t deltaKernel  = (pProcInfo[i].KernelTime.QuadPart - g_VMStat.au64LastCpuLoad_Kernel[i]);
     247            uint64_t deltaUser    = (pProcInfo[i].UserTime.QuadPart   - g_VMStat.au64LastCpuLoad_User[i]);
    246248            deltaKernel          -= deltaIdle;  /* idle time is added to kernel time */
    247249            uint64_t ullTotalTime = deltaIdle + deltaKernel + deltaUser;
     
    249251                ullTotalTime = 1;
    250252
    251             req.guestStats.u32CpuLoad_Idle      = (uint32_t)(deltaIdle  * 100 / ullTotalTime);
    252             req.guestStats.u32CpuLoad_Kernel    = (uint32_t)(deltaKernel* 100 / ullTotalTime);
    253             req.guestStats.u32CpuLoad_User      = (uint32_t)(deltaUser  * 100 / ullTotalTime);
    254 
    255             req.guestStats.u32StatCaps |= VBOX_GUEST_STAT_CPU_LOAD_IDLE | VBOX_GUEST_STAT_CPU_LOAD_KERNEL | VBOX_GUEST_STAT_CPU_LOAD_USER;
    256             req.guestStats.u32CpuId = i;
     253            req.guestStats.u32CpuLoad_Idle   = (uint32_t)(deltaIdle  * 100 / ullTotalTime);
     254            req.guestStats.u32CpuLoad_Kernel = (uint32_t)(deltaKernel* 100 / ullTotalTime);
     255            req.guestStats.u32CpuLoad_User   = (uint32_t)(deltaUser  * 100 / ullTotalTime);
     256
     257            req.guestStats.u32StatCaps      |= VBOX_GUEST_STAT_CPU_LOAD_IDLE | VBOX_GUEST_STAT_CPU_LOAD_KERNEL
     258                                            |  VBOX_GUEST_STAT_CPU_LOAD_USER;
     259            req.guestStats.u32CpuId          = i;
    257260            rc = VbglR3StatReport(&req);
    258261            if (RT_SUCCESS(rc))
    259                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics (CPU %u) reported successfully!\n", i);
     262                VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics (CPU %u) reported successfully!\n", i);
    260263            else
    261                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: DeviceIoControl (stats report) failed with %d\n", GetLastError());
    262 
    263             gCtx.au64LastCpuLoad_Idle[i]   = pProcInfo[i].IdleTime.QuadPart;
    264             gCtx.au64LastCpuLoad_Kernel[i] = pProcInfo[i].KernelTime.QuadPart;
    265             gCtx.au64LastCpuLoad_User[i]   = pProcInfo[i].UserTime.QuadPart;
     264                VGSvcVerbose(3, "vgsvcVMStatsReport: VbglR3StatReport failed with rc=%Rrc\n", rc);
     265
     266            g_VMStat.au64LastCpuLoad_Idle[i]    = pProcInfo[i].IdleTime.QuadPart;
     267            g_VMStat.au64LastCpuLoad_Kernel[i] = pProcInfo[i].KernelTime.QuadPart;
     268            g_VMStat.au64LastCpuLoad_User[i]    = pProcInfo[i].UserTime.QuadPart;
    266269        }
    267270    }
     
    270273    if (!fCpuInfoAvail)
    271274    {
    272         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: CPU info not available!\n");
     275        VGSvcVerbose(3, "vgsvcVMStatsReport: CPU info not available!\n");
    273276        rc = VbglR3StatReport(&req);
    274277        if (RT_SUCCESS(rc))
    275             VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics reported successfully!\n");
     278            VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics reported successfully!\n");
    276279        else
    277             VBoxServiceVerbose(3, "VBoxStatsReportStatistics: stats report failed with rc=%Rrc\n", rc);
     280            VGSvcVerbose(3, "vgsvcVMStatsReport: stats report failed with rc=%Rrc\n", rc);
    278281    }
    279282
     
    333336    }
    334337    else
    335         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: memory info not available!\n");
     338        VGSvcVerbose(3, "vgsvcVMStatsReport: memory info not available!\n");
    336339
    337340    req.guestStats.u32PageSize = getpagesize();
     
    340343                                | VBOX_GUEST_STAT_MEM_SYSTEM_CACHE
    341344                                | VBOX_GUEST_STAT_PAGE_FILE_SIZE;
    342 #ifdef VBOX_WITH_MEMBALLOON
    343     req.guestStats.u32PhysMemBalloon  = VBoxServiceBalloonQueryPages(_4K);
     345# ifdef VBOX_WITH_MEMBALLOON
     346    req.guestStats.u32PhysMemBalloon  = VGSvcBalloonQueryPages(_4K);
    344347    req.guestStats.u32StatCaps       |= VBOX_GUEST_STAT_PHYS_MEM_BALLOON;
    345 #else
     348# else
    346349    req.guestStats.u32PhysMemBalloon  = 0;
    347 #endif
     350# endif
    348351
    349352
     
    390393                        rc = RTStrToUInt64Ex(RTStrStripL(psz), &psz, 0, &u64Idle);
    391394
    392                     uint64_t u64DeltaIdle   = u64Idle   - gCtx.au64LastCpuLoad_Idle[u32CpuId];
    393                     uint64_t u64DeltaSystem = u64System - gCtx.au64LastCpuLoad_Kernel[u32CpuId];
    394                     uint64_t u64DeltaUser   = u64User   - gCtx.au64LastCpuLoad_User[u32CpuId];
    395                     uint64_t u64DeltaNice   = u64Nice   - gCtx.au64LastCpuLoad_Nice[u32CpuId];
     395                    uint64_t u64DeltaIdle   = u64Idle   - g_VMStat.au64LastCpuLoad_Idle[u32CpuId];
     396                    uint64_t u64DeltaSystem = u64System - g_VMStat.au64LastCpuLoad_Kernel[u32CpuId];
     397                    uint64_t u64DeltaUser   = u64User   - g_VMStat.au64LastCpuLoad_User[u32CpuId];
     398                    uint64_t u64DeltaNice   = u64Nice   - g_VMStat.au64LastCpuLoad_Nice[u32CpuId];
    396399
    397400                    uint64_t u64DeltaAll    = u64DeltaIdle
     
    402405                        u64DeltaAll = 1;
    403406
    404                     gCtx.au64LastCpuLoad_Idle[u32CpuId]   = u64Idle;
    405                     gCtx.au64LastCpuLoad_Kernel[u32CpuId] = u64System;
    406                     gCtx.au64LastCpuLoad_User[u32CpuId]   = u64User;
    407                     gCtx.au64LastCpuLoad_Nice[u32CpuId]   = u64Nice;
     407                    g_VMStat.au64LastCpuLoad_Idle[u32CpuId]   = u64Idle;
     408                    g_VMStat.au64LastCpuLoad_Kernel[u32CpuId] = u64System;
     409                    g_VMStat.au64LastCpuLoad_User[u32CpuId]   = u64User;
     410                    g_VMStat.au64LastCpuLoad_Nice[u32CpuId]   = u64Nice;
    408411
    409412                    req.guestStats.u32CpuId = u32CpuId;
     
    418421                    rc = VbglR3StatReport(&req);
    419422                    if (RT_SUCCESS(rc))
    420                         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics (CPU %u) reported successfully!\n", u32CpuId);
     423                        VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics (CPU %u) reported successfully!\n", u32CpuId);
    421424                    else
    422                         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: stats report failed with rc=%Rrc\n", rc);
     425                        VGSvcVerbose(3, "vgsvcVMStatsReport: stats report failed with rc=%Rrc\n", rc);
    423426                }
    424427                else
    425                     VBoxServiceVerbose(3, "VBoxStatsReportStatistics: skipping information for CPU%u\n", u32CpuId);
     428                    VGSvcVerbose(3, "vgsvcVMStatsReport: skipping information for CPU%u\n", u32CpuId);
    426429            }
    427430        }
     
    430433    if (!fCpuInfoAvail)
    431434    {
    432         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: CPU info not available!\n");
     435        VGSvcVerbose(3, "vgsvcVMStatsReport: CPU info not available!\n");
    433436        rc = VbglR3StatReport(&req);
    434437        if (RT_SUCCESS(rc))
    435             VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics reported successfully!\n");
     438            VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics reported successfully!\n");
    436439        else
    437             VBoxServiceVerbose(3, "VBoxStatsReportStatistics: stats report failed with rc=%Rrc\n", rc);
     440            VGSvcVerbose(3, "vgsvcVMStatsReport: stats report failed with rc=%Rrc\n", rc);
    438441    }
    439442
     
    522525                                   | VBOX_GUEST_STAT_PAGE_FILE_SIZE;
    523526#ifdef VBOX_WITH_MEMBALLOON
    524         req.guestStats.u32PhysMemBalloon  = VBoxServiceBalloonQueryPages(_4K);
     527        req.guestStats.u32PhysMemBalloon  = VGSvcBalloonQueryPages(_4K);
    525528        req.guestStats.u32StatCaps       |= VBOX_GUEST_STAT_PHYS_MEM_BALLOON;
    526529#else
     
    544547                    break;
    545548
    546                 if (cCPUs >= VMM_MAX_CPU_COUNT)
    547                     VBoxServiceVerbose(3, "VBoxStatsReportStatistics: skipping information for CPU%u\n", cCPUs);
    548                 else
     549                if (cCPUs < VMM_MAX_CPU_COUNT)
    549550                {
    550551                    uint64_t u64Idle   = StatCPU.cpu_sysinfo.cpu[CPU_IDLE];
     
    552553                    uint64_t u64System = StatCPU.cpu_sysinfo.cpu[CPU_KERNEL];
    553554
    554                     uint64_t u64DeltaIdle   = u64Idle   - gCtx.au64LastCpuLoad_Idle[cCPUs];
    555                     uint64_t u64DeltaSystem = u64System - gCtx.au64LastCpuLoad_Kernel[cCPUs];
    556                     uint64_t u64DeltaUser   = u64User   - gCtx.au64LastCpuLoad_User[cCPUs];
     555                    uint64_t u64DeltaIdle   = u64Idle   - g_VMStat.au64LastCpuLoad_Idle[cCPUs];
     556                    uint64_t u64DeltaSystem = u64System - g_VMStat.au64LastCpuLoad_Kernel[cCPUs];
     557                    uint64_t u64DeltaUser   = u64User   - g_VMStat.au64LastCpuLoad_User[cCPUs];
    557558
    558559                    uint64_t u64DeltaAll    = u64DeltaIdle + u64DeltaSystem + u64DeltaUser;
     
    560561                        u64DeltaAll = 1;
    561562
    562                     gCtx.au64LastCpuLoad_Idle[cCPUs]   = u64Idle;
    563                     gCtx.au64LastCpuLoad_Kernel[cCPUs] = u64System;
    564                     gCtx.au64LastCpuLoad_User[cCPUs]   = u64User;
     563                    g_VMStat.au64LastCpuLoad_Idle[cCPUs]   = u64Idle;
     564                    g_VMStat.au64LastCpuLoad_Kernel[cCPUs] = u64System;
     565                    g_VMStat.au64LastCpuLoad_User[cCPUs]   = u64User;
    565566
    566567                    req.guestStats.u32CpuId = cCPUs;
     
    576577                    rc = VbglR3StatReport(&req);
    577578                    if (RT_SUCCESS(rc))
    578                         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics (CPU %u) reported successfully!\n", cCPUs);
     579                        VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics (CPU %u) reported successfully!\n", cCPUs);
    579580                    else
    580                         VBoxServiceVerbose(3, "VBoxStatsReportStatistics: stats report failed with rc=%Rrc\n", rc);
     581                        VGSvcVerbose(3, "vgsvcVMStatsReport: stats report failed with rc=%Rrc\n", rc);
    581582                    cCPUs++;
    582583                }
     584                else
     585                    VGSvcVerbose(3, "vgsvcVMStatsReport: skipping information for CPU%u\n", cCPUs);
    583586            }
    584587        }
     
    589592        if (!fCpuInfoAvail)
    590593        {
    591             VBoxServiceVerbose(3, "VBoxStatsReportStatistics: CPU info not available!\n");
     594            VGSvcVerbose(3, "vgsvcVMStatsReport: CPU info not available!\n");
    592595            rc = VbglR3StatReport(&req);
    593596            if (RT_SUCCESS(rc))
    594                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: new statistics reported successfully!\n");
     597                VGSvcVerbose(3, "vgsvcVMStatsReport: new statistics reported successfully!\n");
    595598            else
    596                 VBoxServiceVerbose(3, "VBoxStatsReportStatistics: stats report failed with rc=%Rrc\n", rc);
     599                VGSvcVerbose(3, "vgsvcVMStatsReport: stats report failed with rc=%Rrc\n", rc);
    597600        }
    598601
     
    606609}
    607610
    608 /** @copydoc VBOXSERVICE::pfnWorker */
    609 DECLCALLBACK(int) VBoxServiceVMStatsWorker(bool volatile *pfShutdown)
     611
     612/**
     613 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     614 */
     615DECLCALLBACK(int) vgsvcVMStatsWorker(bool volatile *pfShutdown)
    610616{
    611617    int rc = VINF_SUCCESS;
     
    615621    if (RT_FAILURE(rc))
    616622    {
    617         VBoxServiceVerbose(3, "VBoxServiceVMStatsWorker: VbglR3CtlFilterMask failed with %d\n", rc);
     623        VGSvcVerbose(3, "vgsvcVMStatsWorker: VbglR3CtlFilterMask failed with %d\n", rc);
    618624        return rc;
    619625    }
     
    637643        if (    RT_SUCCESS(rc)
    638644            &&  (fEvents & VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST))
    639         {
    640             VbglR3StatQueryInterval(&gCtx.cMsStatInterval);
    641         }
    642 
    643         if (gCtx.cMsStatInterval)
    644         {
    645             VBoxServiceVMStatsReport();
    646             cWaitMillies = gCtx.cMsStatInterval;
     645            VbglR3StatQueryInterval(&g_VMStat.cMsStatInterval);
     646
     647        if (g_VMStat.cMsStatInterval)
     648        {
     649            vgsvcVMStatsReport();
     650            cWaitMillies = g_VMStat.cMsStatInterval;
    647651        }
    648652        else
     
    662666        if (rc2 != VERR_TIMEOUT && RT_FAILURE(rc2))
    663667        {
    664             VBoxServiceError("VBoxServiceVMStatsWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
     668            VGSvcError("vgsvcVMStatsWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
    665669            rc = rc2;
    666670            break;
     
    671675    rc = VbglR3CtlFilterMask(0, VMMDEV_EVENT_STATISTICS_INTERVAL_CHANGE_REQUEST);
    672676    if (RT_FAILURE(rc))
    673         VBoxServiceVerbose(3, "VBoxServiceVMStatsWorker: VbglR3CtlFilterMask failed with %d\n", rc);
     677        VGSvcVerbose(3, "vgsvcVMStatsWorker: VbglR3CtlFilterMask failed with %d\n", rc);
    674678
    675679    RTSemEventMultiDestroy(g_VMStatEvent);
    676680    g_VMStatEvent = NIL_RTSEMEVENTMULTI;
    677681
    678     VBoxServiceVerbose(3, "VBoxStatsThread: finished statistics change request thread\n");
     682    VGSvcVerbose(3, "VBoxStatsThread: finished statistics change request thread\n");
    679683    return 0;
    680684}
    681685
    682686
    683 /** @copydoc VBOXSERVICE::pfnStop */
    684 static DECLCALLBACK(void) VBoxServiceVMStatsStop(void)
     687/**
     688 * @interface_method_impl{VBOXSERVICE,pfnStop}
     689 */
     690static DECLCALLBACK(void) vgsvcVMStatsStop(void)
    685691{
    686692    RTSemEventMultiSignal(g_VMStatEvent);
     
    702708    NULL,
    703709    /* methods */
    704     VBoxServiceDefaultPreInit,
    705     VBoxServiceDefaultOption,
    706     VBoxServiceVMStatsInit,
    707     VBoxServiceVMStatsWorker,
    708     VBoxServiceVMStatsStop,
    709     VBoxServiceDefaultTerm
     710    VGSvcDefaultPreInit,
     711    VGSvcDefaultOption,
     712    vgsvcVMStatsInit,
     713    vgsvcVMStatsWorker,
     714    vgsvcVMStatsStop,
     715    VGSvcDefaultTerm
    710716};
    711717
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceTimeSync.cpp

    r57358 r58029  
    8383#ifdef RT_OS_WINDOWS
    8484# include <Windows.h>
    85 # include <winbase.h> /** @todo r=bird: Why is this here? Windows.h should include winbase.h... */
    8685#else
    8786# include <unistd.h>
     
    105104*********************************************************************************************************************************/
    106105/** The timesync interval (milliseconds). */
    107 uint32_t g_TimeSyncInterval = 0;
     106static uint32_t        g_TimeSyncInterval = 0;
    108107/**
    109108 * @see pg_vboxservice_timesync
    110109 *
    111110 * @remark  OS/2: There is either a 1 second resolution on the DosSetDateTime
    112  *                API or a but in the settimeofday implementation. Thus, don't
     111 *                API or a bug in my settimeofday implementation. Thus, don't
    113112 *                bother unless there is at least a 1 second drift.
    114113 */
    115114#ifdef RT_OS_OS2
    116 static uint32_t g_TimeSyncMinAdjust = 1000;
     115static uint32_t         g_TimeSyncMinAdjust = 1000;
    117116#else
    118 static uint32_t g_TimeSyncMinAdjust = 100;
     117static uint32_t         g_TimeSyncMinAdjust = 100;
    119118#endif
    120119/** @see pg_vboxservice_timesync */
    121 static uint32_t g_TimeSyncLatencyFactor = 8;
     120static uint32_t         g_TimeSyncLatencyFactor = 8;
    122121/** @see pg_vboxservice_timesync */
    123 static uint32_t g_TimeSyncMaxLatency = 250;
     122static uint32_t         g_TimeSyncMaxLatency = 250;
    124123/** @see pg_vboxservice_timesync */
    125 static uint32_t g_TimeSyncSetThreshold = 20*60*1000;
     124static uint32_t         g_TimeSyncSetThreshold = 20*60*1000;
    126125/** Whether the next adjustment should just set the time instead of trying to
    127126 * adjust it. This is used to implement --timesync-set-start.  */
    128 static bool volatile g_fTimeSyncSetNext = false;
     127static bool volatile    g_fTimeSyncSetNext = false;
    129128/** Whether to set the time when the VM was restored. */
    130 static bool g_fTimeSyncSetOnRestore = true;
     129static bool             g_fTimeSyncSetOnRestore = true;
    131130
    132131/** Current error count. Used to knowing when to bitch and when not to. */
    133 static uint32_t g_cTimeSyncErrors = 0;
     132static uint32_t         g_cTimeSyncErrors = 0;
    134133
    135134/** The semaphore we're blocking on. */
    136 static RTSEMEVENTMULTI g_TimeSyncEvent = NIL_RTSEMEVENTMULTI;
     135static RTSEMEVENTMULTI  g_TimeSyncEvent = NIL_RTSEMEVENTMULTI;
    137136
    138137/** The VM session ID. Changes whenever the VM is restored or reset. */
    139 static uint64_t g_idTimeSyncSession;
     138static uint64_t         g_idTimeSyncSession;
    140139
    141140#ifdef RT_OS_WINDOWS
    142141/** Process token. */
    143 static HANDLE g_hTokenProcess = NULL;
     142static HANDLE           g_hTokenProcess = NULL;
    144143/** Old token privileges. */
    145144static TOKEN_PRIVILEGES g_TkOldPrivileges;
    146145/** Backup values for time adjustment. */
    147 static DWORD g_dwWinTimeAdjustment;
    148 static DWORD g_dwWinTimeIncrement;
    149 static BOOL g_bWinTimeAdjustmentDisabled;
     146static DWORD            g_dwWinTimeAdjustment;
     147static DWORD            g_dwWinTimeIncrement;
     148static BOOL             g_bWinTimeAdjustmentDisabled;
    150149#endif
    151150
    152151
    153 /** @copydoc VBOXSERVICE::pfnPreInit */
    154 static DECLCALLBACK(int) VBoxServiceTimeSyncPreInit(void)
     152/**
     153 * @interface_method_impl{VBOXSERVICE,pfnPreInit}
     154 */
     155static DECLCALLBACK(int) vgsvcTimeSyncPreInit(void)
    155156{
    156157#ifdef VBOX_WITH_GUEST_PROPS
    157     /** @todo Merge this function with VBoxServiceTimeSyncOption() to generalize
     158    /** @todo Merge this function with vgsvcTimeSyncOption() to generalize
    158159     *        the "command line args override guest property values" behavior. */
    159160
     
    168169        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
    169170        {
    170             VBoxServiceVerbose(0, "VMInfo: Guest property service is not available, skipping\n");
     171            VGSvcVerbose(0, "VMInfo: Guest property service is not available, skipping\n");
    171172            rc = VINF_SUCCESS;
    172173        }
    173174        else
    174             VBoxServiceError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
     175            VGSvcError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
    175176    }
    176177    else
    177178    {
    178         rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-interval",
    179                                        &g_TimeSyncInterval, 50, UINT32_MAX - 1);
     179        rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-interval",
     180                                 &g_TimeSyncInterval, 50, UINT32_MAX - 1);
    180181        if (   RT_SUCCESS(rc)
    181182            || rc == VERR_NOT_FOUND)
    182         {
    183             rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust",
    184                                            &g_TimeSyncMinAdjust, 0, 3600000);
    185         }
     183            rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-min-adjust",
     184                                     &g_TimeSyncMinAdjust, 0, 3600000);
    186185        if (   RT_SUCCESS(rc)
    187186            || rc == VERR_NOT_FOUND)
    188         {
    189             rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-latency-factor",
    190                                            &g_TimeSyncLatencyFactor, 1, 1024);
    191         }
     187            rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-latency-factor",
     188                                     &g_TimeSyncLatencyFactor, 1, 1024);
    192189        if (   RT_SUCCESS(rc)
    193190            || rc == VERR_NOT_FOUND)
    194         {
    195             rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-max-latency",
    196                                            &g_TimeSyncMaxLatency, 1, 3600000);
    197         }
     191            rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-max-latency",
     192                                     &g_TimeSyncMaxLatency, 1, 3600000);
    198193        if (   RT_SUCCESS(rc)
    199194            || rc == VERR_NOT_FOUND)
    200         {
    201             rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold",
    202                                            &g_TimeSyncSetThreshold, 0, 7*24*60*60*1000 /* a week */);
    203         }
     195            rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold",
     196                                     &g_TimeSyncSetThreshold, 0, 7*24*60*60*1000 /* a week */);
    204197        if (   RT_SUCCESS(rc)
    205198            || rc == VERR_NOT_FOUND)
    206199        {
    207200            char *pszValue;
    208             rc = VBoxServiceReadProp(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-start",
    209                                      &pszValue, NULL /* ppszFlags */, NULL /* puTimestamp */);
     201            rc = VGSvcReadProp(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-start",
     202                               &pszValue, NULL /* ppszFlags */, NULL /* puTimestamp */);
    210203            if (RT_SUCCESS(rc))
    211204            {
     
    218211        {
    219212            uint32_t value;
    220             rc = VBoxServiceReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore",
    221                                            &value, 1, 1);
     213            rc = VGSvcReadPropUInt32(uGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-on-restore",
     214                                     &value, 1, 1);
    222215            if (RT_SUCCESS(rc))
    223216                g_fTimeSyncSetOnRestore = !!value;
     
    237230
    238231
    239 /** @copydoc VBOXSERVICE::pfnOption */
    240 static DECLCALLBACK(int) VBoxServiceTimeSyncOption(const char **ppszShort, int argc, char **argv, int *pi)
     232/**
     233 * @interface_method_impl{VBOXSERVICE,pfnOption}
     234 */
     235static DECLCALLBACK(int) vgsvcTimeSyncOption(const char **ppszShort, int argc, char **argv, int *pi)
    241236{
    242237    int rc = -1;
     
    245240        /* no short options */;
    246241    else if (!strcmp(argv[*pi], "--timesync-interval"))
    247         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    248                                   &g_TimeSyncInterval, 50, UINT32_MAX - 1);
     242        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_TimeSyncInterval, 50, UINT32_MAX - 1);
    249243    else if (!strcmp(argv[*pi], "--timesync-min-adjust"))
    250         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    251                                   &g_TimeSyncMinAdjust, 0, 3600000);
     244        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_TimeSyncMinAdjust, 0, 3600000);
    252245    else if (!strcmp(argv[*pi], "--timesync-latency-factor"))
    253         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    254                                   &g_TimeSyncLatencyFactor, 1, 1024);
     246        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_TimeSyncLatencyFactor, 1, 1024);
    255247    else if (!strcmp(argv[*pi], "--timesync-max-latency"))
    256         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    257                                   &g_TimeSyncMaxLatency, 1, 3600000);
     248        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_TimeSyncMaxLatency, 1, 3600000);
    258249    else if (!strcmp(argv[*pi], "--timesync-set-threshold"))
    259         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    260                                   &g_TimeSyncSetThreshold, 0, 7*24*60*60*1000); /* a week */
     250        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_TimeSyncSetThreshold, 0, 7*24*60*60*1000); /* a week */
    261251    else if (!strcmp(argv[*pi], "--timesync-set-start"))
    262252    {
     
    266256    else if (!strcmp(argv[*pi], "--timesync-set-on-restore"))
    267257    {
    268         rc = VBoxServiceArgUInt32(argc, argv, "", pi, &value, 1, 1);
     258        rc = VGSvcArgUInt32(argc, argv, "", pi, &value, 1, 1);
    269259        if (RT_SUCCESS(rc))
    270260            g_fTimeSyncSetOnRestore = !!value;
     
    275265
    276266
    277 /** @copydoc VBOXSERVICE::pfnInit */
    278 static DECLCALLBACK(int) VBoxServiceTimeSyncInit(void)
     267/**
     268 * @interface_method_impl{VBOXSERVICE,pfnInit}
     269 */
     270static DECLCALLBACK(int) vgsvcTimeSyncInit(void)
    279271{
    280272    /*
     
    313305                    DWORD dwErr = GetLastError();
    314306                    rc = RTErrConvertFromWin32(dwErr);
    315                     VBoxServiceError("VBoxServiceTimeSyncInit: Adjusting token privileges (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n", dwErr, rc);
     307                    VGSvcError("vgsvcTimeSyncInit: Adjusting token privileges (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n",
     308                               dwErr, rc);
    316309                }
    317310            }
     
    320313                DWORD dwErr = GetLastError();
    321314                rc = RTErrConvertFromWin32(dwErr);
    322                 VBoxServiceError("VBoxServiceTimeSyncInit: Looking up token privileges (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n", dwErr, rc);
     315                VGSvcError("vgsvcTimeSyncInit: Looking up token privileges (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n",
     316                           dwErr, rc);
    323317            }
    324318            if (RT_FAILURE(rc))
     
    332326            DWORD dwErr = GetLastError();
    333327            rc = RTErrConvertFromWin32(dwErr);
    334             VBoxServiceError("VBoxServiceTimeSyncInit: Opening process token (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n", dwErr, rc);
     328            VGSvcError("vgsvcTimeSyncInit: Opening process token (SE_SYSTEMTIME_NAME) failed with status code %u/%Rrc!\n",
     329                       dwErr, rc);
    335330            g_hTokenProcess = NULL;
    336331        }
     
    338333
    339334    if (GetSystemTimeAdjustment(&g_dwWinTimeAdjustment, &g_dwWinTimeIncrement, &g_bWinTimeAdjustmentDisabled))
    340         VBoxServiceVerbose(3, "VBoxServiceTimeSyncInit: Initially %ld (100ns) units per %ld (100 ns) units interval, disabled=%d\n",
    341                            g_dwWinTimeAdjustment, g_dwWinTimeIncrement, g_bWinTimeAdjustmentDisabled ? 1 : 0);
     335        VGSvcVerbose(3, "vgsvcTimeSyncInit: Initially %ld (100ns) units per %ld (100 ns) units interval, disabled=%d\n",
     336                     g_dwWinTimeAdjustment, g_dwWinTimeIncrement, g_bWinTimeAdjustmentDisabled ? 1 : 0);
    342337    else
    343338    {
    344339        DWORD dwErr = GetLastError();
    345340        rc = RTErrConvertFromWin32(dwErr);
    346         VBoxServiceError("VBoxServiceTimeSyncInit: Could not get time adjustment values! Last error: %ld!\n", dwErr);
     341        VGSvcError("vgsvcTimeSyncInit: Could not get time adjustment values! Last error: %ld!\n", dwErr);
    347342    }
    348343#endif /* RT_OS_WINDOWS */
     
    359354 * @param   pDrift          The time adjustment.
    360355 */
    361 static bool VBoxServiceTimeSyncAdjust(PCRTTIMESPEC pDrift)
     356static bool vgsvcTimeSyncAdjust(PCRTTIMESPEC pDrift)
    362357{
    363358#ifdef RT_OS_WINDOWS
    364 /** @todo r=bird: NT4 doesn't have GetSystemTimeAdjustment according to MSDN. */
    365359/** @todo r=bird: g_hTokenProcess cannot be NULL here.
    366  *        VBoxServiceTimeSyncInit will fail and the service will not be
    367  *        started with it being NULL.  VBoxServiceTimeSyncInit OTOH will *NOT*
    368  *        be called until the service thread has terminated.  If anything
     360 *        vgsvcTimeSyncInit will fail and the service will not be started with
     361 *        it being NULL.  vgsvcTimeSyncInit OTOH will *NOT* be called until the
     362 *        service thread has terminated.  If anything
    369363 *        else is the case, there is buggy code somewhere.*/
    370364    if (g_hTokenProcess == NULL) /* Is the token already closed when shutting down? */
     
    397391        }
    398392
    399         VBoxServiceVerbose(3, "VBoxServiceTimeSyncAdjust: Drift=%lldms\n", RTTimeSpecGetMilli(pDrift));
    400         VBoxServiceVerbose(3, "VBoxServiceTimeSyncAdjust: OrgTA=%ld, CurTA=%ld, NewTA=%ld, DiffNew=%ld, DiffMax=%ld\n",
    401                            g_dwWinTimeAdjustment, dwWinTimeAdjustment, dwWinNewTimeAdjustment, dwDiffNew, dwDiffMax);
     393        VGSvcVerbose(3, "vgsvcTimeSyncAdjust: Drift=%lldms\n", RTTimeSpecGetMilli(pDrift));
     394        VGSvcVerbose(3, "vgsvcTimeSyncAdjust: OrgTA=%ld, CurTA=%ld, NewTA=%ld, DiffNew=%ld, DiffMax=%ld\n",
     395                     g_dwWinTimeAdjustment, dwWinTimeAdjustment, dwWinNewTimeAdjustment, dwDiffNew, dwDiffMax);
    402396        if (SetSystemTimeAdjustment(dwWinNewTimeAdjustment, FALSE /* Periodic adjustments enabled. */))
    403397        {
     
    407401
    408402        if (g_cTimeSyncErrors++ < 10)
    409              VBoxServiceError("VBoxServiceTimeSyncAdjust: SetSystemTimeAdjustment failed, error=%u\n", GetLastError());
     403             VGSvcError("vgsvcTimeSyncAdjust: SetSystemTimeAdjustment failed, error=%u\n", GetLastError());
    410404    }
    411405    else if (g_cTimeSyncErrors++ < 10)
    412         VBoxServiceError("VBoxServiceTimeSyncAdjust: GetSystemTimeAdjustment failed, error=%ld\n", GetLastError());
     406        VGSvcError("vgsvcTimeSyncAdjust: GetSystemTimeAdjustment failed, error=%ld\n", GetLastError());
    413407
    414408#elif defined(RT_OS_OS2) || defined(RT_OS_HAIKU)
     
    424418    {
    425419        if (g_cVerbosity >= 1)
    426             VBoxServiceVerbose(1, "VBoxServiceTimeSyncAdjust: adjtime by %RDtimespec\n", pDrift);
     420            VGSvcVerbose(1, "vgsvcTimeSyncAdjust: adjtime by %RDtimespec\n", pDrift);
    427421        g_cTimeSyncErrors = 0;
    428422        return true;
     
    438432 * Cancels any pending time adjustment.
    439433 *
    440  * Called when we've caught up and before calls to VBoxServiceTimeSyncSet.
    441  */
    442 static void VBoxServiceTimeSyncCancelAdjust(void)
     434 * Called when we've caught up and before calls to vgsvcTimeSyncSet.
     435 */
     436static void vgsvcTimeSyncCancelAdjust(void)
    443437{
    444438#ifdef RT_OS_WINDOWS
    445439/** @todo r=bird: g_hTokenProcess cannot be NULL here.  See argumentation in
    446  *        VBoxServiceTimeSyncAdjust.  */
     440 *        vgsvcTimeSyncAdjust.  */
    447441    if (g_hTokenProcess == NULL) /* No process token (anymore)? */
    448442        return;
    449443    if (SetSystemTimeAdjustment(0, TRUE /* Periodic adjustments disabled. */))
    450         VBoxServiceVerbose(3, "VBoxServiceTimeSyncCancelAdjust: Windows Time Adjustment is now disabled.\n");
     444        VGSvcVerbose(3, "vgsvcTimeSyncCancelAdjust: Windows Time Adjustment is now disabled.\n");
    451445    else if (g_cTimeSyncErrors++ < 10)
    452         VBoxServiceError("VBoxServiceTimeSyncCancelAdjust: SetSystemTimeAdjustment(,disable) failed, error=%u\n", GetLastError());
     446        VGSvcError("vgsvcTimeSyncCancelAdjust: SetSystemTimeAdjustment(,disable) failed, error=%u\n", GetLastError());
    453447#endif /* !RT_OS_WINDOWS */
    454448}
     
    462456 * @param   pDrift              The time adjustment.
    463457 */
    464 static void VBoxServiceTimeSyncSet(PCRTTIMESPEC pDrift)
     458static void vgsvcTimeSyncSet(PCRTTIMESPEC pDrift)
    465459{
    466460    /*
     
    478472            char        sz[64];
    479473            RTTIME      Time;
    480             VBoxServiceVerbose(1, "time set to %s\n",
    481                                RTTimeToString(RTTimeExplode(&Time, &NewGuestTime), sz, sizeof(sz)));
     474            VGSvcVerbose(1, "time set to %s\n", RTTimeToString(RTTimeExplode(&Time, &NewGuestTime), sz, sizeof(sz)));
    482475#ifdef DEBUG
    483476            RTTIMESPEC  Tmp;
    484477            if (g_cVerbosity >= 3)
    485                 VBoxServiceVerbose(3, "        now %s\n",
    486                                    RTTimeToString(RTTimeExplode(&Time, RTTimeNow(&Tmp)), sz, sizeof(sz)));
     478                VGSvcVerbose(3, "        now %s\n", RTTimeToString(RTTimeExplode(&Time, RTTimeNow(&Tmp)), sz, sizeof(sz)));
    487479#endif
    488480        }
    489481    }
    490482    else if (g_cTimeSyncErrors++ < 10)
    491         VBoxServiceError("VBoxServiceTimeSyncSet: RTTimeSet(%RDtimespec) failed: %Rrc\n", &NewGuestTime, rc);
    492 }
    493 
    494 
    495 /** @copydoc VBOXSERVICE::pfnWorker */
    496 DECLCALLBACK(int) VBoxServiceTimeSyncWorker(bool volatile *pfShutdown)
     483        VGSvcError("vgsvcTimeSyncSet: RTTimeSet(%RDtimespec) failed: %Rrc\n", &NewGuestTime, rc);
     484}
     485
     486
     487/**
     488 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     489 */
     490DECLCALLBACK(int) vgsvcTimeSyncWorker(bool volatile *pfShutdown)
    497491{
    498492    RTTIME Time;
     
    523517            {
    524518                if (g_cTimeSyncErrors++ < 10)
    525                     VBoxServiceError("VBoxServiceTimeSyncWorker: VbglR3GetHostTime failed; rc2=%Rrc\n", rc2);
     519                    VGSvcError("vgsvcTimeSyncWorker: VbglR3GetHostTime failed; rc2=%Rrc\n", rc2);
    526520                break;
    527521            }
     
    544538                    if (idNewSession != g_idTimeSyncSession)
    545539                    {
    546                         VBoxServiceVerbose(3, "VBoxServiceTimeSyncWorker: The VM session ID changed, forcing resync.\n");
     540                        VGSvcVerbose(3, "vgsvcTimeSyncWorker: The VM session ID changed, forcing resync.\n");
    547541                        TimeSyncSetThreshold = 0;
    548542                        g_idTimeSyncSession  = idNewSession;
     
    566560                if (g_cVerbosity >= 3)
    567561                {
    568                     VBoxServiceVerbose(3, "VBoxServiceTimeSyncWorker: Host:    %s    (MinAdjust: %RU32 ms)\n",
    569                                        RTTimeToString(RTTimeExplode(&Time, &HostNow), sz, sizeof(sz)), MinAdjust);
    570                     VBoxServiceVerbose(3, "VBoxServiceTimeSyncWorker: Guest: - %s => %RDtimespec drift\n",
    571                                        RTTimeToString(RTTimeExplode(&Time, &GuestNow), sz, sizeof(sz)),
    572                                        &Drift);
     562                    VGSvcVerbose(3, "vgsvcTimeSyncWorker: Host:    %s    (MinAdjust: %RU32 ms)\n",
     563                                 RTTimeToString(RTTimeExplode(&Time, &HostNow), sz, sizeof(sz)), MinAdjust);
     564                    VGSvcVerbose(3, "vgsvcTimeSyncWorker: Guest: - %s => %RDtimespec drift\n",
     565                                 RTTimeToString(RTTimeExplode(&Time, &GuestNow), sz, sizeof(sz)), &Drift);
    573566                }
    574567
     
    585578                    if (    AbsDriftMilli > TimeSyncSetThreshold
    586579                        ||  g_fTimeSyncSetNext
    587                         ||  !VBoxServiceTimeSyncAdjust(&Drift))
     580                        ||  !vgsvcTimeSyncAdjust(&Drift))
    588581                    {
    589                         VBoxServiceTimeSyncCancelAdjust();
    590                         VBoxServiceTimeSyncSet(&Drift);
     582                        vgsvcTimeSyncCancelAdjust();
     583                        vgsvcTimeSyncSet(&Drift);
    591584                    }
    592585                }
    593586                else
    594                     VBoxServiceTimeSyncCancelAdjust();
     587                    vgsvcTimeSyncCancelAdjust();
    595588                break;
    596589            }
    597             VBoxServiceVerbose(3, "VBoxServiceTimeSyncWorker: %RDtimespec: latency too high (%RDtimespec) sleeping 1s\n", GuestElapsed);
     590            VGSvcVerbose(3, "vgsvcTimeSyncWorker: %RDtimespec: latency too high (%RDtimespec) sleeping 1s\n", GuestElapsed);
    598591            RTThreadSleep(1000);
    599592        } while (--cTries > 0);
     
    615608        if (rc2 != VERR_TIMEOUT && RT_FAILURE(rc2))
    616609        {
    617             VBoxServiceError("VBoxServiceTimeSyncWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
     610            VGSvcError("vgsvcTimeSyncWorker: RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
    618611            rc = rc2;
    619612            break;
     
    621614    }
    622615
    623     VBoxServiceTimeSyncCancelAdjust();
     616    vgsvcTimeSyncCancelAdjust();
    624617    RTSemEventMultiDestroy(g_TimeSyncEvent);
    625618    g_TimeSyncEvent = NIL_RTSEMEVENTMULTI;
     
    628621
    629622
    630 /** @copydoc VBOXSERVICE::pfnStop */
    631 static DECLCALLBACK(void) VBoxServiceTimeSyncStop(void)
     623/**
     624 * @interface_method_impl{VBOXSERVICE,pfnStop}
     625 */
     626static DECLCALLBACK(void) vgsvcTimeSyncStop(void)
    632627{
    633628    RTSemEventMultiSignal(g_TimeSyncEvent);
     
    635630
    636631
    637 /** @copydoc VBOXSERVICE::pfnTerm */
    638 static DECLCALLBACK(void) VBoxServiceTimeSyncTerm(void)
     632/**
     633 * @interface_method_impl{VBOXSERVICE,pfnTerm}
     634 */
     635static DECLCALLBACK(void) vgsvcTimeSyncTerm(void)
    639636{
    640637#ifdef RT_OS_WINDOWS
     
    647644        {
    648645            DWORD dwErr = GetLastError();
    649             VBoxServiceError("VBoxServiceTimeSyncTerm: Restoring token privileges (SE_SYSTEMTIME_NAME) failed with code %u!\n", dwErr);
     646            VGSvcError("vgsvcTimeSyncTerm: Restoring token privileges (SE_SYSTEMTIME_NAME) failed with code %u!\n", dwErr);
    650647        }
    651648        CloseHandle(g_hTokenProcess);
     
    699696    ,
    700697    /* methods */
    701     VBoxServiceTimeSyncPreInit,
    702     VBoxServiceTimeSyncOption,
    703     VBoxServiceTimeSyncInit,
    704     VBoxServiceTimeSyncWorker,
    705     VBoxServiceTimeSyncStop,
    706     VBoxServiceTimeSyncTerm
     698    vgsvcTimeSyncPreInit,
     699    vgsvcTimeSyncOption,
     700    vgsvcTimeSyncInit,
     701    vgsvcTimeSyncWorker,
     702    vgsvcTimeSyncStop,
     703    vgsvcTimeSyncTerm
    707704};
    708705
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceToolBox.cpp

    r57358 r58029  
    106106
    107107
     108
     109
    108110/**
    109111 * Displays a common header for all help text to stdout.
    110112 */
    111 static void VBoxServiceToolboxShowUsageHeader(void)
     113static void vgsvcToolboxShowUsageHeader(void)
    112114{
    113115    RTPrintf(VBOX_PRODUCT " Guest Toolbox Version "
     
    123125 * Displays a help text to stdout.
    124126 */
    125 static void VBoxServiceToolboxShowUsage(void)
    126 {
    127     VBoxServiceToolboxShowUsageHeader();
     127static void vgsvcToolboxShowUsage(void)
     128{
     129    vgsvcToolboxShowUsageHeader();
    128130    RTPrintf("  VBoxService [--use-toolbox] vbox_<command> [<general options>] <parameters>\n\n"
    129131             "General options:\n\n"
     
    151153 * Displays the program's version number.
    152154 */
    153 static void VBoxServiceToolboxShowVersion(void)
     155static void vgsvcToolboxShowVersion(void)
    154156{
    155157    RTPrintf("%sr%d\n", VBOX_VERSION_STRING, RTBldCfgRevision());
     
    162164 * @return  IPRT status code.
    163165 */
    164 static int VBoxServiceToolboxStrmInit(void)
     166static int vgsvcToolboxStrmInit(void)
    165167{
    166168    /* Set stdout's mode to binary. This is required for outputting all the machine-readable
     
    182184 *                                  different stream versions later.
    183185 */
    184 static void VBoxServiceToolboxPrintStrmHeader(const char *pszToolName, uint32_t uVersion)
     186static void vgsvcToolboxPrintStrmHeader(const char *pszToolName, uint32_t uVersion)
    185187{
    186188    AssertPtrReturnVoid(pszToolName);
     
    194196 *
    195197 */
    196 static void VBoxServiceToolboxPrintStrmTermination()
     198static void vgsvcToolboxPrintStrmTermination()
    197199{
    198200    RTPrintf("%c%c%c%c", 0, 0, 0, 0);
     
    204206 * and print an error message and return an error if necessary.
    205207 */
    206 static int vboxServiceToolboxParseMode(const char *pcszMode, RTFMODE *pfMode)
     208static int vgsvcToolboxParseMode(const char *pcszMode, RTFMODE *pfMode)
    207209{
    208210    int rc = RTStrToUInt32Ex(pcszMode, NULL, 8 /* Base */, pfMode);
    209211    if (RT_FAILURE(rc)) /* Only octet based values supported right now! */
    210         RTMsgError("Mode flag strings not implemented yet! Use octal numbers instead. (%s)\n",
    211                    pcszMode);
     212        RTMsgError("Mode flag strings not implemented yet! Use octal numbers instead. (%s)\n", pcszMode);
    212213    return rc;
    213214}
     
    220221 * @param   pList                   Pointer to list to destroy.
    221222 */
    222 static void VBoxServiceToolboxPathBufDestroy(PRTLISTNODE pList)
     223static void vgsvcToolboxPathBufDestroy(PRTLISTNODE pList)
    223224{
    224225    AssertPtr(pList);
     
    247248 * @param   pszName                 Name of entry to add.
    248249 */
    249 static int VBoxServiceToolboxPathBufAddPathEntry(PRTLISTNODE pList, const char *pszName)
     250static int vgsvcToolboxPathBufAddPathEntry(PRTLISTNODE pList, const char *pszName)
    250251{
    251252    AssertPtrReturn(pList, VERR_INVALID_PARAMETER);
     
    258259        AssertPtr(pNode->pszName);
    259260
    260         /*rc =*/ RTListAppend(pList, &pNode->Node);
     261        RTListAppend(pList, &pNode->Node);
    261262    }
    262263    else
     
    275276 *                                  else stdout will be used.
    276277 */
    277 static int VBoxServiceToolboxCatOutput(RTFILE hInput, RTFILE hOutput)
     278static int vgsvcToolboxCatOutput(RTFILE hInput, RTFILE hOutput)
    278279{
    279280    int rc = VINF_SUCCESS;
     
    336337 * @param   argv                    Pointer to argument array.
    337338 */
    338 static RTEXITCODE VBoxServiceToolboxCat(int argc, char **argv)
     339static RTEXITCODE vgsvcToolboxCat(int argc, char **argv)
    339340{
    340341    static const RTGETOPTDEF s_aOptions[] =
     
    360361    RTGETOPTSTATE GetState;
    361362
    362     RTGetOptInit(&GetState, argc, argv,
    363                  s_aOptions, RT_ELEMENTS(s_aOptions),
    364                  1 /*iFirst*/, 0 /*fFlags*/);
     363    RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1 /*iFirst*/, 0 /*fFlags*/);
    365364
    366365    int rc = VINF_SUCCESS;
     
    370369    RTFILE hOutput = NIL_RTFILE;
    371370    uint32_t fFlags = RTFILE_O_CREATE_REPLACE /* Output file flags. */
    372                       | RTFILE_O_WRITE
    373                       | RTFILE_O_DENY_WRITE;
     371                    | RTFILE_O_WRITE
     372                    | RTFILE_O_DENY_WRITE;
    374373
    375374    /* Init directory list. */
     
    398397
    399398            case 'h':
    400                 VBoxServiceToolboxShowUsageHeader();
     399                vgsvcToolboxShowUsageHeader();
    401400                RTPrintf("%s", g_paszCatHelp);
    402401                return RTEXITCODE_SUCCESS;
     
    411410
    412411            case 'V':
    413                 VBoxServiceToolboxShowVersion();
     412                vgsvcToolboxShowVersion();
    414413                return RTEXITCODE_SUCCESS;
    415414
     
    419418
    420419            case VINF_GETOPT_NOT_OPTION:
    421                 {
    422                     /* Add file(s) to buffer. This enables processing multiple paths
    423                      * at once.
    424                      *
    425                      * Since the non-options (RTGETOPTINIT_FLAGS_OPTS_FIRST) come last when
    426                      * processing this loop it's safe to immediately exit on syntax errors
    427                      * or showing the help text (see above). */
    428                     rc = VBoxServiceToolboxPathBufAddPathEntry(&inputList, ValueUnion.psz);
    429                     break;
    430                 }
     420                /* Add file(s) to buffer. This enables processing multiple paths
     421                 * at once.
     422                 *
     423                 * Since the non-options (RTGETOPTINIT_FLAGS_OPTS_FIRST) come last when
     424                 * processing this loop it's safe to immediately exit on syntax errors
     425                 * or showing the help text (see above). */
     426                rc = vgsvcToolboxPathBufAddPathEntry(&inputList, ValueUnion.psz);
     427                break;
    431428
    432429            default:
     
    441438            rc = RTFileOpen(&hOutput, pszOutput, fFlags);
    442439            if (RT_FAILURE(rc))
    443                 RTMsgError("Could not create output file '%s', rc=%Rrc\n",
    444                            pszOutput, rc);
     440                RTMsgError("Could not create output file '%s', rc=%Rrc\n", pszOutput, rc);
    445441        }
    446442
     
    456452                if (RT_SUCCESS(rc))
    457453                {
    458                     rc = VBoxServiceToolboxCatOutput(hInput, hOutput);
     454                    rc = vgsvcToolboxCatOutput(hInput, hOutput);
    459455                    RTFileClose(hInput);
    460456                }
     
    463459                    PCRTSTATUSMSG pMsg = RTErrGet(rc);
    464460                    if (pMsg)
    465                         RTMsgError("Could not open input file '%s': %s\n",
    466                                    pNodeIt->pszName, pMsg->pszMsgFull);
     461                        RTMsgError("Could not open input file '%s': %s\n", pNodeIt->pszName, pMsg->pszMsgFull);
    467462                    else
    468463                        RTMsgError("Could not open input file '%s', rc=%Rrc\n", pNodeIt->pszName, rc);
     
    475470            /* If not input files were defined, process stdin. */
    476471            if (RTListNodeIsFirst(&inputList, &inputList))
    477                 rc = VBoxServiceToolboxCatOutput(hInput, hOutput);
     472                rc = vgsvcToolboxCatOutput(hInput, hOutput);
    478473        }
    479474    }
     
    481476    if (hOutput != NIL_RTFILE)
    482477        RTFileClose(hOutput);
    483     VBoxServiceToolboxPathBufDestroy(&inputList);
     478    vgsvcToolboxPathBufDestroy(&inputList);
    484479
    485480    return RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
     
    491486 *
    492487 * @return  IPRT status code.
    493  * @param   pszName                     Object name.
    494  * @param   cbName                      Size of object name.
    495  * @param   uOutputFlags                Output / handling flags of type VBOXSERVICETOOLBOXOUTPUTFLAG.
    496  * @param   pObjInfo                    Pointer to object information.
    497  */
    498 static int VBoxServiceToolboxPrintFsInfo(const char *pszName, uint16_t cbName,
    499                                          uint32_t uOutputFlags,
    500                                          PRTFSOBJINFO pObjInfo)
     488 * @param   pszName         Object name.
     489 * @param   cbName          Size of object name.
     490 * @param   fOutputFlags    Output / handling flags of type
     491 *                          VBOXSERVICETOOLBOXOUTPUTFLAG.
     492 * @param   pObjInfo        Pointer to object information.
     493 */
     494static int vgsvcToolboxPrintFsInfo(const char *pszName, size_t cbName, uint32_t fOutputFlags, PRTFSOBJINFO pObjInfo)
    501495{
    502496    AssertPtrReturn(pszName, VERR_INVALID_POINTER);
     
    520514    /** @todo sticy bits++ */
    521515
    522     if (!(uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_LONG))
    523     {
    524         if (uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
     516    if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_LONG))
     517    {
     518        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
    525519        {
    526520            /** @todo Skip node_id if not present/available! */
    527             RTPrintf("ftype=%c%cnode_id=%RU64%cname_len=%RU16%cname=%s%c",
     521            RTPrintf("ftype=%c%cnode_id=%RU64%cname_len=%zu%cname=%s%c",
    528522                     chFileType, 0, (uint64_t)pObjInfo->Attr.u.Unix.INodeId, 0,
    529523                     cbName, 0, pszName, 0);
    530524        }
    531525        else
    532             RTPrintf("%c %#18llx %3d %s\n",
     526            RTPrintf("%c %#18llx %3zu %s\n",
    533527                     chFileType, (uint64_t)pObjInfo->Attr.u.Unix.INodeId, cbName, pszName);
    534528
    535         if (uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* End of data block. */
     529        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* End of data block. */
    536530            RTPrintf("%c%c", 0, 0);
    537531    }
    538532    else
    539533    {
    540         if (uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
     534        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
    541535        {
    542536            RTPrintf("ftype=%c%c", chFileType, 0);
     
    591585                     szTimeModification, 0,
    592586                     szTimeAccess, 0);
    593             RTPrintf("cname_len=%RU16%cname=%s%c",
     587            RTPrintf("cname_len=%zu%cname=%s%c",
    594588                     cbName, 0, pszName, 0);
    595589
     
    637631                     RTTimeSpecGetNano(&pObjInfo->ModificationTime), /** @todo really ns? */
    638632                     RTTimeSpecGetNano(&pObjInfo->AccessTime)); /** @todo really ns? */
    639             RTPrintf(" %2d %s\n", cbName, pszName);
     633            RTPrintf(" %2zu %s\n", cbName, pszName);
    640634        }
    641635    }
     
    651645 * @return  IPRT status code.
    652646 * @param   pszDir                  Directory (path) to ouptut.
    653  * @param   uFlags                  Flags of type VBOXSERVICETOOLBOXLSFLAG.
    654  * @param   uOutputFlags            Flags of type  VBOXSERVICETOOLBOXOUTPUTFLAG.
    655  */
    656 static int VBoxServiceToolboxLsHandleDir(const char *pszDir,
    657                                          uint32_t uFlags, uint32_t uOutputFlags)
     647 * @param   fFlags                  Flags of type VBOXSERVICETOOLBOXLSFLAG.
     648 * @param   fOutputFlags            Flags of type  VBOXSERVICETOOLBOXOUTPUTFLAG.
     649 */
     650static int vgsvcToolboxLsHandleDir(const char *pszDir, uint32_t fFlags, uint32_t fOutputFlags)
    658651{
    659652    AssertPtrReturn(pszDir, VERR_INVALID_PARAMETER);
    660653
    661     if (uFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
     654    if (fFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
    662655        RTPrintf("dname=%s%c", pszDir, 0);
    663     else if (uFlags & VBOXSERVICETOOLBOXLSFLAG_RECURSIVE)
     656    else if (fFlags & VBOXSERVICETOOLBOXLSFLAG_RECURSIVE)
    664657        RTPrintf("%s:\n", pszDir);
    665658
     
    668661    if (RT_FAILURE(rc))
    669662    {
    670         if (!(uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
     663        if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    671664            RTMsgError("Failed to retrieve absolute path of '%s', rc=%Rrc\n", pszDir, rc);
    672665        return rc;
     
    677670    if (RT_FAILURE(rc))
    678671    {
    679         if (!(uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
     672        if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    680673            RTMsgError("Failed to open directory '%s', rc=%Rrc\n", szPathAbs, rc);
    681674        return rc;
     
    699692            {
    700693                memcpy(&pNode->dirEntry, &DirEntry, sizeof(RTDIRENTRYEX));
    701                 /*rc =*/ RTListAppend(&dirList, &pNode->Node);
     694                RTListAppend(&dirList, &pNode->Node);
    702695            }
    703696            else
     
    712705    if (RT_FAILURE(rc2))
    713706    {
    714         if (!(uOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    715             RTMsgError("Failed to close dir '%s', rc=%Rrc\n",
    716                        pszDir, rc2);
     707        if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
     708            RTMsgError("Failed to close dir '%s', rc=%Rrc\n", pszDir, rc2);
    717709        if (RT_SUCCESS(rc))
    718710            rc = rc2;
     
    724716        RTListForEach(&dirList, pNodeIt, VBOXSERVICETOOLBOXDIRENTRY, Node)
    725717        {
    726             rc = VBoxServiceToolboxPrintFsInfo(pNodeIt->dirEntry.szName, pNodeIt->dirEntry.cbName,
    727                                                uOutputFlags,
    728                                                &pNodeIt->dirEntry.Info);
     718            rc = vgsvcToolboxPrintFsInfo(pNodeIt->dirEntry.szName, pNodeIt->dirEntry.cbName,
     719                                         fOutputFlags, &pNodeIt->dirEntry.Info);
    729720            if (RT_FAILURE(rc))
    730721                break;
     
    733724        /* If everything went fine we do the second run (if needed) ... */
    734725        if (   RT_SUCCESS(rc)
    735             && (uFlags & VBOXSERVICETOOLBOXLSFLAG_RECURSIVE))
     726            && (fFlags & VBOXSERVICETOOLBOXLSFLAG_RECURSIVE))
    736727        {
    737728            /* Process all sub-directories. */
     
    742733                {
    743734                    case RTFS_TYPE_SYMLINK:
    744                         if (!(uFlags & VBOXSERVICETOOLBOXLSFLAG_SYMLINKS))
     735                        if (!(fFlags & VBOXSERVICETOOLBOXLSFLAG_SYMLINKS))
    745736                            break;
    746737                        /* Fall through is intentional. */
    747738                    case RTFS_TYPE_DIRECTORY:
     739                    {
     740                        const char *pszName = pNodeIt->dirEntry.szName;
     741                        if (   !RTStrICmp(pszName, ".")
     742                            || !RTStrICmp(pszName, ".."))
    748743                        {
    749                             const char *pszName = pNodeIt->dirEntry.szName;
    750                             if (   !RTStrICmp(pszName, ".")
    751                                 || !RTStrICmp(pszName, ".."))
    752                             {
    753                                 /* Skip dot directories. */
    754                                 continue;
    755                             }
    756 
    757                             char szPath[RTPATH_MAX];
    758                             rc = RTPathJoin(szPath, sizeof(szPath),
    759                                             pszDir, pNodeIt->dirEntry.szName);
    760                             if (RT_SUCCESS(rc))
    761                                 rc = VBoxServiceToolboxLsHandleDir(szPath,
    762                                                                    uFlags, uOutputFlags);
     744                            /* Skip dot directories. */
     745                            continue;
    763746                        }
     747
     748                        char szPath[RTPATH_MAX];
     749                        rc = RTPathJoin(szPath, sizeof(szPath), pszDir, pNodeIt->dirEntry.szName);
     750                        if (RT_SUCCESS(rc))
     751                            rc = vgsvcToolboxLsHandleDir(szPath, fFlags, fOutputFlags);
    764752                        break;
     753                    }
    765754
    766755                    default: /* Ignore the rest. */
     
    804793 * @param   argv                    Pointer to argument array.
    805794 */
    806 static RTEXITCODE VBoxServiceToolboxLs(int argc, char **argv)
     795static RTEXITCODE vgsvcToolboxLs(int argc, char **argv)
    807796{
    808797    static const RTGETOPTDEF s_aOptions[] =
    809798    {
    810799        { "--machinereadable", VBOXSERVICETOOLBOXOPT_MACHINE_READABLE,      RTGETOPT_REQ_NOTHING },
    811         { "--dereference",     'L',                                           RTGETOPT_REQ_NOTHING },
    812         { NULL,                'l',                                           RTGETOPT_REQ_NOTHING },
    813         { NULL,                'R',                                           RTGETOPT_REQ_NOTHING },
     800        { "--dereference",     'L',                                         RTGETOPT_REQ_NOTHING },
     801        { NULL,                'l',                                         RTGETOPT_REQ_NOTHING },
     802        { NULL,                'R',                                         RTGETOPT_REQ_NOTHING },
    814803        { "--verbose",         VBOXSERVICETOOLBOXOPT_VERBOSE,               RTGETOPT_REQ_NOTHING}
    815804    };
     
    818807    RTGETOPTUNION ValueUnion;
    819808    RTGETOPTSTATE GetState;
    820     int rc = RTGetOptInit(&GetState, argc, argv,
    821                           s_aOptions, RT_ELEMENTS(s_aOptions),
     809    int rc = RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions),
    822810                          1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
    823811    AssertRCReturn(rc, RTEXITCODE_INIT);
     
    832820
    833821    while (   (ch = RTGetOpt(&GetState, &ValueUnion))
    834               && RT_SUCCESS(rc))
     822           && RT_SUCCESS(rc))
    835823    {
    836824        /* For options that require an argument, ValueUnion has received the value. */
     
    838826        {
    839827            case 'h':
    840                 VBoxServiceToolboxShowUsageHeader();
     828                vgsvcToolboxShowUsageHeader();
    841829                RTPrintf("%s", g_paszLsHelp);
    842830                return RTEXITCODE_SUCCESS;
     
    863851
    864852            case 'V':
    865                 VBoxServiceToolboxShowVersion();
     853                vgsvcToolboxShowVersion();
    866854                return RTEXITCODE_SUCCESS;
    867855
     
    873861                 * processing this loop it's safe to immediately exit on syntax errors
    874862                 * or showing the help text (see above). */
    875                 rc = VBoxServiceToolboxPathBufAddPathEntry(&fileList, ValueUnion.psz);
     863                rc = vgsvcToolboxPathBufAddPathEntry(&fileList, ValueUnion.psz);
    876864                /** @todo r=bird: Nit: creating a list here is not really
    877865                 *        necessary since you've got one in argv that's
     
    893881            if (RT_SUCCESS(rc))
    894882            {
    895                 rc = VBoxServiceToolboxPathBufAddPathEntry(&fileList, szDirCur);
     883                rc = vgsvcToolboxPathBufAddPathEntry(&fileList, szDirCur);
    896884                if (RT_FAILURE(rc))
    897885                    RTMsgError("Adding current directory failed, rc=%Rrc\n", rc);
     
    904892        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
    905893        {
    906             rc = VBoxServiceToolboxStrmInit();
     894            rc = vgsvcToolboxStrmInit();
    907895            if (RT_FAILURE(rc))
    908896                RTMsgError("Error while initializing parseable streams, rc=%Rrc\n", rc);
    909             VBoxServiceToolboxPrintStrmHeader("vbt_ls", 1 /* Stream version */);
     897            vgsvcToolboxPrintStrmHeader("vbt_ls", 1 /* Stream version */);
    910898        }
    911899
     
    917905                RTFSOBJINFO objInfo;
    918906                int rc2 = RTPathQueryInfoEx(pNodeIt->pszName, &objInfo,
    919                                             RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK /* @todo Follow link? */);
     907                                            RTFSOBJATTRADD_UNIX, RTPATH_F_ON_LINK /** @todo Follow link? */);
    920908                if (RT_FAILURE(rc2))
    921909                {
    922910                    if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    923                         RTMsgError("Cannot access '%s': No such file or directory\n",
    924                                    pNodeIt->pszName);
     911                        RTMsgError("Cannot access '%s': No such file or directory\n", pNodeIt->pszName);
    925912                    rc = VERR_FILE_NOT_FOUND;
    926913                    /* Do not break here -- process every element in the list
     
    929916                else
    930917                {
    931                     rc2 = VBoxServiceToolboxPrintFsInfo(pNodeIt->pszName,
    932                                                         strlen(pNodeIt->pszName) /* cbName */,
    933                                                         fOutputFlags,
    934                                                         &objInfo);
     918                    rc2 = vgsvcToolboxPrintFsInfo(pNodeIt->pszName,
     919                                                  strlen(pNodeIt->pszName) /* cbName */,
     920                                                  fOutputFlags,
     921                                                  &objInfo);
    935922                    if (RT_FAILURE(rc2))
    936923                        rc = rc2;
     
    939926            else
    940927            {
    941                 int rc2 = VBoxServiceToolboxLsHandleDir(pNodeIt->pszName,
    942                                                         fFlags, fOutputFlags);
     928                int rc2 = vgsvcToolboxLsHandleDir(pNodeIt->pszName, fFlags, fOutputFlags);
    943929                if (RT_FAILURE(rc2))
    944930                    rc = rc2;
     
    947933
    948934        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* Output termination. */
    949             VBoxServiceToolboxPrintStrmTermination();
     935            vgsvcToolboxPrintStrmTermination();
    950936    }
    951937    else if (fVerbose)
    952938        RTMsgError("Failed with rc=%Rrc\n", rc);
    953939
    954     VBoxServiceToolboxPathBufDestroy(&fileList);
     940    vgsvcToolboxPathBufDestroy(&fileList);
    955941    return RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    956942}
     
    958944
    959945/* Try using RTPathRmCmd. */
    960 static RTEXITCODE VBoxServiceToolboxRm(int argc, char **argv)
     946static RTEXITCODE vgsvcToolboxRm(int argc, char **argv)
    961947{
    962948    return RTPathRmCmd(argc, argv);
     
    989975 */
    990976static void toolboxMkTempReport(const char *pcszMessage, const char *pcszFile,
    991                                 bool fActive, int rc, uint32_t fOutputFlags,
    992                                 int *prc)
     977                                bool fActive, int rc, uint32_t fOutputFlags, int *prc)
    993978{
    994979    if (!fActive)
     
    1013998 * @param   argv                    Pointer to argument array.
    1014999 */
    1015 static RTEXITCODE VBoxServiceToolboxMkTemp(int argc, char **argv)
     1000static RTEXITCODE vgsvcToolboxMkTemp(int argc, char **argv)
    10161001{
    10171002    static const RTGETOPTDEF s_aOptions[] =
     
    10391024    RTGETOPTUNION ValueUnion;
    10401025    RTGETOPTSTATE GetState;
    1041     rc = RTGetOptInit(&GetState, argc, argv, s_aOptions,
    1042                       RT_ELEMENTS(s_aOptions), 1 /*iFirst*/,
    1043                       RTGETOPTINIT_FLAGS_OPTS_FIRST);
     1026    rc = RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
    10441027    AssertRCReturn(rc, RTEXITCODE_INIT);
    10451028
     
    10611044        {
    10621045            case 'h':
    1063                 VBoxServiceToolboxShowUsageHeader();
     1046                vgsvcToolboxShowUsageHeader();
    10641047                RTPrintf("%s", g_paszMkTempHelp);
    10651048                return RTEXITCODE_SUCCESS;
    10661049
    10671050            case 'V':
    1068                 VBoxServiceToolboxShowVersion();
     1051                vgsvcToolboxShowVersion();
    10691052                return RTEXITCODE_SUCCESS;
    10701053
     
    10781061
    10791062            case 'm':
    1080                 rc = vboxServiceToolboxParseMode(ValueUnion.psz, &fMode);
     1063                rc = vgsvcToolboxParseMode(ValueUnion.psz, &fMode);
    10811064                if (RT_FAILURE(rc))
    10821065                    return RTEXITCODE_SYNTAX;
     
    11041087        }
    11051088    }
     1089
    11061090    /* Print magic/version. */
    11071091    if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE)
    11081092    {
    1109         rc = VBoxServiceToolboxStrmInit();
     1093        rc = vgsvcToolboxStrmInit();
    11101094        if (RT_FAILURE(rc))
    11111095            RTMsgError("Error while initializing parseable streams, rc=%Rrc\n", rc);
    1112         VBoxServiceToolboxPrintStrmHeader("vbt_mktemp", 1 /* Stream version */);
     1096        vgsvcToolboxPrintStrmHeader("vbt_mktemp", 1 /* Stream version */);
    11131097    }
    11141098
     
    11191103        return RTEXITCODE_SYNTAX;
    11201104    }
     1105
    11211106    /* We need exactly one template, containing at least one 'X'. */
    11221107    if (cNonOptions != 1)
    11231108    {
    1124         toolboxMkTempReport("Please specify exactly one template.\n", "",
    1125                             true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
     1109        toolboxMkTempReport("Please specify exactly one template.\n", "", true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11261110        return RTEXITCODE_SYNTAX;
    11271111    }
    11281112    pcszTemplate = argv[argc - 1];
     1113
    11291114    /* Validate that the template is as IPRT requires (asserted by IPRT). */
    11301115    if (   RTPathHasPath(pcszTemplate)
     
    11331118    {
    11341119        toolboxMkTempReport("Template '%s' should contain a file name with no path and at least three consecutive 'X' characters or ending in 'X'.\n",
    1135                             pcszTemplate, true, VERR_INVALID_PARAMETER,
    1136                             fOutputFlags, &rc);
     1120                            pcszTemplate, true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11371121        return RTEXITCODE_FAILURE;
    11381122    }
    11391123    if (pcszPath && !RTPathStartsWithRoot(pcszPath))
    11401124    {
    1141         toolboxMkTempReport("Path '%s' should be absolute.\n",
    1142                             pcszPath, true, VERR_INVALID_PARAMETER,
    1143                             fOutputFlags, &rc);
     1125        toolboxMkTempReport("Path '%s' should be absolute.\n", pcszPath, true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11441126        return RTEXITCODE_FAILURE;
    11451127    }
    11461128    if (pcszPath)
    11471129    {
    1148         rc = RTStrCopy(szTemplateWithPath, sizeof(szTemplateWithPath),
    1149                        pcszPath);
     1130        rc = RTStrCopy(szTemplateWithPath, sizeof(szTemplateWithPath), pcszPath);
    11501131        if (RT_FAILURE(rc))
    11511132        {
    1152             toolboxMkTempReport("Path '%s' too long.\n", pcszPath, true,
    1153                                 VERR_INVALID_PARAMETER, fOutputFlags, &rc);
     1133            toolboxMkTempReport("Path '%s' too long.\n", pcszPath, true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11541134            return RTEXITCODE_FAILURE;
    11551135        }
     
    11601140        if (RT_FAILURE(rc))
    11611141        {
    1162             toolboxMkTempReport("Failed to get the temporary directory.\n",
    1163                                 "", true, VERR_INVALID_PARAMETER,
    1164                                 fOutputFlags, &rc);
     1142            toolboxMkTempReport("Failed to get the temporary directory.\n", "", true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11651143            return RTEXITCODE_FAILURE;
    11661144        }
    11671145    }
    1168     rc = RTPathAppend(szTemplateWithPath, sizeof(szTemplateWithPath),
    1169                       pcszTemplate);
     1146    rc = RTPathAppend(szTemplateWithPath, sizeof(szTemplateWithPath), pcszTemplate);
    11701147    if (RT_FAILURE(rc))
    11711148    {
    1172         toolboxMkTempReport("Template '%s' too long for path.\n",
    1173                             pcszTemplate, true, VERR_INVALID_PARAMETER,
    1174                             fOutputFlags, &rc);
     1149        toolboxMkTempReport("Template '%s' too long for path.\n", pcszTemplate, true, VERR_INVALID_PARAMETER, fOutputFlags, &rc);
    11751150        return RTEXITCODE_FAILURE;
    11761151    }
     
    11781153    if (fFlags & VBOXSERVICETOOLBOXMKTEMPFLAG_DIRECTORY)
    11791154    {
    1180         rc =   fFlags & VBOXSERVICETOOLBOXMKTEMPFLAG_SECURE
    1181              ? RTDirCreateTempSecure(szTemplateWithPath)
    1182              : RTDirCreateTemp(szTemplateWithPath, fMode);
     1155        rc = fFlags & VBOXSERVICETOOLBOXMKTEMPFLAG_SECURE
     1156           ? RTDirCreateTempSecure(szTemplateWithPath)
     1157           : RTDirCreateTemp(szTemplateWithPath, fMode);
    11831158        toolboxMkTempReport("Created temporary directory '%s'.\n",
    11841159                            szTemplateWithPath, RT_SUCCESS(rc), rc,
     
    11861161        /* RTDirCreateTemp[Secure] sets the template to "" on failure. */
    11871162        toolboxMkTempReport("The following error occurred while creating a temporary directory from template '%s': %Rrc.\n",
    1188                             pcszTemplate, RT_FAILURE(rc), rc, fOutputFlags,
    1189                             NULL);
     1163                            pcszTemplate, RT_FAILURE(rc), rc, fOutputFlags, NULL /*prc*/);
    11901164    }
    11911165    else
    11921166    {
    1193         rc =   fFlags & VBOXSERVICETOOLBOXMKTEMPFLAG_SECURE
    1194              ? RTFileCreateTempSecure(szTemplateWithPath)
    1195              : RTFileCreateTemp(szTemplateWithPath, fMode);
     1167        rc = fFlags & VBOXSERVICETOOLBOXMKTEMPFLAG_SECURE
     1168           ? RTFileCreateTempSecure(szTemplateWithPath)
     1169           : RTFileCreateTemp(szTemplateWithPath, fMode);
    11961170        toolboxMkTempReport("Created temporary file '%s'.\n",
    11971171                            szTemplateWithPath, RT_SUCCESS(rc), rc,
     
    11991173        /* RTFileCreateTemp[Secure] sets the template to "" on failure. */
    12001174        toolboxMkTempReport("The following error occurred while creating a temporary file from template '%s': %Rrc.\n",
    1201                             pcszTemplate, RT_FAILURE(rc), rc, fOutputFlags,
    1202                             NULL);
     1175                            pcszTemplate, RT_FAILURE(rc), rc, fOutputFlags, NULL /*prc*/);
    12031176    }
    12041177    if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* Output termination. */
    1205         VBoxServiceToolboxPrintStrmTermination();
     1178        vgsvcToolboxPrintStrmTermination();
    12061179    return RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    12071180}
     
    12281201 * @param   argv                    Pointer to argument array.
    12291202 */
    1230 static RTEXITCODE VBoxServiceToolboxMkDir(int argc, char **argv)
     1203static RTEXITCODE vgsvcToolboxMkDir(int argc, char **argv)
    12311204{
    12321205    static const RTGETOPTDEF s_aOptions[] =
     
    12401213    RTGETOPTUNION ValueUnion;
    12411214    RTGETOPTSTATE GetState;
    1242     int rc = RTGetOptInit(&GetState, argc, argv,
    1243                           s_aOptions, RT_ELEMENTS(s_aOptions),
     1215    int rc = RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions),
    12441216                          1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
    12451217    AssertRCReturn(rc, RTEXITCODE_INIT);
     
    12601232
    12611233            case 'm':
    1262                 rc = vboxServiceToolboxParseMode(ValueUnion.psz, &fDirMode);
     1234                rc = vgsvcToolboxParseMode(ValueUnion.psz, &fDirMode);
    12631235                if (RT_FAILURE(rc))
    12641236                    return RTEXITCODE_SYNTAX;
     
    12731245
    12741246            case 'h':
    1275                 VBoxServiceToolboxShowUsageHeader();
     1247                vgsvcToolboxShowUsageHeader();
    12761248                RTPrintf("%s", g_paszMkDirHelp);
    12771249                return RTEXITCODE_SUCCESS;
    12781250
    12791251            case 'V':
    1280                 VBoxServiceToolboxShowVersion();
     1252                vgsvcToolboxShowVersion();
    12811253                return RTEXITCODE_SUCCESS;
    12821254
     
    13321304 * @param   argv                    Pointer to argument array.
    13331305 */
    1334 static RTEXITCODE VBoxServiceToolboxStat(int argc, char **argv)
     1306static RTEXITCODE vgsvcToolboxStat(int argc, char **argv)
    13351307{
    13361308    static const RTGETOPTDEF s_aOptions[] =
     
    13461318    RTGETOPTUNION ValueUnion;
    13471319    RTGETOPTSTATE GetState;
    1348     RTGetOptInit(&GetState, argc, argv,
    1349                  s_aOptions, RT_ELEMENTS(s_aOptions),
    1350                  1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
     1320    RTGetOptInit(&GetState, argc, argv, s_aOptions, RT_ELEMENTS(s_aOptions), 1 /*iFirst*/, RTGETOPTINIT_FLAGS_OPTS_FIRST);
    13511321
    13521322    int rc = VINF_SUCCESS;
     
    13841354
    13851355            case 'h':
    1386                 VBoxServiceToolboxShowUsageHeader();
     1356                vgsvcToolboxShowUsageHeader();
    13871357                RTPrintf("%s", g_paszStatHelp);
    13881358                return RTEXITCODE_SUCCESS;
    13891359
    13901360            case 'V':
    1391                 VBoxServiceToolboxShowVersion();
     1361                vgsvcToolboxShowVersion();
    13921362                return RTEXITCODE_SUCCESS;
    13931363
    13941364            case VINF_GETOPT_NOT_OPTION:
    1395                 {
     1365            {
    13961366/** @todo r=bird: The whole fileList is unecessary because you're using
    13971367 * RTGETOPTINIT_FLAGS_OPTS_FIRST.  You can obviously do the processing right
     
    13991369 * continue there. */
    14001370
    1401                     /* Add file(s) to buffer. This enables processing multiple files
    1402                      * at once.
    1403                      *
    1404                      * Since the non-options (RTGETOPTINIT_FLAGS_OPTS_FIRST) come last when
    1405                      * processing this loop it's safe to immediately exit on syntax errors
    1406                      * or showing the help text (see above). */
    1407                     rc = VBoxServiceToolboxPathBufAddPathEntry(&fileList, ValueUnion.psz);
    1408                     break;
    1409                 }
     1371                /* Add file(s) to buffer. This enables processing multiple files
     1372                 * at once.
     1373                 *
     1374                 * Since the non-options (RTGETOPTINIT_FLAGS_OPTS_FIRST) come last when
     1375                 * processing this loop it's safe to immediately exit on syntax errors
     1376                 * or showing the help text (see above). */
     1377                rc = vgsvcToolboxPathBufAddPathEntry(&fileList, ValueUnion.psz);
     1378                break;
     1379            }
    14101380
    14111381            default:
     
    14181388        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* Output termination. */
    14191389        {
    1420             rc = VBoxServiceToolboxStrmInit();
     1390            rc = vgsvcToolboxStrmInit();
    14211391            if (RT_FAILURE(rc))
    14221392                RTMsgError("Error while initializing parseable streams, rc=%Rrc\n", rc);
    1423             VBoxServiceToolboxPrintStrmHeader("vbt_stat", 1 /* Stream version */);
     1393            vgsvcToolboxPrintStrmHeader("vbt_stat", 1 /* Stream version */);
    14241394        }
    14251395
     
    14331403/** @todo r=bird: You can get a number of other errors here, like access denied. */
    14341404                if (!(fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE))
    1435                     RTMsgError("Cannot stat for '%s': No such file or directory (%Rrc)\n",
    1436                                pNodeIt->pszName, rc);
     1405                    RTMsgError("Cannot stat for '%s': No such file or directory (%Rrc)\n", pNodeIt->pszName, rc);
    14371406                rc = VERR_FILE_NOT_FOUND;
    14381407                /* Do not break here -- process every element in the list
     
    14411410            else
    14421411            {
    1443                 rc2 = VBoxServiceToolboxPrintFsInfo(pNodeIt->pszName,
    1444                                                     strlen(pNodeIt->pszName) /* cbName */,
    1445                                                     fOutputFlags,
    1446                                                     &objInfo);
     1412                rc2 = vgsvcToolboxPrintFsInfo(pNodeIt->pszName,
     1413                                              strlen(pNodeIt->pszName) /* cbName */,
     1414                                              fOutputFlags,
     1415                                              &objInfo);
    14471416                if (RT_FAILURE(rc2))
    14481417                    rc = rc2;
     
    14511420
    14521421        if (fOutputFlags & VBOXSERVICETOOLBOXOUTPUTFLAG_PARSEABLE) /* Output termination. */
    1453             VBoxServiceToolboxPrintStrmTermination();
     1422            vgsvcToolboxPrintStrmTermination();
    14541423
    14551424        /* At this point the overall result (success/failure) should be in rc. */
     
    14611430        RTMsgError("Failed with rc=%Rrc\n", rc);
    14621431
    1463     VBoxServiceToolboxPathBufDestroy(&fileList);
     1432    vgsvcToolboxPathBufDestroy(&fileList);
    14641433    return RT_SUCCESS(rc) ? RTEXITCODE_SUCCESS : RTEXITCODE_FAILURE;
    14651434}
     
    14731442 * @param   pszTool     The name of the tool.
    14741443 */
    1475 static PFNHANDLER vboxServiceToolboxLookUpHandler(const char *pszTool)
     1444static PFNHANDLER vgsvcToolboxLookUpHandler(const char *pszTool)
    14761445{
    14771446    static struct
     
    14821451    const s_aTools[] =
    14831452    {
    1484         { "cat",    VBoxServiceToolboxCat    },
    1485         { "ls",     VBoxServiceToolboxLs     },
    1486         { "rm",     VBoxServiceToolboxRm     },
    1487         { "mktemp", VBoxServiceToolboxMkTemp },
    1488         { "mkdir",  VBoxServiceToolboxMkDir  },
    1489         { "stat",   VBoxServiceToolboxStat   },
     1453        { "cat",    vgsvcToolboxCat    },
     1454        { "ls",     vgsvcToolboxLs     },
     1455        { "rm",     vgsvcToolboxRm     },
     1456        { "mktemp", vgsvcToolboxMkTemp },
     1457        { "mkdir",  vgsvcToolboxMkDir  },
     1458        { "stat",   vgsvcToolboxStat   },
    14901459    };
    14911460
     
    15161485 *                                  internal toolbox command was handled.
    15171486 */
    1518 bool VBoxServiceToolboxMain(int argc, char **argv, RTEXITCODE *prcExit)
     1487bool VGSvcToolboxMain(int argc, char **argv, RTEXITCODE *prcExit)
    15191488{
    15201489
     
    15241493    AssertReturn(argc > 0, false);
    15251494    const char *pszTool    = RTPathFilename(argv[0]);
    1526     PFNHANDLER  pfnHandler = vboxServiceToolboxLookUpHandler(pszTool);
     1495    PFNHANDLER  pfnHandler = vgsvcToolboxLookUpHandler(pszTool);
    15271496    if (!pfnHandler)
    15281497    {
     
    15361505        argv += 2;
    15371506        pszTool = argv[0];
    1538         pfnHandler = vboxServiceToolboxLookUpHandler(pszTool);
     1507        pfnHandler = vgsvcToolboxLookUpHandler(pszTool);
    15391508        if (!pfnHandler)
    15401509        {
     
    15421511           if (!strcmp(pszTool, "-V"))
    15431512           {
    1544                VBoxServiceToolboxShowVersion();
     1513               vgsvcToolboxShowVersion();
    15451514               return true;
    15461515           }
     
    15481517               && (strcmp(pszTool, "-h")))
    15491518               *prcExit = RTEXITCODE_SYNTAX;
    1550            VBoxServiceToolboxShowUsage();
     1519           vgsvcToolboxShowUsage();
    15511520           return true;
    15521521        }
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp

    r57358 r58029  
    3232#include "VBoxServiceInternal.h"
    3333
     34
    3435#ifdef VBOX_WITH_GUEST_PROPS
    3536
     
    4849 *                              on success.  Optional.
    4950 */
    50 int VBoxServiceReadProp(uint32_t u32ClientId, const char *pszPropName,
    51                         char **ppszValue, char **ppszFlags, uint64_t *puTimestamp)
     51int VGSvcReadProp(uint32_t u32ClientId, const char *pszPropName, char **ppszValue, char **ppszFlags, uint64_t *puTimestamp)
    5252{
    5353    AssertPtrReturn(pszPropName, VERR_INVALID_POINTER);
     
    6969        if (!pvBuf)
    7070        {
    71             VBoxServiceError("Guest Property: Failed to allocate %zu bytes\n", cbBuf);
     71            VGSvcError("Guest Property: Failed to allocate %zu bytes\n", cbBuf);
    7272            rc = VERR_NO_MEMORY;
    7373            break;
     
    7676        char    *pszFlags;
    7777        uint64_t uTimestamp;
    78         rc = VbglR3GuestPropRead(u32ClientId, pszPropName,
    79                                  pvBuf, cbBuf,
    80                                  &pszValue, &uTimestamp, &pszFlags, NULL);
     78        rc = VbglR3GuestPropRead(u32ClientId, pszPropName, pvBuf, cbBuf, &pszValue, &uTimestamp, &pszFlags, NULL);
    8179        if (RT_FAILURE(rc))
    8280        {
     
    8886            }
    8987            if (rc == VERR_NOT_FOUND)
    90                 VBoxServiceVerbose(2, "Guest Property: %s not found\n", pszPropName);
     88                VGSvcVerbose(2, "Guest Property: %s not found\n", pszPropName);
    9189            else
    92                 VBoxServiceError("Guest Property: Failed to query \"%s\": %Rrc\n", pszPropName, rc);
     90                VGSvcError("Guest Property: Failed to query '%s': %Rrc\n", pszPropName, rc);
    9391            break;
    9492        }
    9593
    96         VBoxServiceVerbose(2, "Guest Property: Read \"%s\" = \"%s\", timestamp %RU64n\n",
    97                            pszPropName, pszValue, uTimestamp);
     94        VGSvcVerbose(2, "Guest Property: Read '%s' = '%s', timestamp %RU64n\n", pszPropName, pszValue, uTimestamp);
    9895        *ppszValue = RTStrDup(pszValue);
    9996        if (!*ppszValue)
    10097        {
    101             VBoxServiceError("Guest Property: RTStrDup failed for \"%s\"\n", pszValue);
     98            VGSvcError("Guest Property: RTStrDup failed for '%s'\n", pszValue);
    10299            rc = VERR_NO_MEMORY;
    103100            break;
     
    127124 *
    128125 */
    129 int VBoxServiceReadPropUInt32(uint32_t u32ClientId, const char *pszPropName,
    130                               uint32_t *pu32, uint32_t u32Min, uint32_t u32Max)
     126int VGSvcReadPropUInt32(uint32_t u32ClientId, const char *pszPropName, uint32_t *pu32, uint32_t u32Min, uint32_t u32Max)
    131127{
    132128    char *pszValue;
    133     int rc = VBoxServiceReadProp(u32ClientId, pszPropName, &pszValue,
    134                                  NULL /* ppszFlags */, NULL /* puTimestamp */);
     129    int rc = VGSvcReadProp(u32ClientId, pszPropName, &pszValue, NULL /* ppszFlags */, NULL /* puTimestamp */);
    135130    if (RT_SUCCESS(rc))
    136131    {
     
    139134        if (   RT_SUCCESS(rc)
    140135            && (*pu32 < u32Min || *pu32 > u32Max))
    141         {
    142             rc = VBoxServiceError("The guest property value %s = %RU32 is out of range [%RU32..%RU32].\n",
    143                                   pszPropName, *pu32, u32Min, u32Max);
    144         }
     136            rc = VGSvcError("The guest property value %s = %RU32 is out of range [%RU32..%RU32].\n",
     137                            pszPropName, *pu32, u32Min, u32Max);
    145138        RTStrFree(pszValue);
    146139    }
     
    165158 *                              on success.  Optional.
    166159 */
    167 int VBoxServiceReadHostProp(uint32_t u32ClientId, const char *pszPropName, bool fReadOnly,
    168                             char **ppszValue, char **ppszFlags, uint64_t *puTimestamp)
     160int VGSvcReadHostProp(uint32_t u32ClientId, const char *pszPropName, bool fReadOnly,
     161                      char **ppszValue, char **ppszFlags, uint64_t *puTimestamp)
    169162{
    170163    AssertPtrReturn(ppszValue, VERR_INVALID_PARAMETER);
     
    172165    char *pszValue = NULL;
    173166    char *pszFlags = NULL;
    174     int rc = VBoxServiceReadProp(u32ClientId, pszPropName, &pszValue, &pszFlags, puTimestamp);
     167    int rc = VGSvcReadProp(u32ClientId, pszPropName, &pszValue, &pszFlags, puTimestamp);
    175168    if (RT_SUCCESS(rc))
    176169    {
     
    218211 * @param   ...             Format arguments.
    219212 */
    220 int VBoxServiceWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...)
     213int VGSvcWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...)
    221214{
    222215    AssertPtr(pszName);
     
    226219        va_list va;
    227220        va_start(va, pszValueFormat);
    228         VBoxServiceVerbose(3, "Writing guest property \"%s\" = \"%N\"\n", pszName, pszValueFormat, &va);
     221        VGSvcVerbose(3, "Writing guest property '%s' = '%N'\n", pszName, pszValueFormat, &va);
    229222        va_end(va);
    230223
     
    234227
    235228        if (RT_FAILURE(rc))
    236              VBoxServiceError("Error writing guest property \"%s\" (rc=%Rrc)\n", pszName, rc);
     229             VGSvcError("Error writing guest property '%s' (rc=%Rrc)\n", pszName, rc);
    237230    }
    238231    else
    239232    {
    240         VBoxServiceVerbose(3, "Deleting guest property \"%s\"\n", pszName);
     233        VGSvcVerbose(3, "Deleting guest property '%s'\n", pszName);
    241234        rc = VbglR3GuestPropWriteValue(u32ClientId, pszName, NULL);
    242235        if (RT_FAILURE(rc))
    243             VBoxServiceError("Error deleting guest property \"%s\" (rc=%Rrc)\n", pszName, rc);
     236            VGSvcError("Error deleting guest property '%s' (rc=%Rrc)\n", pszName, rc);
    244237    }
    245238    return rc;
     
    255248 * @returns Success indicator.
    256249 */
    257 static bool VBoxServiceGetFileVersionOwn(LPSTR pVerData,
    258                                          PDWORD pdwMajor,
    259                                          PDWORD pdwMinor,
    260                                          PDWORD pdwBuildNumber,
    261                                          PDWORD pdwRevisionNumber)
     250static bool vgsvcUtilGetFileVersionOwn(LPSTR pVerData, PDWORD pdwMajor, PDWORD pdwMinor, PDWORD pdwBuildNumber,
     251                                       PDWORD pdwRevisionNumber)
    262252{
    263253    UINT    cchStrValue = 0;
     
    275265
    276266/**
    277  * Worker for VBoxServiceGetFileVersionString.
     267 * Worker for VGSvcUtilWinGetFileVersionString.
    278268 *
    279269 * @returns VBox status code.
    280270 * @param   pszFilename         ASCII & ANSI & UTF-8 compliant name.
    281271 */
    282 static int VBoxServiceGetFileVersion(const char *pszFilename,
    283                                      PDWORD pdwMajor,
    284                                      PDWORD pdwMinor,
    285                                      PDWORD pdwBuildNumber,
    286                                      PDWORD pdwRevisionNumber)
     272static int vgsvcUtilGetFileVersion(const char *pszFilename, PDWORD pdwMajor, PDWORD pdwMinor, PDWORD pdwBuildNumber,
     273                                   PDWORD pdwRevisionNumber)
    287274{
    288275    int rc;
     
    307294                 * it goes beyond the range of an uint16_t / WORD.
    308295                 */
    309                 if (VBoxServiceGetFileVersionOwn(pVerData, pdwMajor, pdwMinor, pdwBuildNumber, pdwRevisionNumber))
     296                if (vgsvcUtilGetFileVersionOwn(pVerData, pdwMajor, pdwMinor, pdwBuildNumber, pdwRevisionNumber))
    310297                    rc = VINF_SUCCESS;
    311298                else
     
    325312                    {
    326313                        rc = RTErrConvertFromWin32(GetLastError());
    327                         VBoxServiceVerbose(3, "No file version value for file \"%s\" available! (%d / rc=%Rrc)\n",
    328                                            pszFilename,  GetLastError(), rc);
     314                        VGSvcVerbose(3, "No file version value for file '%s' available! (%d / rc=%Rrc)\n",
     315                                     pszFilename,  GetLastError(), rc);
    329316                    }
    330317                }
     
    333320            {
    334321                rc = RTErrConvertFromWin32(GetLastError());
    335                 VBoxServiceVerbose(0, "GetFileVersionInfo(%s) -> %u / %Rrc\n", pszFilename, GetLastError(), rc);
     322                VGSvcVerbose(0, "GetFileVersionInfo(%s) -> %u / %Rrc\n", pszFilename, GetLastError(), rc);
    336323            }
    337324
     
    340327        else
    341328        {
    342             VBoxServiceVerbose(0, "Failed to allocate %u byte for file version info for '%s'\n", cbVerData, pszFilename);
     329            VGSvcVerbose(0, "Failed to allocate %u byte for file version info for '%s'\n", cbVerData, pszFilename);
    343330            rc = VERR_NO_TMP_MEMORY;
    344331        }
     
    347334    {
    348335        rc = RTErrConvertFromWin32(GetLastError());
    349         VBoxServiceVerbose(3, "GetFileVersionInfoSize(%s) -> %u / %Rrc\n", pszFilename, GetLastError(), rc);
     336        VGSvcVerbose(3, "GetFileVersionInfoSize(%s) -> %u / %Rrc\n", pszFilename, GetLastError(), rc);
    350337    }
    351338    return rc;
     
    365352 *                          at least 2 bytes!
    366353 */
    367 int VBoxServiceGetFileVersionString(const char *pszPath, const char *pszFilename,
    368                                     char *pszVersion, size_t cbVersion)
     354int VGSvcUtilWinGetFileVersionString(const char *pszPath, const char *pszFilename, char *pszVersion, size_t cbVersion)
    369355{
    370356    /*
     
    383369    {
    384370        DWORD dwMajor, dwMinor, dwBuild, dwRev;
    385         rc = VBoxServiceGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev);
     371        rc = vgsvcUtilGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev);
    386372        if (RT_SUCCESS(rc))
    387373            RTStrPrintf(pszVersion, cbVersion, "%u.%u.%ur%u", dwMajor, dwMinor, dwBuild, dwRev);
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.h

    r56294 r58029  
    2222
    2323#ifdef VBOX_WITH_GUEST_PROPS
    24 int VBoxServiceReadProp(uint32_t u32ClientId, const char *pszPropName, char **ppszValue, char **ppszFlags, uint64_t *puTimestamp);
    25 int VBoxServiceReadPropUInt32(uint32_t u32ClientId, const char *pszPropName, uint32_t *pu32, uint32_t u32Min, uint32_t u32Max);
    26 int VBoxServiceReadHostProp(uint32_t u32ClientId, const char *pszPropName, bool fReadOnly, char **ppszValue, char **ppszFlags, uint64_t *puTimestamp);
    27 int VBoxServiceWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...);
     24int VGSvcReadProp(uint32_t u32ClientId, const char *pszPropName, char **ppszValue, char **ppszFlags, uint64_t *puTimestamp);
     25int VGSvcReadPropUInt32(uint32_t u32ClientId, const char *pszPropName, uint32_t *pu32, uint32_t u32Min, uint32_t u32Max);
     26int VGSvcReadHostProp(uint32_t u32ClientId, const char *pszPropName, bool fReadOnly, char **ppszValue, char **ppszFlags,
     27                      uint64_t *puTimestamp);
     28int VGSvcWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...);
    2829#endif
    2930
    3031#ifdef RT_OS_WINDOWS
    31 int VBoxServiceGetFileVersionString(const char *pszPath, const char *pszFileName, char *pszVersion, size_t cbVersion);
     32int VGSvcUtilWinGetFileVersionString(const char *pszPath, const char *pszFileName, char *pszVersion, size_t cbVersion);
    3233#endif
    3334
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp

    r57925 r58029  
    9595*   Internal Functions                                                                                                           *
    9696*********************************************************************************************************************************/
    97 static uint32_t VBoxServiceVMInfoWinSessionHasProcesses(PLUID pSession, PVBOXSERVICEVMINFOPROC const paProcs, DWORD cProcs);
    98 static bool VBoxServiceVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER a_pUserInfo, PLUID a_pSession);
    99 static int  VBoxServiceVMInfoWinProcessesEnumerate(PVBOXSERVICEVMINFOPROC *ppProc, DWORD *pdwCount);
    100 static void VBoxServiceVMInfoWinProcessesFree(DWORD cProcs, PVBOXSERVICEVMINFOPROC paProcs);
    101 static int  vboxServiceVMInfoWinWriteLastInput(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain);
     97static uint32_t vgsvcVMInfoWinSessionHasProcesses(PLUID pSession, PVBOXSERVICEVMINFOPROC const paProcs, DWORD cProcs);
     98static bool vgsvcVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER a_pUserInfo, PLUID a_pSession);
     99static int  vgsvcVMInfoWinProcessesEnumerate(PVBOXSERVICEVMINFOPROC *ppProc, DWORD *pdwCount);
     100static void vgsvcVMInfoWinProcessesFree(DWORD cProcs, PVBOXSERVICEVMINFOPROC paProcs);
     101static int  vgsvcVMInfoWinWriteLastInput(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain);
    102102
    103103
     
    156156    if (RT_FAILURE(rc))
    157157    {
    158         VBoxServiceVerbose(1, "Secur32.dll APIs are not availble (%Rrc)\n", rc);
     158        VGSvcVerbose(1, "Secur32.dll APIs are not availble (%Rrc)\n", rc);
    159159        g_pfnLsaGetLogonSessionData = NULL;
    160160        g_pfnLsaEnumerateLogonSessions = NULL;
     
    175175    if (RT_FAILURE(rc))
    176176    {
    177         VBoxServiceVerbose(1, "WtsApi32.dll APIs are not availble (%Rrc)\n", rc);
     177        VGSvcVerbose(1, "WtsApi32.dll APIs are not availble (%Rrc)\n", rc);
    178178        g_pfnWTSFreeMemory = NULL;
    179179        g_pfnWTSQuerySessionInformationA = NULL;
     
    193193    if (RT_FAILURE(rc))
    194194    {
    195         VBoxServiceVerbose(1, "psapi.dll APIs are not availble (%Rrc)\n", rc);
     195        VGSvcVerbose(1, "psapi.dll APIs are not availble (%Rrc)\n", rc);
    196196        g_pfnEnumProcesses = NULL;
    197197        g_pfnGetModuleFileNameExW = NULL;
     
    227227
    228228
    229 static bool vboxServiceVMInfoSession0Separation(void)
     229static bool vgsvcVMInfoSession0Separation(void)
    230230{
    231231    return g_WinVersion.dwPlatformId == VER_PLATFORM_WIN32_NT
     
    239239 * @return  IPRT status code.
    240240 */
    241 static int VBoxServiceVMInfoWinProcessesGetModuleNameA(PVBOXSERVICEVMINFOPROC const pProc,
    242                                                        PRTUTF16 *ppszName)
     241static int vgsvcVMInfoWinProcessesGetModuleNameA(PVBOXSERVICEVMINFOPROC const pProc, PRTUTF16 *ppszName)
    243242{
    244243    AssertPtrReturn(pProc, VERR_INVALID_POINTER);
     
    261260        DWORD dwErr = GetLastError();
    262261        if (g_cVerbosity)
    263             VBoxServiceError("Unable to open process with PID=%ld, error=%ld\n",
    264                              pProc->id, dwErr);
     262            VGSvcError("Unable to open process with PID=%u, error=%u\n", pProc->id, dwErr);
    265263        rc = RTErrConvertFromWin32(dwErr);
    266264    }
     
    283281        if (   RT_FAILURE(rc)
    284282            && g_cVerbosity > 3)
    285         {
    286            VBoxServiceError("Unable to retrieve process name for PID=%ld, error=%ld\n",
    287                              pProc->id, GetLastError());
    288         }
     283           VGSvcError("Unable to retrieve process name for PID=%u, error=%u\n", pProc->id, GetLastError());
    289284        else
    290285        {
     
    310305 * @param   tkClass         The kind of token information to get.
    311306 */
    312 static int VBoxServiceVMInfoWinProcessesGetTokenInfo(PVBOXSERVICEVMINFOPROC pProc,
    313                                                      TOKEN_INFORMATION_CLASS tkClass)
     307static int vgsvcVMInfoWinProcessesGetTokenInfo(PVBOXSERVICEVMINFOPROC pProc, TOKEN_INFORMATION_CLASS tkClass)
    314308{
    315309    AssertPtrReturn(pProc, VERR_INVALID_POINTER);
     
    321315        dwErr = GetLastError();
    322316        if (g_cVerbosity > 4)
    323             VBoxServiceError("Unable to open process with PID=%ld, error=%ld\n",
    324                              pProc->id, dwErr);
     317            VGSvcError("Unable to open process with PID=%u, error=%u\n", pProc->id, dwErr);
    325318        return RTErrConvertFromWin32(dwErr);
    326319    }
     
    335328        {
    336329            case TokenStatistics:
     330                /** @todo r=bird: Someone has been reading too many MSDN examples. You shall
     331                 *        use RTMemAlloc here!  There is absolutely not reason for
     332                 *        complicating things uncessarily by using HeapAlloc! */
    337333                dwTokenInfoSize = sizeof(TOKEN_STATISTICS);
    338                 pvTokenInfo = HeapAlloc(GetProcessHeap(),
    339                                         HEAP_ZERO_MEMORY, dwTokenInfoSize);
     334                pvTokenInfo = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwTokenInfoSize);
    340335                AssertPtr(pvTokenInfo);
    341336                break;
     
    352347
    353348            default:
    354                 VBoxServiceError("Token class not implemented: %ld\n", tkClass);
     349                VGSvcError("Token class not implemented: %d\n", tkClass);
    355350                rc = VERR_NOT_IMPLEMENTED;
    356351                break;
     
    370365                    {
    371366                        case TokenGroups:
    372                             pvTokenInfo = (PTOKEN_GROUPS)HeapAlloc(GetProcessHeap(),
    373                                                                    HEAP_ZERO_MEMORY, dwRetLength);
     367                            pvTokenInfo = (PTOKEN_GROUPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwRetLength);
    374368                            if (!pvTokenInfo)
    375369                                dwErr = GetLastError();
     
    378372
    379373                        case TokenUser:
    380                             pvTokenInfo = (PTOKEN_USER)HeapAlloc(GetProcessHeap(),
    381                                                                  HEAP_ZERO_MEMORY, dwRetLength);
     374                            pvTokenInfo = (PTOKEN_USER)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwRetLength);
    382375                            if (!pvTokenInfo)
    383376                                dwErr = GetLastError();
     
    478471                        if (dwErr != ERROR_SUCCESS)
    479472                        {
    480                             VBoxServiceError("Error retrieving SID of process PID=%ld: %ld\n",
    481                                              pProc->id, dwErr);
     473                            VGSvcError("Error retrieving SID of process PID=%u: %u\n", pProc->id, dwErr);
    482474                            if (pProc->pSid)
    483475                            {
     
    506498    {
    507499        if (g_cVerbosity)
    508             VBoxServiceError("Unable to query token information for PID=%ld, error=%ld\n",
    509                              pProc->id, dwErr);
     500            VGSvcError("Unable to query token information for PID=%u, error=%u\n", pProc->id, dwErr);
    510501        rc = RTErrConvertFromWin32(dwErr);
    511502    }
     
    526517 * @param   pcProcs     Where to store the returned process count.
    527518 */
    528 static int VBoxServiceVMInfoWinProcessesEnumerate(PVBOXSERVICEVMINFOPROC *ppaProcs, PDWORD pcProcs)
     519static int vgsvcVMInfoWinProcessesEnumerate(PVBOXSERVICEVMINFOPROC *ppaProcs, PDWORD pcProcs)
    529520{
    530521    AssertPtr(ppaProcs);
     
    582573                paProcs[i].pSid = NULL;
    583574
    584                 int rc2 = VBoxServiceVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenUser);
     575                int rc2 = vgsvcVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenUser);
    585576                if (RT_FAILURE(rc2) && g_cVerbosity)
    586                     VBoxServiceError("Get token class \"user\" for process %ld failed, rc=%Rrc\n",
    587                                      paProcs[i].id, rc2);
    588 
    589                 rc2 = VBoxServiceVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenGroups);
     577                    VGSvcError("Get token class 'user' for process %u failed, rc=%Rrc\n", paProcs[i].id, rc2);
     578
     579                rc2 = vgsvcVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenGroups);
    590580                if (RT_FAILURE(rc2) && g_cVerbosity)
    591                     VBoxServiceError("Get token class \"groups\" for process %ld failed, rc=%Rrc\n",
    592                                      paProcs[i].id, rc2);
    593 
    594                 rc2 = VBoxServiceVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenStatistics);
     581                    VGSvcError("Get token class 'groups' for process %u failed, rc=%Rrc\n", paProcs[i].id, rc2);
     582
     583                rc2 = vgsvcVMInfoWinProcessesGetTokenInfo(&paProcs[i], TokenStatistics);
    595584                if (RT_FAILURE(rc2) && g_cVerbosity)
    596                     VBoxServiceError("Get token class \"statistics\" for process %ld failed, rc=%Rrc\n",
    597                                      paProcs[i].id, rc2);
     585                    VGSvcError("Get token class 'statistics' for process %u failed, rc=%Rrc\n", paProcs[i].id, rc2);
    598586            }
    599587
     
    605593            }
    606594            else
    607                 VBoxServiceVMInfoWinProcessesFree(cProcesses, paProcs);
     595                vgsvcVMInfoWinProcessesFree(cProcesses, paProcs);
    608596        }
    609597        else
     
    617605/**
    618606 * Frees the process structures returned by
    619  * VBoxServiceVMInfoWinProcessesEnumerate() before.
     607 * vgsvcVMInfoWinProcessesEnumerate() before.
    620608 *
    621609 * @param   paProcs     What
    622610 */
    623 static void VBoxServiceVMInfoWinProcessesFree(DWORD cProcs, PVBOXSERVICEVMINFOPROC paProcs)
     611static void vgsvcVMInfoWinProcessesFree(DWORD cProcs, PVBOXSERVICEVMINFOPROC paProcs)
    624612{
    625613    for (DWORD i = 0; i < cProcs; i++)
     
    644632 * @param   puSession       Looked up session number.  Optional.
    645633 */
    646 static uint32_t VBoxServiceVMInfoWinSessionHasProcesses(PLUID pSession,
    647                                                         PVBOXSERVICEVMINFOPROC const paProcs, DWORD cProcs,
    648                                                         PULONG puTerminalSession)
     634static uint32_t vgsvcVMInfoWinSessionHasProcesses(PLUID pSession,
     635                                                  PVBOXSERVICEVMINFOPROC const paProcs, DWORD cProcs, PULONG puTerminalSession)
    649636{
    650637    if (!pSession)
    651638    {
    652         VBoxServiceVerbose(1, "Session became invalid while enumerating!\n");
     639        VGSvcVerbose(1, "Session became invalid while enumerating!\n");
    653640        return 0;
    654641    }
     
    660647    if (rcNt != STATUS_SUCCESS)
    661648    {
    662         VBoxServiceError("Could not get logon session data! rcNt=%#x\n", rcNt);
     649        VGSvcError("Could not get logon session data! rcNt=%#x\n", rcNt);
    663650        return 0;
    664651    }
     
    666653    if (!IsValidSid(pSessionData->Sid))
    667654    {
    668        VBoxServiceError("User SID=%p is not valid\n", pSessionData->Sid);
     655       VGSvcError("User SID=%p is not valid\n", pSessionData->Sid);
    669656       if (pSessionData)
    670657           g_pfnLsaFreeReturnBuffer(pSessionData);
     
    692679                {
    693680                    PRTUTF16 pszName;
    694                     int rc2 = VBoxServiceVMInfoWinProcessesGetModuleNameA(&paProcs[i], &pszName);
    695                     VBoxServiceVerbose(4, "Session %RU32: PID=%ld (fInt=%RTbool): %ls\n",
    696                                        pSessionData->Session, paProcs[i].id, paProcs[i].fInteractive,
    697                                        RT_SUCCESS(rc2) ? pszName : L"<Unknown>");
     681                    int rc2 = vgsvcVMInfoWinProcessesGetModuleNameA(&paProcs[i], &pszName);
     682                    VGSvcVerbose(4, "Session %RU32: PID=%u (fInt=%RTbool): %ls\n",
     683                                 pSessionData->Session, paProcs[i].id, paProcs[i].fInteractive,
     684                                 RT_SUCCESS(rc2) ? pszName : L"<Unknown>");
    698685                    if (RT_SUCCESS(rc2))
    699686                        RTUtf16Free(pszName);
     
    727714 * @param   pszWhat             What this is. For the log.
    728715 */
    729 static void VBoxServiceVMInfoWinSafeCopy(PWCHAR pwszDst, size_t cbDst, LSA_UNICODE_STRING const *pSrc, const char *pszWhat)
     716static void vgsvcVMInfoWinSafeCopy(PWCHAR pwszDst, size_t cbDst, LSA_UNICODE_STRING const *pSrc, const char *pszWhat)
    730717{
    731718    Assert(RT_ALIGN(cbDst, sizeof(WCHAR)) == cbDst);
     
    734721    if (cbCopy + sizeof(WCHAR) > cbDst)
    735722    {
    736         VBoxServiceVerbose(0, "%s is too long - %u bytes, buffer %u bytes! It will be truncated.\n",
    737                            pszWhat, cbCopy, cbDst);
     723        VGSvcVerbose(0, "%s is too long - %u bytes, buffer %u bytes! It will be truncated.\n", pszWhat, cbCopy, cbDst);
    738724        cbCopy = cbDst - sizeof(WCHAR);
    739725    }
     
    751737 * @param   pSession            The session to check.
    752738 */
    753 static bool VBoxServiceVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER pUserInfo, PLUID pSession)
     739static bool vgsvcVMInfoWinIsLoggedIn(PVBOXSERVICEVMINFOUSER pUserInfo, PLUID pSession)
    754740{
    755741    AssertPtrReturn(pUserInfo, false);
     
    769755                /* If we don't have enough memory it's hard to judge whether the specified user
    770756                 * is logged in or not, so just assume he/she's not. */
    771                 VBoxServiceVerbose(3, "Not enough memory to retrieve logon session data!\n");
     757                VGSvcVerbose(3, "Not enough memory to retrieve logon session data!\n");
    772758                break;
    773759
     
    778764
    779765            default:
    780                 VBoxServiceError("LsaGetLogonSessionData failed with error %u\n", ulError);
     766                VGSvcError("LsaGetLogonSessionData failed with error %u\n", ulError);
    781767                break;
    782768        }
     
    787773    if (!pSessionData)
    788774    {
    789         VBoxServiceError("Invalid logon session data!\n");
     775        VGSvcError("Invalid logon session data!\n");
    790776        return false;
    791777    }
    792778
    793     VBoxServiceVerbose(3, "Session data: Name=%ls, SessionID=%RU32, LogonID=%ld,%ld, LogonType=%ld\n",
    794                        pSessionData->UserName.Buffer,
    795                        pSessionData->Session,
    796                        pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart,
    797                        pSessionData->LogonType);
    798 
    799     if (vboxServiceVMInfoSession0Separation())
     779    VGSvcVerbose(3, "Session data: Name=%ls, SessionID=%RU32, LogonID=%d,%u, LogonType=%u\n",
     780                 pSessionData->UserName.Buffer, pSessionData->Session,
     781                 pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart, pSessionData->LogonType);
     782
     783    if (vgsvcVMInfoSession0Separation())
    800784    {
    801785        /* Starting at Windows Vista user sessions begin with session 1, so
    802786         * ignore (stale) session 0 users. */
    803787        if (   pSessionData->Session == 0
    804         /* Also check the logon time. */
     788            /* Also check the logon time. */
    805789            || pSessionData->LogonTime.QuadPart == 0)
    806790        {
     
    823807            || (SECURITY_LOGON_TYPE)pSessionData->LogonType == CachedInteractive))
    824808    {
    825         VBoxServiceVerbose(3, "Session LogonType=%ld is supported -- looking up SID + type ...\n",
    826                            pSessionData->LogonType);
     809        VGSvcVerbose(3, "Session LogonType=%u is supported -- looking up SID + type ...\n", pSessionData->LogonType);
    827810
    828811        /*
    829812         * Copy out relevant data.
    830813         */
    831         VBoxServiceVMInfoWinSafeCopy(pUserInfo->wszUser, sizeof(pUserInfo->wszUser),
    832                                      &pSessionData->UserName, "User name");
    833         VBoxServiceVMInfoWinSafeCopy(pUserInfo->wszAuthenticationPackage, sizeof(pUserInfo->wszAuthenticationPackage),
    834                                      &pSessionData->AuthenticationPackage, "Authentication pkg name");
    835         VBoxServiceVMInfoWinSafeCopy(pUserInfo->wszLogonDomain, sizeof(pUserInfo->wszLogonDomain),
    836                                      &pSessionData->LogonDomain, "Logon domain name");
     814        vgsvcVMInfoWinSafeCopy(pUserInfo->wszUser, sizeof(pUserInfo->wszUser), &pSessionData->UserName, "User name");
     815        vgsvcVMInfoWinSafeCopy(pUserInfo->wszAuthenticationPackage, sizeof(pUserInfo->wszAuthenticationPackage),
     816                               &pSessionData->AuthenticationPackage, "Authentication pkg name");
     817        vgsvcVMInfoWinSafeCopy(pUserInfo->wszLogonDomain, sizeof(pUserInfo->wszLogonDomain),
     818                               &pSessionData->LogonDomain, "Logon domain name");
    837819
    838820        TCHAR           szOwnerName[_MAX_PATH]  = { 0 };
     
    857839             */
    858840            if (dwErr != ERROR_NONE_MAPPED)
    859                 VBoxServiceError("Failed looking up account info for user=%ls, error=$ld!\n",
    860                                  pUserInfo->wszUser, dwErr);
     841                VGSvcError("Failed looking up account info for user=%ls, error=$ld!\n", pUserInfo->wszUser, dwErr);
    861842        }
    862843        else
     
    864845            if (enmOwnerType == SidTypeUser) /* Only recognize users; we don't care about the rest! */
    865846            {
    866                 VBoxServiceVerbose(3, "Account User=%ls, Session=%ld, LogonID=%ld,%ld, AuthPkg=%ls, Domain=%ls\n",
    867                                    pUserInfo->wszUser, pSessionData->Session, pSessionData->LogonId.HighPart,
    868                                    pSessionData->LogonId.LowPart, pUserInfo->wszAuthenticationPackage,
    869                                    pUserInfo->wszLogonDomain);
     847                VGSvcVerbose(3, "Account User=%ls, Session=%u, LogonID=%d,%u, AuthPkg=%ls, Domain=%ls\n",
     848                             pUserInfo->wszUser, pSessionData->Session, pSessionData->LogonId.HighPart,
     849                             pSessionData->LogonId.LowPart, pUserInfo->wszAuthenticationPackage, pUserInfo->wszLogonDomain);
    870850
    871851                /**
     
    893873
    894874                    if (s_fSkipRDPDetection)
    895                         VBoxServiceVerbose(0, "Detection of logged-in users via RDP is disabled\n");
     875                        VGSvcVerbose(0, "Detection of logged-in users via RDP is disabled\n");
    896876                }
    897877
     
    913893                        if (cbRet)
    914894                            iState = *pBuffer;
    915                         VBoxServiceVerbose(3, "Account User=%ls, WTSConnectState=%d (%ld)\n",
    916                                            pUserInfo->wszUser, iState, cbRet);
     895                        VGSvcVerbose(3, "Account User=%ls, WTSConnectState=%d (%u)\n", pUserInfo->wszUser, iState, cbRet);
    917896                        if (    iState == WTSActive           /* User logged on to WinStation. */
    918897                             || iState == WTSShadow           /* Shadowing another WinStation. */
     
    921900                            /** @todo On Vista and W2K, always "old" user name are still
    922901                             *        there. Filter out the old one! */
    923                             VBoxServiceVerbose(3, "Account User=%ls using TCS/RDP, state=%d \n",
    924                                                pUserInfo->wszUser, iState);
     902                            VGSvcVerbose(3, "Account User=%ls using TCS/RDP, state=%d \n", pUserInfo->wszUser, iState);
    925903                            fFoundUser = true;
    926904                        }
     
    939917                             */
    940918                            case ERROR_CTX_WINSTATION_NOT_FOUND:
    941                                 VBoxServiceVerbose(3, "No WinStation found for user=%ls\n",
    942                                                    pUserInfo->wszUser);
     919                                VGSvcVerbose(3, "No WinStation found for user=%ls\n", pUserInfo->wszUser);
    943920                                break;
    944921
    945922                            default:
    946                                 VBoxServiceVerbose(3, "Cannot query WTS connection state for user=%ls, error=%ld\n",
    947                                                    pUserInfo->wszUser, dwLastErr);
     923                                VGSvcVerbose(3, "Cannot query WTS connection state for user=%ls, error=%u\n",
     924                                             pUserInfo->wszUser, dwLastErr);
    948925                                break;
    949926                        }
     
    954931            }
    955932            else
    956                 VBoxServiceVerbose(3, "SID owner type=%d not handled, skipping\n",
    957                                    enmOwnerType);
    958         }
    959 
    960         VBoxServiceVerbose(3, "Account User=%ls %s logged in\n",
    961                            pUserInfo->wszUser, fFoundUser ? "is" : "is not");
     933                VGSvcVerbose(3, "SID owner type=%d not handled, skipping\n", enmOwnerType);
     934        }
     935
     936        VGSvcVerbose(3, "Account User=%ls %s logged in\n", pUserInfo->wszUser, fFoundUser ? "is" : "is not");
    962937    }
    963938
     
    970945
    971946
    972 static int vboxServiceVMInfoWinWriteLastInput(PVBOXSERVICEVEPROPCACHE pCache,
    973                                               const char *pszUser, const char *pszDomain)
     947static int vgsvcVMInfoWinWriteLastInput(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain)
    974948{
    975949    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    980954
    981955    char szPipeName[255];
    982     if (RTStrPrintf(szPipeName, sizeof(szPipeName), "%s%s",
    983                     VBOXTRAY_IPC_PIPE_PREFIX, pszUser))
     956/** @todo r=bird:  Pointless if.  */
     957    if (RTStrPrintf(szPipeName, sizeof(szPipeName), "%s%s", VBOXTRAY_IPC_PIPE_PREFIX, pszUser))
    984958    {
    985959        bool fReportToHost = false;
     
    990964        if (RT_SUCCESS(rc))
    991965        {
    992             VBOXTRAYIPCHEADER ipcHdr = { VBOXTRAY_IPC_HDR_MAGIC, 0 /* Header version */,
    993                                          VBOXTRAYIPCMSGTYPE_USERLASTINPUT, 0 /* No msg */ };
     966            VBOXTRAYIPCHEADER ipcHdr =
     967            {
     968                /* .uMagic      = */ VBOXTRAY_IPC_HDR_MAGIC,
     969                /* .uHdrVersion = */ 0,
     970                /* .uMsgType    = */ VBOXTRAYIPCMSGTYPE_USERLASTINPUT,
     971                /* .cbMsgData   = */ 0 /* No msg */
     972            };
    994973
    995974            rc = RTLocalIpcSessionWrite(hSession, &ipcHdr, sizeof(ipcHdr));
     
    997976            VBOXTRAYIPCRES_USERLASTINPUT ipcRes;
    998977            if (RT_SUCCESS(rc))
    999                 rc = RTLocalIpcSessionRead(hSession, &ipcRes, sizeof(ipcRes),
    1000                                            NULL /* Exact read */);
     978                rc = RTLocalIpcSessionRead(hSession, &ipcRes, sizeof(ipcRes), NULL /* Exact read */);
    1001979            if (   RT_SUCCESS(rc)
    1002980                /* If uLastInput is set to UINT32_MAX VBoxTray was not able to retrieve the
     
    1008986                          : VBoxGuestUserState_Idle;
    1009987
    1010                 rc = vboxServiceUserUpdateF(pCache, pszUser, pszDomain, "UsageState",
    1011                                               userState == VBoxGuestUserState_InUse
    1012                                             ? "InUse" : "Idle");
     988                rc = VGSvcUserUpdateF(pCache, pszUser, pszDomain, "UsageState",
     989                                      userState == VBoxGuestUserState_InUse ? "InUse" : "Idle");
    1013990
    1014991                /*
     
    1018995                 */
    1019996                fReportToHost = rc == VINF_SUCCESS;
    1020                 VBoxServiceVerbose(4, "User \"%s\" (domain \"%s\") is idle for %RU32, fReportToHost=%RTbool\n",
    1021                                    pszUser, pszDomain ? pszDomain : "<None>", ipcRes.uLastInput, fReportToHost);
     997                VGSvcVerbose(4, "User '%s' (domain '%s') is idle for %RU32, fReportToHost=%RTbool\n",
     998                             pszUser, pszDomain ? pszDomain : "<None>", ipcRes.uLastInput, fReportToHost);
    1022999
    10231000#if 0 /* Do we want to write the idle time as well? */
    10241001                    /* Also write the user's current idle time, if there is any. */
    10251002                    if (userState == VBoxGuestUserState_Idle)
    1026                         rc = vboxServiceUserUpdateF(pCache, pszUser, pszDomain, "IdleTimeMs",
    1027                                                     "%RU32", ipcRes.uLastInputMs);
     1003                        rc = vgsvcUserUpdateF(pCache, pszUser, pszDomain, "IdleTimeMs", "%RU32", ipcRes.uLastInputMs);
    10281004                    else
    1029                         rc = vboxServiceUserUpdateF(pCache, pszUser, pszDomain, "IdleTimeMs",
    1030                                                     NULL /* Delete property */);
     1005                        rc = vgsvcUserUpdateF(pCache, pszUser, pszDomain, "IdleTimeMs", NULL /* Delete property */);
    10311006
    10321007                    if (RT_SUCCESS(rc))
     
    10351010#ifdef DEBUG
    10361011            else if (ipcRes.uLastInput == UINT32_MAX)
    1037                 VBoxServiceVerbose(4, "Last input for user \"%s\" is not supported, skipping\n",
    1038                                    pszUser, rc);
    1039 
    1040             VBoxServiceVerbose(4, "Getting last input for user \"%s\" ended with rc=%Rrc\n",
    1041                                pszUser, rc);
     1012                VGSvcVerbose(4, "Last input for user '%s' is not supported, skipping\n", pszUser, rc);
     1013
     1014            VGSvcVerbose(4, "Getting last input for user '%s' ended with rc=%Rrc\n", pszUser, rc);
    10421015#endif
    10431016            int rc2 = RTLocalIpcSessionClose(hSession);
     
    10531026                    /* No VBoxTray (or too old version which does not support IPC) running
    10541027                       for the given user. Not much we can do then. */
    1055                     VBoxServiceVerbose(4, "VBoxTray for user \"%s\" not running (anymore), no last input available\n",
    1056                                        pszUser);
     1028                    VGSvcVerbose(4, "VBoxTray for user '%s' not running (anymore), no last input available\n", pszUser);
    10571029
    10581030                    /* Overwrite rc from above. */
    1059                     rc = vboxServiceUserUpdateF(pCache, pszUser, pszDomain,
    1060                                                 "UsageState", "Idle");
     1031                    rc = VGSvcUserUpdateF(pCache, pszUser, pszDomain, "UsageState", "Idle");
    10611032
    10621033                    fReportToHost = rc == VINF_SUCCESS;
     
    10671038
    10681039                default:
    1069                     VBoxServiceError("Error querying last input for user \"%s\", rc=%Rrc\n",
    1070                                      pszUser, rc);
     1040                    VGSvcError("Error querying last input for user '%s', rc=%Rrc\n", pszUser, rc);
    10711041                    break;
    10721042            }
     
    10761046        {
    10771047            Assert(userState != VBoxGuestUserState_Unknown);
    1078             int rc2 = VbglR3GuestUserReportState(pszUser, pszDomain, userState,
    1079                                                  NULL /* No details */, 0);
     1048            int rc2 = VbglR3GuestUserReportState(pszUser, pszDomain, userState, NULL /* No details */, 0);
    10801049            if (RT_FAILURE(rc2))
    1081                 VBoxServiceError("Error reporting usage state %ld for user \"%s\" to host, rc=%Rrc\n",
    1082                                  userState, pszUser, rc2);
    1083 
     1050                VGSvcError("Error reporting usage state %d for user '%s' to host, rc=%Rrc\n", userState, pszUser, rc2);
    10841051            if (RT_SUCCESS(rc))
    10851052                rc = rc2;
     
    11021069 * @param   pcUsersInList   Where to store the number of users in the list.
    11031070 */
    1104 int VBoxServiceVMInfoWinWriteUsers(PVBOXSERVICEVEPROPCACHE pCache,
    1105                                    char **ppszUserList, uint32_t *pcUsersInList)
     1071int VGSvcVMInfoWinWriteUsers(PVBOXSERVICEVEPROPCACHE pCache, char **ppszUserList, uint32_t *pcUsersInList)
    11061072{
    11071073    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    11281094    if (rcNt != STATUS_SUCCESS)
    11291095    {
    1130         ULONG ulError = LsaNtStatusToWinError(rcNt);
    1131         switch (ulError)
     1096        ULONG uError = LsaNtStatusToWinError(rcNt);
     1097        switch (uError)
    11321098        {
    11331099            case ERROR_NOT_ENOUGH_MEMORY:
    1134                 VBoxServiceError("Not enough memory to enumerate logon sessions!\n");
     1100                VGSvcError("Not enough memory to enumerate logon sessions!\n");
    11351101                break;
    11361102
     
    11381104                /* If we're about to shutdown when we were in the middle of enumerating the logon
    11391105                 * sessions, skip the error to not confuse the user with an unnecessary log message. */
    1140                 VBoxServiceVerbose(3, "Shutdown in progress ...\n");
    1141                 ulError = ERROR_SUCCESS;
     1106                VGSvcVerbose(3, "Shutdown in progress ...\n");
     1107                uError = ERROR_SUCCESS;
    11421108                break;
    11431109
    11441110            default:
    1145                 VBoxServiceError("LsaEnumerate failed with error %RU32\n", ulError);
     1111                VGSvcError("LsaEnumerate failed with error %RU32\n", uError);
    11461112                break;
    11471113        }
     
    11501116            g_pfnLsaFreeReturnBuffer(paSessions);
    11511117
    1152         return RTErrConvertFromWin32(ulError);
    1153     }
    1154     VBoxServiceVerbose(3, "Found %ld sessions\n", cSessions);
     1118        return RTErrConvertFromWin32(uError);
     1119    }
     1120    VGSvcVerbose(3, "Found %u sessions\n", cSessions);
    11551121
    11561122    PVBOXSERVICEVMINFOPROC  paProcs;
    11571123    DWORD                   cProcs;
    1158     rc = VBoxServiceVMInfoWinProcessesEnumerate(&paProcs, &cProcs);
     1124    rc = vgsvcVMInfoWinProcessesEnumerate(&paProcs, &cProcs);
    11591125    if (RT_FAILURE(rc))
    11601126    {
    11611127        if (rc == VERR_NO_MEMORY)
    1162             VBoxServiceError("Not enough memory to enumerate processes\n");
     1128            VGSvcError("Not enough memory to enumerate processes\n");
    11631129        else
    1164             VBoxServiceError("Failed to enumerate processes, rc=%Rrc\n", rc);
     1130            VGSvcError("Failed to enumerate processes, rc=%Rrc\n", rc);
    11651131    }
    11661132    else
     
    11691135        pUserInfo = (PVBOXSERVICEVMINFOUSER)RTMemAllocZ(cSessions * sizeof(VBOXSERVICEVMINFOUSER) + 1);
    11701136        if (!pUserInfo)
    1171             VBoxServiceError("Not enough memory to store enumerated users!\n");
     1137            VGSvcError("Not enough memory to store enumerated users!\n");
    11721138        else
    11731139        {
     
    11801146            for (ULONG i = 0; i < cSessions; i++)
    11811147            {
    1182                 VBoxServiceVerbose(3, "Handling session %RU32 (of %RU32)\n", i + 1, cSessions);
     1148                VGSvcVerbose(3, "Handling session %RU32 (of %RU32)\n", i + 1, cSessions);
    11831149
    11841150                VBOXSERVICEVMINFOUSER userSession;
    1185                 if (VBoxServiceVMInfoWinIsLoggedIn(&userSession, &paSessions[i]))
     1151                if (vgsvcVMInfoWinIsLoggedIn(&userSession, &paSessions[i]))
    11861152                {
    1187                     VBoxServiceVerbose(4, "Handling user=%ls, domain=%ls, package=%ls, session=%RU32\n",
    1188                                        userSession.wszUser, userSession.wszLogonDomain, userSession.wszAuthenticationPackage,
    1189                                        userSession.ulLastSession);
     1153                    VGSvcVerbose(4, "Handling user=%ls, domain=%ls, package=%ls, session=%RU32\n",
     1154                                 userSession.wszUser, userSession.wszLogonDomain, userSession.wszAuthenticationPackage,
     1155                                 userSession.ulLastSession);
    11901156
    11911157                    /* Retrieve assigned processes of current session. */
    1192                     uint32_t cCurSessionProcs = VBoxServiceVMInfoWinSessionHasProcesses(&paSessions[i], paProcs, cProcs,
     1158                    uint32_t cCurSessionProcs = vgsvcVMInfoWinSessionHasProcesses(&paSessions[i], paProcs, cProcs,
    11931159                                                                                        NULL /* Terminal session ID */);
    11941160                    /* Don't return here when current session does not have assigned processes
     
    12011167                        RTStrPrintf(szDebugSessionPath,  sizeof(szDebugSessionPath),
    12021168                                    "/VirtualBox/GuestInfo/Debug/LSA/Session/%RU32", userSession.ulLastSession);
    1203                         VBoxServiceWritePropF(s_uDebugGuestPropClientID, szDebugSessionPath,
    1204                                               "#%RU32: cSessionProcs=%RU32 (of %RU32 procs total)", s_uDebugIter, cCurSessionProcs, cProcs);
     1169                        VGSvcWritePropF(s_uDebugGuestPropClientID, szDebugSessionPath,
     1170                                        "#%RU32: cSessionProcs=%RU32 (of %RU32 procs total)",
     1171                                        s_uDebugIter, cCurSessionProcs, cProcs);
    12051172                    }
    12061173
     
    12201187                            if (userSession.ulLastSession > pCurUser->ulLastSession)
    12211188                            {
    1222                                 VBoxServiceVerbose(4, "Updating user=%ls to %u processes (last used session: %RU32)\n",
     1189                                VGSvcVerbose(4, "Updating user=%ls to %u processes (last used session: %RU32)\n",
    12231190                                                   pCurUser->wszUser, cCurSessionProcs, userSession.ulLastSession);
    12241191
    12251192                                if (!cCurSessionProcs)
    1226                                     VBoxServiceVerbose(3, "Stale session for user=%ls detected! Processes: %RU32 -> %RU32, Session: %RU32 -> %RU32\n",
    1227                                                        pCurUser->wszUser,
    1228                                                        pCurUser->ulNumProcs, cCurSessionProcs,
    1229                                                        pCurUser->ulLastSession, userSession.ulLastSession);
     1193                                    VGSvcVerbose(3, "Stale session for user=%ls detected! Processes: %RU32 -> %RU32, Session: %RU32 -> %RU32\n",
     1194                                                 pCurUser->wszUser, pCurUser->ulNumProcs, cCurSessionProcs,
     1195                                                 pCurUser->ulLastSession, userSession.ulLastSession);
    12301196
    12311197                                pCurUser->ulNumProcs = cCurSessionProcs;
     
    12371203                            else if (pCurUser->ulLastSession == userSession.ulLastSession)
    12381204                            {
    1239                                 VBoxServiceVerbose(4, "Updating processes for user=%ls (old procs=%RU32, new procs=%RU32, session=%RU32)\n",
    1240                                                    pCurUser->wszUser, pCurUser->ulNumProcs, cCurSessionProcs, pCurUser->ulLastSession);
     1205                                VGSvcVerbose(4, "Updating processes for user=%ls (old procs=%RU32, new procs=%RU32, session=%RU32)\n",
     1206                                             pCurUser->wszUser, pCurUser->ulNumProcs, cCurSessionProcs, pCurUser->ulLastSession);
    12411207
    12421208                                pCurUser->ulNumProcs = cCurSessionProcs;
     
    12501216                    if (!fFoundUser)
    12511217                    {
    1252                         VBoxServiceVerbose(4, "Adding new user=%ls (session=%RU32) with %RU32 processes\n",
    1253                                            userSession.wszUser, userSession.ulLastSession, cCurSessionProcs);
     1218                        VGSvcVerbose(4, "Adding new user=%ls (session=%RU32) with %RU32 processes\n",
     1219                                     userSession.wszUser, userSession.ulLastSession, cCurSessionProcs);
    12541220
    12551221                        memcpy(&pUserInfo[cUniqueUsers], &userSession, sizeof(VBOXSERVICEVMINFOUSER));
     
    12621228
    12631229            if (g_cVerbosity > 3)
    1264                 VBoxServiceWritePropF(s_uDebugGuestPropClientID, "/VirtualBox/GuestInfo/Debug/LSA",
    1265                                       "#%RU32: cSessions=%RU32, cProcs=%RU32, cUniqueUsers=%RU32",
    1266                                       s_uDebugIter, cSessions, cProcs, cUniqueUsers);
    1267 
    1268             VBoxServiceVerbose(3, "Found %u unique logged-in user(s)\n",
    1269                                cUniqueUsers);
     1230                VGSvcWritePropF(s_uDebugGuestPropClientID, "/VirtualBox/GuestInfo/Debug/LSA",
     1231                                "#%RU32: cSessions=%RU32, cProcs=%RU32, cUniqueUsers=%RU32",
     1232                                s_uDebugIter, cSessions, cProcs, cUniqueUsers);
     1233
     1234            VGSvcVerbose(3, "Found %u unique logged-in user(s)\n", cUniqueUsers);
    12701235
    12711236            for (ULONG i = 0; i < cUniqueUsers; i++)
     
    12741239                {
    12751240                    char szDebugUserPath[255]; RTStrPrintf(szDebugUserPath,  sizeof(szDebugUserPath), "/VirtualBox/GuestInfo/Debug/LSA/User/%RU32", i);
    1276                     VBoxServiceWritePropF(s_uDebugGuestPropClientID, szDebugUserPath,
    1277                                           "#%RU32: szName=%ls, sessionID=%RU32, cProcs=%RU32",
    1278                                           s_uDebugIter, pUserInfo[i].wszUser, pUserInfo[i].ulLastSession, pUserInfo[i].ulNumProcs);
     1241                    VGSvcWritePropF(s_uDebugGuestPropClientID, szDebugUserPath,
     1242                                    "#%RU32: szName=%ls, sessionID=%RU32, cProcs=%RU32",
     1243                                    s_uDebugIter, pUserInfo[i].wszUser, pUserInfo[i].ulLastSession, pUserInfo[i].ulNumProcs);
    12791244                }
    12801245
     
    12851250                if (fAddUser)
    12861251                {
    1287                     VBoxServiceVerbose(3, "User \"%ls\" has %RU32 interactive processes (session=%RU32)\n",
    1288                                        pUserInfo[i].wszUser, pUserInfo[i].ulNumProcs, pUserInfo[i].ulLastSession);
     1252                    VGSvcVerbose(3, "User '%ls' has %RU32 interactive processes (session=%RU32)\n",
     1253                                 pUserInfo[i].wszUser, pUserInfo[i].ulNumProcs, pUserInfo[i].ulLastSession);
    12891254
    12901255                    if (cUsersInList > 0)
     
    13091274                        /* Do idle detection. */
    13101275                        if (RT_SUCCESS(rc))
    1311                             rc = vboxServiceVMInfoWinWriteLastInput(pCache, pszUser, pszDomain);
     1276                            rc = vgsvcVMInfoWinWriteLastInput(pCache, pszUser, pszDomain);
    13121277                    }
    13131278                    else
     
    13231288            RTMemFree(pUserInfo);
    13241289        }
    1325         VBoxServiceVMInfoWinProcessesFree(cProcs, paProcs);
     1290        vgsvcVMInfoWinProcessesFree(cProcs, paProcs);
    13261291    }
    13271292    if (paSessions)
     
    13411306
    13421307
    1343 int VBoxServiceWinGetComponentVersions(uint32_t uClientID)
     1308int VGSvcVMInfoWinGetComponentVersions(uint32_t uClientID)
    13441309{
    13451310    int rc;
     
    14091374    {
    14101375        char szVer[128];
    1411         VBoxServiceGetFileVersionString(aVBoxFiles[i].pszFilePath, aVBoxFiles[i].pszFileName, szVer, sizeof(szVer));
     1376        VGSvcUtilWinGetFileVersionString(aVBoxFiles[i].pszFilePath, aVBoxFiles[i].pszFileName, szVer, sizeof(szVer));
    14121377        char szPropPath[256];
    14131378        RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestAdd/Components/%s", aVBoxFiles[i].pszFileName);
    1414         rc = VBoxServiceWritePropF(uClientID, szPropPath, "%s", szVer);
     1379        rc = VGSvcWritePropF(uClientID, szPropPath, "%s", szVer);
    14151380    }
    14161381
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp

    r57920 r58029  
    125125
    126126#ifdef VBOX_WITH_DBUS
    127 /** ConsoleKit defines (taken from 0.4.5). */
    128 #define CK_NAME      "org.freedesktop.ConsoleKit"
    129 #define CK_PATH      "/org/freedesktop/ConsoleKit"
    130 #define CK_INTERFACE "org.freedesktop.ConsoleKit"
    131 
    132 #define CK_MANAGER_PATH      "/org/freedesktop/ConsoleKit/Manager"
    133 #define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
    134 #define CK_SEAT_INTERFACE    "org.freedesktop.ConsoleKit.Seat"
    135 #define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
     127/** @name ConsoleKit defines (taken from 0.4.5).
     128 * @{ */
     129# define CK_NAME                "org.freedesktop.ConsoleKit"
     130# define CK_PATH                "/org/freedesktop/ConsoleKit"
     131# define CK_INTERFACE           "org.freedesktop.ConsoleKit"
     132# define CK_MANAGER_PATH        "/org/freedesktop/ConsoleKit/Manager"
     133# define CK_MANAGER_INTERFACE   "org.freedesktop.ConsoleKit.Manager"
     134# define CK_SEAT_INTERFACE      "org.freedesktop.ConsoleKit.Seat"
     135# define CK_SESSION_INTERFACE   "org.freedesktop.ConsoleKit.Session"
     136/** @} */
    136137#endif
    137138
     
    144145 * @return  IPRT status code.
    145146 */
    146 int VBoxServiceVMInfoSignal(void)
     147int VGSvcVMInfoSignal(void)
    147148{
    148149    /* Trigger a re-enumeration of all logged-in users by unblocking
     
    155156
    156157
    157 /** @copydoc VBOXSERVICE::pfnPreInit */
    158 static DECLCALLBACK(int) VBoxServiceVMInfoPreInit(void)
     158/**
     159 * @interface_method_impl{VBOXSERVICE,pfnPreInit}
     160 */
     161static DECLCALLBACK(int) vbsvcVMInfoPreInit(void)
    159162{
    160163    return VINF_SUCCESS;
     
    162165
    163166
    164 /** @copydoc VBOXSERVICE::pfnOption */
    165 static DECLCALLBACK(int) VBoxServiceVMInfoOption(const char **ppszShort, int argc, char **argv, int *pi)
     167/**
     168 * @interface_method_impl{VBOXSERVICE,pfnOption}
     169 */
     170static DECLCALLBACK(int) vbsvcVMInfoOption(const char **ppszShort, int argc, char **argv, int *pi)
    166171{
    167172    /** @todo Use RTGetOpt here. */
     
    171176        /* no short options */;
    172177    else if (!strcmp(argv[*pi], "--vminfo-interval"))
    173         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    174                                   &g_cMsVMInfoInterval, 1, UINT32_MAX - 1);
     178        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_cMsVMInfoInterval, 1, UINT32_MAX - 1);
    175179    else if (!strcmp(argv[*pi], "--vminfo-user-idle-threshold"))
    176         rc = VBoxServiceArgUInt32(argc, argv, "", pi,
    177                                   &g_uVMInfoUserIdleThresholdMS, 1, UINT32_MAX - 1);
     180        rc = VGSvcArgUInt32(argc, argv, "", pi, &g_uVMInfoUserIdleThresholdMS, 1, UINT32_MAX - 1);
    178181    return rc;
    179182}
    180183
    181184
    182 /** @copydoc VBOXSERVICE::pfnInit */
    183 static DECLCALLBACK(int) VBoxServiceVMInfoInit(void)
     185/**
     186 * @interface_method_impl{VBOXSERVICE,pfnInit}
     187 */
     188static DECLCALLBACK(int) vbsvcVMInfoInit(void)
    184189{
    185190    /*
     
    206211    rc = VbglR3GuestPropConnect(&g_uVMInfoGuestPropSvcClientID);
    207212    if (RT_SUCCESS(rc))
    208         VBoxServiceVerbose(3, "Property Service Client ID: %#x\n", g_uVMInfoGuestPropSvcClientID);
     213        VGSvcVerbose(3, "Property Service Client ID: %#x\n", g_uVMInfoGuestPropSvcClientID);
    209214    else
    210215    {
     
    213218        if (rc == VERR_HGCM_SERVICE_NOT_FOUND) /* Host service is not available. */
    214219        {
    215             VBoxServiceVerbose(0, "Guest property service is not available, disabling the service\n");
     220            VGSvcVerbose(0, "Guest property service is not available, disabling the service\n");
    216221            rc = VERR_SERVICE_DISABLED;
    217222        }
    218223        else
    219             VBoxServiceError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
     224            VGSvcError("Failed to connect to the guest property service! Error: %Rrc\n", rc);
    220225        RTSemEventMultiDestroy(g_hVMInfoEvent);
    221226        g_hVMInfoEvent = NIL_RTSEMEVENTMULTI;
     
    224229    if (RT_SUCCESS(rc))
    225230    {
    226         VBoxServicePropCacheCreate(&g_VMInfoPropCache, g_uVMInfoGuestPropSvcClientID);
     231        VGSvcPropCacheCreate(&g_VMInfoPropCache, g_uVMInfoGuestPropSvcClientID);
    227232
    228233        /*
    229234         * Declare some guest properties with flags and reset values.
    230235         */
    231         int rc2 = VBoxServicePropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList,
    232                                                   VBOXSERVICEPROPCACHEFLAG_TEMPORARY | VBOXSERVICEPROPCACHEFLAG_TRANSIENT, NULL /* Delete on exit */);
     236        int rc2 = VGSvcPropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList,
     237                                            VGSVCPROPCACHE_FLAGS_TEMPORARY | VGSVCPROPCACHE_FLAGS_TRANSIENT,
     238                                            NULL /* Delete on exit */);
    233239        if (RT_FAILURE(rc2))
    234             VBoxServiceError("Failed to init property cache value \"%s\", rc=%Rrc\n", g_pszPropCacheValLoggedInUsersList, rc2);
    235 
    236         rc2 = VBoxServicePropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsers,
    237                                               VBOXSERVICEPROPCACHEFLAG_TEMPORARY | VBOXSERVICEPROPCACHEFLAG_TRANSIENT, "0");
     240            VGSvcError("Failed to init property cache value '%s', rc=%Rrc\n", g_pszPropCacheValLoggedInUsersList, rc2);
     241
     242        rc2 = VGSvcPropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsers,
     243                                        VGSVCPROPCACHE_FLAGS_TEMPORARY | VGSVCPROPCACHE_FLAGS_TRANSIENT, "0");
    238244        if (RT_FAILURE(rc2))
    239             VBoxServiceError("Failed to init property cache value \"%s\", rc=%Rrc\n", g_pszPropCacheValLoggedInUsers, rc2);
    240 
    241         rc2 = VBoxServicePropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValNoLoggedInUsers,
    242                                               VBOXSERVICEPROPCACHEFLAG_TEMPORARY | VBOXSERVICEPROPCACHEFLAG_TRANSIENT, "true");
     245            VGSvcError("Failed to init property cache value '%s', rc=%Rrc\n", g_pszPropCacheValLoggedInUsers, rc2);
     246
     247        rc2 = VGSvcPropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValNoLoggedInUsers,
     248                                        VGSVCPROPCACHE_FLAGS_TEMPORARY | VGSVCPROPCACHE_FLAGS_TRANSIENT, "true");
    243249        if (RT_FAILURE(rc2))
    244             VBoxServiceError("Failed to init property cache value \"%s\", rc=%Rrc\n", g_pszPropCacheValNoLoggedInUsers, rc2);
    245 
    246         rc2 = VBoxServicePropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValNetCount,
    247                                               VBOXSERVICEPROPCACHEFLAG_TEMPORARY | VBOXSERVICEPROPCACHEFLAG_ALWAYS_UPDATE, NULL /* Delete on exit */);
     250            VGSvcError("Failed to init property cache value '%s', rc=%Rrc\n", g_pszPropCacheValNoLoggedInUsers, rc2);
     251
     252        rc2 = VGSvcPropCacheUpdateEntry(&g_VMInfoPropCache, g_pszPropCacheValNetCount,
     253                                        VGSVCPROPCACHE_FLAGS_TEMPORARY | VGSVCPROPCACHE_FLAGS_ALWAYS_UPDATE,
     254                                        NULL /* Delete on exit */);
    248255        if (RT_FAILURE(rc2))
    249             VBoxServiceError("Failed to init property cache value \"%s\", rc=%Rrc\n", g_pszPropCacheValNetCount, rc2);
     256            VGSvcError("Failed to init property cache value '%s', rc=%Rrc\n", g_pszPropCacheValNetCount, rc2);
    250257
    251258        /*
     
    254261         */
    255262        char *pszValue;
    256         rc2 = VBoxServiceReadHostProp(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--vminfo-user-idle-threshold", true /* Read only */,
    257                                       &pszValue, NULL /* Flags */, NULL /* Timestamp */);
     263        rc2 = VGSvcReadHostProp(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/VBoxService/--vminfo-user-idle-threshold",
     264                                true /* Read only */, &pszValue, NULL /* Flags */, NULL /* Timestamp */);
    258265        if (RT_SUCCESS(rc2))
    259266        {
     
    276283 * @param   puTimestamp             Timestamp of property to retrieve. Optional.
    277284 */
    278 static int vboxServiceGetLAClientValue(uint32_t uClientID, const char *pszProperty,
    279                                        char **ppszValue, uint64_t *puTimestamp)
     285static int vgsvcGetLAClientValue(uint32_t uClientID, const char *pszProperty, char **ppszValue, uint64_t *puTimestamp)
    280286{
    281287    AssertReturn(uClientID, VERR_INVALID_PARAMETER);
     
    285291
    286292    char pszClientPath[255];
     293/** @todo r=bird: Another pointless RTStrPrintf test with wrong status code to boot. */
    287294    if (RTStrPrintf(pszClientPath, sizeof(pszClientPath),
    288295                    "/VirtualBox/HostInfo/VRDP/Client/%RU32/%s", uClientID, pszProperty))
    289296    {
    290         rc = VBoxServiceReadHostProp(g_uVMInfoGuestPropSvcClientID, pszClientPath, true /* Read only */,
    291                                      ppszValue, NULL /* Flags */, puTimestamp);
     297        rc = VGSvcReadHostProp(g_uVMInfoGuestPropSvcClientID, pszClientPath, true /* Read only */,
     298                               ppszValue, NULL /* Flags */, puTimestamp);
    292299    }
    293300    else
     
    306313 * @param   pClient                 Pointer where to store the client information.
    307314 */
    308 static int vboxServiceGetLAClientInfo(uint32_t uClientID, PVBOXSERVICELACLIENTINFO pClient)
     315static int vgsvcGetLAClientInfo(uint32_t uClientID, PVBOXSERVICELACLIENTINFO pClient)
    309316{
    310317    AssertReturn(uClientID, VERR_INVALID_PARAMETER);
    311318    AssertPtrReturn(pClient, VERR_INVALID_POINTER);
    312319
    313     int rc = vboxServiceGetLAClientValue(uClientID, "Name", &pClient->pszName,
     320    int rc = vgsvcGetLAClientValue(uClientID, "Name", &pClient->pszName,
    314321                                         NULL /* Timestamp */);
    315322    if (RT_SUCCESS(rc))
    316323    {
    317324        char *pszAttach;
    318         rc = vboxServiceGetLAClientValue(uClientID, "Attach", &pszAttach,
    319                                          &pClient->uAttachedTS);
     325        rc = vgsvcGetLAClientValue(uClientID, "Attach", &pszAttach, &pClient->uAttachedTS);
    320326        if (RT_SUCCESS(rc))
    321327        {
    322328            AssertPtr(pszAttach);
    323             pClient->fAttached = !RTStrICmp(pszAttach, "1") ? true : false;
     329            pClient->fAttached = RTStrICmp(pszAttach, "1") == 0;
    324330
    325331            RTStrFree(pszAttach);
     
    327333    }
    328334    if (RT_SUCCESS(rc))
    329         rc = vboxServiceGetLAClientValue(uClientID, "Location", &pClient->pszLocation,
    330                                          NULL /* Timestamp */);
     335        rc = vgsvcGetLAClientValue(uClientID, "Location", &pClient->pszLocation, NULL /* Timestamp */);
    331336    if (RT_SUCCESS(rc))
    332         rc = vboxServiceGetLAClientValue(uClientID, "Domain", &pClient->pszDomain,
    333                                          NULL /* Timestamp */);
     337        rc = vgsvcGetLAClientValue(uClientID, "Domain", &pClient->pszDomain, NULL /* Timestamp */);
    334338    if (RT_SUCCESS(rc))
    335339        pClient->uID = uClientID;
     
    344348 * @param   pClient                 Pointer to client information structure to free.
    345349 */
    346 static void vboxServiceFreeLAClientInfo(PVBOXSERVICELACLIENTINFO pClient)
     350static void vgsvcFreeLAClientInfo(PVBOXSERVICELACLIENTINFO pClient)
    347351{
    348352    if (pClient)
     
    378382 *                                  the property.
    379383 */
    380 int vboxServiceUserUpdateF(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain,
    381                            const char *pszKey, const char *pszValueFormat, ...)
     384int VGSvcUserUpdateF(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain,
     385                     const char *pszKey, const char *pszValueFormat, ...)
    382386{
    383387    AssertPtrReturn(pCache, VERR_INVALID_POINTER);
     
    392396    if (pszDomain)
    393397    {
     398/** @todo r=bird: RTStrAPrintf returns -1, not zero on failure!   */
    394399        if (!RTStrAPrintf(&pszName, "%s%s@%s/%s", g_pszPropCacheValUser, pszUser, pszDomain, pszKey))
    395400            rc = VERR_NO_MEMORY;
     
    397402    else
    398403    {
     404/** @todo r=bird: RTStrAPrintf returns -1, not zero on failure! You got it
     405 *        right 5 lines further down... */
    399406        if (!RTStrAPrintf(&pszName, "%s%s/%s", g_pszPropCacheValUser, pszUser, pszKey))
    400407            rc = VERR_NO_MEMORY;
     
    416423
    417424    if (RT_SUCCESS(rc))
    418         rc = VBoxServicePropCacheUpdate(pCache, pszName, pszValue);
     425        rc = VGSvcPropCacheUpdate(pCache, pszName, pszValue);
    419426    if (rc == VINF_SUCCESS) /* VBoxServicePropCacheUpdate will also return VINF_NO_CHANGE. */
    420427    {
    421428        /** @todo Combine updating flags w/ updating the actual value. */
    422         rc = VBoxServicePropCacheUpdateEntry(pCache, pszName,
    423                                              VBOXSERVICEPROPCACHEFLAG_TEMPORARY | VBOXSERVICEPROPCACHEFLAG_TRANSIENT,
    424                                              NULL /* Delete on exit */);
     429        rc = VGSvcPropCacheUpdateEntry(pCache, pszName,
     430                                       VGSVCPROPCACHE_FLAGS_TEMPORARY | VGSVCPROPCACHE_FLAGS_TRANSIENT,
     431                                       NULL /* Delete on exit */);
    425432    }
    426433
     
    436443 * Errors are ignored.
    437444 */
    438 static void vboxserviceVMInfoWriteFixedProperties(void)
     445static void vgsvcVMInfoWriteFixedProperties(void)
    439446{
    440447    /*
     
    443450    char szInfo[256];
    444451    int rc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szInfo, sizeof(szInfo));
    445     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Product",
    446                           "%s", RT_FAILURE(rc) ? "" : szInfo);
     452    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Product",
     453                    "%s", RT_FAILURE(rc) ? "" : szInfo);
    447454
    448455    rc = RTSystemQueryOSInfo(RTSYSOSINFO_RELEASE, szInfo, sizeof(szInfo));
    449     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Release",
    450                           "%s", RT_FAILURE(rc) ? "" : szInfo);
     456    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Release",
     457                    "%s", RT_FAILURE(rc) ? "" : szInfo);
    451458
    452459    rc = RTSystemQueryOSInfo(RTSYSOSINFO_VERSION, szInfo, sizeof(szInfo));
    453     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Version",
    454                           "%s", RT_FAILURE(rc) ? "" : szInfo);
     460    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Version",
     461                    "%s", RT_FAILURE(rc) ? "" : szInfo);
    455462
    456463    rc = RTSystemQueryOSInfo(RTSYSOSINFO_SERVICE_PACK, szInfo, sizeof(szInfo));
    457     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/ServicePack",
    458                           "%s", RT_FAILURE(rc) ? "" : szInfo);
     464    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/ServicePack",
     465                    "%s", RT_FAILURE(rc) ? "" : szInfo);
    459466
    460467    /*
     
    465472    char *pszAddRev;
    466473    rc = VbglR3GetAdditionsVersion(&pszAddVer, &pszAddVerExt, &pszAddRev);
    467     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Version",
    468                           "%s", RT_FAILURE(rc) ? "" : pszAddVer);
    469     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/VersionExt",
    470                           "%s", RT_FAILURE(rc) ? "" : pszAddVerExt);
    471     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Revision",
    472                           "%s", RT_FAILURE(rc) ? "" : pszAddRev);
     474    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Version",
     475                    "%s", RT_FAILURE(rc) ? "" : pszAddVer);
     476    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/VersionExt",
     477                    "%s", RT_FAILURE(rc) ? "" : pszAddVerExt);
     478    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Revision",
     479                    "%s", RT_FAILURE(rc) ? "" : pszAddRev);
    473480    if (RT_SUCCESS(rc))
    474481    {
     
    484491    char *pszInstDir;
    485492    rc = VbglR3GetAdditionsInstallationPath(&pszInstDir);
    486     VBoxServiceWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/InstallDir",
    487                           "%s", RT_FAILURE(rc) ? "" :  pszInstDir);
     493    VGSvcWritePropF(g_uVMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/InstallDir",
     494                    "%s", RT_FAILURE(rc) ? "" :  pszInstDir);
    488495    if (RT_SUCCESS(rc))
    489496        RTStrFree(pszInstDir);
    490497
    491     VBoxServiceWinGetComponentVersions(g_uVMInfoGuestPropSvcClientID);
     498    VGSvcVMInfoWinGetComponentVersions(g_uVMInfoGuestPropSvcClientID);
    492499#endif
    493500}
     501
    494502
    495503#if defined(VBOX_WITH_DBUS) && defined(RT_OS_LINUX) /* Not yet for Solaris/FreeBSB. */
     
    497505 * Simple wrapper to work around compiler-specific va_list madness.
    498506 */
    499 static dbus_bool_t vboxService_dbus_message_get_args(DBusMessage *message,
    500                                                      DBusError   *error,
    501                                                      int first_arg_type,
    502                                                      ...)
     507static dbus_bool_t vboxService_dbus_message_get_args(DBusMessage *message, DBusError *error, int first_arg_type, ...)
    503508{
    504509    va_list va;
    505510    va_start(va, first_arg_type);
    506     dbus_bool_t ret = dbus_message_get_args_valist(message, error,
    507                                                    first_arg_type, va);
     511    dbus_bool_t ret = dbus_message_get_args_valist(message, error, first_arg_type, va);
    508512    va_end(va);
    509513    return ret;
     
    511515#endif
    512516
     517
    513518/**
    514519 * Provide information about active users.
    515520 */
    516 static int vboxserviceVMInfoWriteUsers(void)
     521static int vgsvcVMInfoWriteUsers(void)
    517522{
    518     int rc = VINF_SUCCESS;
     523    int rc;
    519524    char *pszUserList = NULL;
    520525    uint32_t cUsersInList = 0;
     
    522527#ifdef RT_OS_WINDOWS
    523528# ifndef TARGET_NT4
    524     rc = VBoxServiceVMInfoWinWriteUsers(&g_VMInfoPropCache,
    525                                         &pszUserList, &cUsersInList);
     529    rc = VGSvcVMInfoWinWriteUsers(&g_VMInfoPropCache, &pszUserList, &cUsersInList);
    526530# else
    527531    rc = VERR_NOT_IMPLEMENTED;
     
    549553    /* Allocate a first array to hold 32 users max. */
    550554    char **papszUsers = (char **)RTMemAllocZ(cListSize * sizeof(char *));
    551     if (!papszUsers)
     555    if (papszUsers)
     556        rc = VINF_SUCCESS;
     557    else
    552558        rc = VERR_NO_MEMORY;
    553559
     
    558564    {
    559565# ifdef RT_OS_DARWIN /* No ut_user->ut_session on Darwin */
    560         VBoxServiceVerbose(4, "Found entry \"%s\" (type: %d, PID: %RU32)\n",
    561                            ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid);
     566        VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32)\n", ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid);
    562567# else
    563         VBoxServiceVerbose(4, "Found entry \"%s\" (type: %d, PID: %RU32, session: %RU32)\n",
    564                            ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid, ut_user->ut_session);
     568        VGSvcVerbose(4, "Found entry '%s' (type: %d, PID: %RU32, session: %RU32)\n",
     569                     ut_user->ut_user, ut_user->ut_type, ut_user->ut_pid, ut_user->ut_session);
    565570# endif
    566571        if (cUsersInList > cListSize)
     
    582587            if (!fFound)
    583588            {
    584                 VBoxServiceVerbose(4, "Adding user \"%s\" (type: %d) to list\n",
    585                                    ut_user->ut_user, ut_user->ut_type);
     589                VGSvcVerbose(4, "Adding user '%s' (type: %d) to list\n", ut_user->ut_user, ut_user->ut_type);
    586590
    587591                rc = RTStrDupEx(&papszUsers[cUsersInList], (const char *)ut_user->ut_user);
     
    602606    {
    603607        /* Handle desktop sessions using ConsoleKit. */
    604         VBoxServiceVerbose(4, "Checking ConsoleKit sessions ...\n");
     608        VGSvcVerbose(4, "Checking ConsoleKit sessions ...\n");
    605609        fHaveLibDbus = true;
    606610        dbus_error_init(&dbErr);
     
    612616    {
    613617        /* Get all available sessions. */
     618/** @todo r=bird: What's the point of hardcoding things here when we've taken the pain of defining CK_XXX constants at the top of the file (or vice versa)? */
    614619        DBusMessage *pMsgSessions = dbus_message_new_method_call("org.freedesktop.ConsoleKit",
    615620                                                                 "/org/freedesktop/ConsoleKit/Manager",
     
    617622                                                                 "GetSessions");
    618623        if (   pMsgSessions
    619             && (dbus_message_get_type(pMsgSessions) == DBUS_MESSAGE_TYPE_METHOD_CALL))
     624            && dbus_message_get_type(pMsgSessions) == DBUS_MESSAGE_TYPE_METHOD_CALL)
    620625        {
    621626            DBusMessage *pReplySessions = dbus_connection_send_with_reply_and_block(pConnection,
     
    625630                && !dbus_error_is_set(&dbErr))
    626631            {
    627                 char **ppszSessions; int cSessions;
    628                 if (   (dbus_message_get_type(pMsgSessions) == DBUS_MESSAGE_TYPE_METHOD_CALL)
     632                char **ppszSessions;
     633                int cSessions;
     634                if (   dbus_message_get_type(pMsgSessions) == DBUS_MESSAGE_TYPE_METHOD_CALL
    629635                    && vboxService_dbus_message_get_args(pReplySessions, &dbErr, DBUS_TYPE_ARRAY,
    630636                                                         DBUS_TYPE_OBJECT_PATH, &ppszSessions, &cSessions,
    631637                                                         DBUS_TYPE_INVALID /* Termination */))
    632638                {
    633                     VBoxServiceVerbose(4, "ConsoleKit: retrieved %RU16 session(s)\n", cSessions);
     639                    VGSvcVerbose(4, "ConsoleKit: retrieved %RU16 session(s)\n", cSessions);
    634640
    635641                    char **ppszCurSession = ppszSessions;
    636                     for (ppszCurSession;
    637                          ppszCurSession && *ppszCurSession; ppszCurSession++)
     642                    for (ppszCurSession; ppszCurSession && *ppszCurSession; ppszCurSession++)
    638643                    {
    639                         VBoxServiceVerbose(4, "ConsoleKit: processing session '%s' ...\n", *ppszCurSession);
     644                        VGSvcVerbose(4, "ConsoleKit: processing session '%s' ...\n", *ppszCurSession);
    640645
    641646                        /* Only respect active sessions .*/
     
    649654                        {
    650655                            DBusMessage *pReplySessionActive = dbus_connection_send_with_reply_and_block(pConnection,
    651                                                                                                          pMsgSessionActive, 30 * 1000 /* 30s timeout */,
     656                                                                                                         pMsgSessionActive,
     657                                                                                                         30 * 1000 /*sec*/,
    652658                                                                                                         &dbErr);
    653659                            if (   pReplySessionActive
     
    672678                        }
    673679
    674                         VBoxServiceVerbose(4, "ConsoleKit: session '%s' is %s\n",
     680                        VGSvcVerbose(4, "ConsoleKit: session '%s' is %s\n",
    675681                                           *ppszCurSession, fActive ? "active" : "not active");
    676682
     
    686692                        {
    687693                            DBusMessage *pReplyUnixUser = dbus_connection_send_with_reply_and_block(pConnection,
    688                                                                                                     pMsgUnixUser, 30 * 1000 /* 30s timeout */,
     694                                                                                                    pMsgUnixUser,
     695                                                                                                    30 * 1000 /* 30s timeout */,
    689696                                                                                                    &dbErr);
    690697                            if (   pReplyUnixUser
     
    711718                                        if (ppwEntry->pw_uid >= uid_min /* Only respect users, not daemons etc. */)
    712719                                        {
    713                                             VBoxServiceVerbose(4, "ConsoleKit: session '%s' -> %s (uid: %RU32)\n",
    714                                                                *ppszCurSession, ppwEntry->pw_name, uid);
     720                                            VGSvcVerbose(4, "ConsoleKit: session '%s' -> %s (uid: %RU32)\n",
     721                                                         *ppszCurSession, ppwEntry->pw_name, uid);
    715722
    716723                                            bool fFound = false;
     
    720727                                            if (!fFound)
    721728                                            {
    722                                                 VBoxServiceVerbose(4, "ConsoleKit: adding user \"%s\" to list\n",
    723                                                                    ppwEntry->pw_name);
     729                                                VGSvcVerbose(4, "ConsoleKit: adding user '%s' to list\n", ppwEntry->pw_name);
    724730
    725731                                                rc = RTStrDupEx(&papszUsers[cUsersInList], (const char *)ppwEntry->pw_name);
     
    732738                                    }
    733739                                    else
    734                                         VBoxServiceError("ConsoleKit: unable to lookup user name for uid=%RU32\n", uid);
     740                                        VGSvcError("ConsoleKit: unable to lookup user name for uid=%RU32\n", uid);
    735741                                }
    736742                                else
     
    747753                            {
    748754                                s_iBitchedAboutConsoleKit++;
    749                                 VBoxServiceError("ConsoleKit: unable to retrieve user for session '%s' (msg type=%d): %s\n",
    750                                                  *ppszCurSession, dbus_message_get_type(pMsgUnixUser),
    751                                                  dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
     755                                VGSvcError("ConsoleKit: unable to retrieve user for session '%s' (msg type=%d): %s\n",
     756                                           *ppszCurSession, dbus_message_get_type(pMsgUnixUser),
     757                                           dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
    752758                            }
    753759                        }
     
    760766                }
    761767                else
    762                 {
    763                     VBoxServiceError("ConsoleKit: unable to retrieve session parameters (msg type=%d): %s\n",
    764                                      dbus_message_get_type(pMsgSessions),
    765                                      dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
    766                 }
     768                    VGSvcError("ConsoleKit: unable to retrieve session parameters (msg type=%d): %s\n",
     769                               dbus_message_get_type(pMsgSessions),
     770                               dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
    767771                dbus_message_unref(pReplySessions);
    768772            }
     
    780784            {
    781785                s_iBitchedAboutConsoleKit++;
    782                 VBoxServiceError("Unable to invoke ConsoleKit (%d/3) -- maybe not installed / used? Error: %s\n",
    783                                  s_iBitchedAboutConsoleKit,
    784                                  dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
     786                VGSvcError("Unable to invoke ConsoleKit (%d/3) -- maybe not installed / used? Error: %s\n",
     787                           s_iBitchedAboutConsoleKit,
     788                           dbus_error_is_set(&dbErr) ? dbErr.message : "No error information available");
    785789            }
    786790        }
     
    795799        {
    796800            s_iBitchedAboutDBus++;
    797             VBoxServiceError("Unable to connect to system D-Bus (%d/3): %s\n", s_iBitchedAboutDBus,
    798                              fHaveLibDbus && dbus_error_is_set(&dbErr) ? dbErr.message : "D-Bus not installed");
     801            VGSvcError("Unable to connect to system D-Bus (%d/3): %s\n", s_iBitchedAboutDBus,
     802                       fHaveLibDbus && dbus_error_is_set(&dbErr) ? dbErr.message : "D-Bus not installed");
    799803        }
    800804    }
     
    811815    size_t cchUserList = 0;
    812816    if (RT_SUCCESS(rc))
    813     {
    814817        for (uint32_t i = 0; i < cUsersInList; i++)
    815818            cchUserList += (i != 0) + strlen(papszUsers[i]);
    816     }
    817819
    818820    /* Build the user list. */
     
    846848    Assert(RT_FAILURE(rc) || cUsersInList == 0 || (pszUserList && *pszUserList));
    847849
    848     /* If the user enumeration above failed, reset the user count to 0 except
     850    /*
     851     * If the user enumeration above failed, reset the user count to 0 except
    849852     * we didn't have enough memory anymore. In that case we want to preserve
    850853     * the previous user count in order to not confuse third party tools which
    851      * rely on that count. */
     854     * rely on that count.
     855     */
    852856    if (RT_FAILURE(rc))
    853857    {
     
    856860            static int s_iVMInfoBitchedOOM = 0;
    857861            if (s_iVMInfoBitchedOOM++ < 3)
    858                 VBoxServiceVerbose(0, "Warning: Not enough memory available to enumerate users! Keeping old value (%RU32)\n",
    859                                    g_cVMInfoLoggedInUsers);
     862                VGSvcVerbose(0, "Warning: Not enough memory available to enumerate users! Keeping old value (%RU32)\n",
     863                             g_cVMInfoLoggedInUsers);
    860864            cUsersInList = g_cVMInfoLoggedInUsers;
    861865        }
     
    866870        g_cVMInfoLoggedInUsers = cUsersInList;
    867871
    868     VBoxServiceVerbose(4, "cUsersInList=%RU32, pszUserList=%s, rc=%Rrc\n",
    869                        cUsersInList, pszUserList ? pszUserList : "<NULL>", rc);
     872    VGSvcVerbose(4, "cUsersInList=%RU32, pszUserList=%s, rc=%Rrc\n", cUsersInList, pszUserList ? pszUserList : "<NULL>", rc);
    870873
    871874    if (pszUserList)
    872875    {
    873876        AssertMsg(cUsersInList, ("pszUserList contains users whereas cUsersInList is 0\n"));
    874         rc = VBoxServicePropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList, "%s", pszUserList);
     877        rc = VGSvcPropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList, "%s", pszUserList);
    875878    }
    876879    else
    877         rc = VBoxServicePropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList, NULL);
     880        rc = VGSvcPropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsersList, NULL);
    878881    if (RT_FAILURE(rc))
    879         VBoxServiceError("Error writing logged in users list, rc=%Rrc\n", rc);
    880 
    881     rc = VBoxServicePropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsers, "%RU32", cUsersInList);
     882        VGSvcError("Error writing logged in users list, rc=%Rrc\n", rc);
     883
     884    rc = VGSvcPropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValLoggedInUsers, "%RU32", cUsersInList);
    882885    if (RT_FAILURE(rc))
    883         VBoxServiceError("Error writing logged in users count, rc=%Rrc\n", rc);
    884 
    885     rc = VBoxServicePropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValNoLoggedInUsers,
    886                                     cUsersInList == 0 ? "true" : "false");
     886        VGSvcError("Error writing logged in users count, rc=%Rrc\n", rc);
     887
     888    rc = VGSvcPropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValNoLoggedInUsers, cUsersInList == 0 ? "true" : "false");
    887889    if (RT_FAILURE(rc))
    888         VBoxServiceError("Error writing no logged in users beacon, rc=%Rrc\n", rc);
     890        VGSvcError("Error writing no logged in users beacon, rc=%Rrc\n", rc);
    889891
    890892    if (pszUserList)
    891893        RTStrFree(pszUserList);
    892894
    893     VBoxServiceVerbose(4, "Writing users returned with rc=%Rrc\n", rc);
     895    VGSvcVerbose(4, "Writing users returned with rc=%Rrc\n", rc);
    894896    return rc;
    895897}
     
    899901 * Provide information about the guest network.
    900902 */
    901 static int vboxserviceVMInfoWriteNetwork(void)
     903static int vgsvcVMInfoWriteNetwork(void)
    902904{
    903905    int         rc = VINF_SUCCESS;
     
    913915    if (!pAdpInfo)
    914916    {
    915         VBoxServiceError("VMInfo/Network: Failed to allocate IP_ADAPTER_INFO\n");
     917        VGSvcError("VMInfo/Network: Failed to allocate IP_ADAPTER_INFO\n");
    916918        return VERR_NO_MEMORY;
    917919    }
     
    928930    else if (dwRet == ERROR_NO_DATA)
    929931    {
    930         VBoxServiceVerbose(3, "VMInfo/Network: No network adapters available\n");
     932        VGSvcVerbose(3, "VMInfo/Network: No network adapters available\n");
    931933
    932934        /* If no network adapters available / present in the
     
    939941        if (pAdpInfo)
    940942            RTMemFree(pAdpInfo);
    941         VBoxServiceError("VMInfo/Network: Failed to get adapter info: Error %d\n", dwRet);
     943        VGSvcError("VMInfo/Network: Failed to get adapter info: Error %d\n", dwRet);
    942944        return RTErrConvertFromWin32(dwRet);
    943945    }
     
    952954        if (WSAENETDOWN == wsaErr)
    953955        {
    954             VBoxServiceVerbose(0, "VMInfo/Network: Network is not up yet.\n");
     956            VGSvcVerbose(0, "VMInfo/Network: Network is not up yet.\n");
    955957            wsaErr = VINF_SUCCESS;
    956958        }
    957959        else
    958             VBoxServiceError("VMInfo/Network: Failed to get a socket: Error %d\n", wsaErr);
     960            VGSvcError("VMInfo/Network: Failed to get a socket: Error %d\n", wsaErr);
    959961        if (pAdpInfo)
    960962            RTMemFree(pAdpInfo);
     
    993995        == SOCKET_ERROR)
    994996    {
    995         VBoxServiceError("VMInfo/Network: Failed to WSAIoctl() on socket: Error: %d\n", WSAGetLastError());
     997        VGSvcError("VMInfo/Network: Failed to WSAIoctl() on socket: Error: %d\n", WSAGetLastError());
    996998        if (pAdpInfo)
    997999            RTMemFree(pAdpInfo);
     
    10131015        RTStrPrintf(szIp, sizeof(szIp), "%s", inet_ntoa(pAddress->sin_addr));
    10141016        RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/IP", cIfsReported);
    1015         VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szIp);
     1017        VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szIp);
    10161018
    10171019        pAddress = (sockaddr_in *) & (aInterfaces[i].iiBroadcastAddress);
    10181020        RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/Broadcast", cIfsReported);
    1019         VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
     1021        VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
    10201022
    10211023        pAddress = (sockaddr_in *)&(aInterfaces[i].iiNetmask);
    10221024        RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/Netmask", cIfsReported);
    1023         VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
     1025        VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
    10241026
    10251027        RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/Status", cIfsReported);
    1026         VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, nFlags & IFF_UP ? "Up" : "Down");
     1028        VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, nFlags & IFF_UP ? "Up" : "Down");
    10271029
    10281030# ifndef TARGET_NT4
     
    10391041                        pAdp->Address[0], pAdp->Address[1], pAdp->Address[2],
    10401042                        pAdp->Address[3], pAdp->Address[4], pAdp->Address[5]);
    1041             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szMac);
     1043            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szMac);
    10421044        }
    10431045        else
    1044             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, NULL);
     1046            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, NULL);
    10451047# endif /* !TARGET_NT4 */
    10461048
     
    10641066    {
    10651067        rc = RTErrConvertFromErrno(errno);
    1066         VBoxServiceError("VMInfo/Network: Failed to get all interfaces: Error %Rrc\n");
     1068        VGSvcError("VMInfo/Network: Failed to get all interfaces: Error %Rrc\n");
    10671069        return rc;
    10681070    }
     
    10841086                        szInetAddr, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
    10851087            RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/IP", cIfsReported);
    1086             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
     1088            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
    10871089
    10881090            memset(szInetAddr, 0, NI_MAXHOST);
     
    10901092                        szInetAddr, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
    10911093            RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/Broadcast", cIfsReported);
    1092             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
     1094            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
    10931095
    10941096            memset(szInetAddr, 0, NI_MAXHOST);
     
    10961098                        szInetAddr, NI_MAXHOST, NULL, 0, NI_NUMERICHOST);
    10971099            RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/V4/Netmask", cIfsReported);
    1098             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
     1100            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szInetAddr);
    10991101
    11001102            /* Search for the AF_LINK interface of the current AF_INET one and get the mac. */
     
    11131115                                pu8Mac[0], pu8Mac[1], pu8Mac[2], pu8Mac[3],  pu8Mac[4], pu8Mac[5]);
    11141116                    RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/MAC", cIfsReported);
    1115                     VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szMac);
     1117                    VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", szMac);
    11161118                    break;
    11171119                }
     
    11191121
    11201122            RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%RU32/Status", cIfsReported);
    1121             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, pIfCurr->ifa_flags & IFF_UP ? "Up" : "Down");
     1123            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, pIfCurr->ifa_flags & IFF_UP ? "Up" : "Down");
    11221124
    11231125            cIfsReported++;
     
    11391141    {
    11401142        rc = RTErrConvertFromErrno(errno);
    1141         VBoxServiceError("VMInfo/Network: Failed to get a socket: Error %Rrc\n", rc);
     1143        VGSvcError("VMInfo/Network: Failed to get a socket: Error %Rrc\n", rc);
    11421144        return rc;
    11431145    }
     
    11821184        close(sd);
    11831185        RTMemTmpFree(pchBuf);
    1184         VBoxServiceError("VMInfo/Network: Error doing SIOCGIFCONF (cbBuf=%d): %Rrc\n", cbBuf, rc);
     1186        VGSvcError("VMInfo/Network: Error doing SIOCGIFCONF (cbBuf=%d): %Rrc\n", cbBuf, rc);
    11851187        return rc;
    11861188    }
     
    12371239            {
    12381240                rc = RTErrConvertFromErrno(errno);
    1239                 VBoxServiceError("VMInfo/Network: Failed to ioctl(SIOCGIFFLAGS,%s) on socket: Error %Rrc\n", pCur->ifr_name, rc);
     1241                VGSvcError("VMInfo/Network: Failed to ioctl(SIOCGIFFLAGS,%s) on socket: Error %Rrc\n", pCur->ifr_name, rc);
    12401242                break;
    12411243            }
     
    12501252            sockaddr_in *pAddress = (sockaddr_in *)&pCur->ifr_addr;
    12511253            strcpy(&szPropPath[offSubProp], "/V4/IP");
    1252             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
     1254            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
    12531255
    12541256            /* Get the broadcast address. */
     
    12571259            {
    12581260                rc = RTErrConvertFromErrno(errno);
    1259                 VBoxServiceError("VMInfo/Network: Failed to ioctl(SIOCGIFBRDADDR) on socket: Error %Rrc\n", rc);
     1261                VGSvcError("VMInfo/Network: Failed to ioctl(SIOCGIFBRDADDR) on socket: Error %Rrc\n", rc);
    12601262                break;
    12611263            }
    12621264            pAddress = (sockaddr_in *)&IfReqTmp.ifr_broadaddr;
    12631265            strcpy(&szPropPath[offSubProp], "/V4/Broadcast");
    1264             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
     1266            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
    12651267
    12661268            /* Get the net mask. */
     
    12691271            {
    12701272                rc = RTErrConvertFromErrno(errno);
    1271                 VBoxServiceError("VMInfo/Network: Failed to ioctl(SIOCGIFNETMASK) on socket: Error %Rrc\n", rc);
     1273                VGSvcError("VMInfo/Network: Failed to ioctl(SIOCGIFNETMASK) on socket: Error %Rrc\n", rc);
    12721274                break;
    12731275            }
     
    12781280# endif
    12791281            strcpy(&szPropPath[offSubProp], "/V4/Netmask");
    1280             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
     1282            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%s", inet_ntoa(pAddress->sin_addr));
    12811283
    12821284# if defined(RT_OS_SOLARIS)
     
    13041306                {
    13051307                    rc = RTErrConvertFromErrno(errno);
    1306                     VBoxServiceError("VMInfo/Network: failed to ioctl(SIOCGARP) on socket: Error %Rrc\n", rc);
     1308                    VGSvcError("VMInfo/Network: failed to ioctl(SIOCGARP) on socket: Error %Rrc\n", rc);
    13071309                    break;
    13081310                }
     
    13101312            else
    13111313            {
    1312                 VBoxServiceVerbose(2, "VMInfo/Network: Interface \"%s\" has no assigned IP address, skipping ...\n", pCur->ifr_name);
     1314                VGSvcVerbose(2, "VMInfo/Network: Interface '%s' has no assigned IP address, skipping ...\n", pCur->ifr_name);
    13131315                continue;
    13141316            }
     
    13271329            {
    13281330                rc = RTErrConvertFromErrno(errno);
    1329                 VBoxServiceError("VMInfo/Network: Failed to ioctl(SIOCGIFHWADDR) on socket: Error %Rrc\n", rc);
     1331                VGSvcError("VMInfo/Network: Failed to ioctl(SIOCGIFHWADDR) on socket: Error %Rrc\n", rc);
    13301332                break;
    13311333            }
     
    13331335# endif
    13341336            strcpy(&szPropPath[offSubProp], "/MAC");
    1335             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%02X%02X%02X%02X%02X%02X",
     1337            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%02X%02X%02X%02X%02X%02X",
    13361338                                       IfMac.au8[0], IfMac.au8[1], IfMac.au8[2], IfMac.au8[3], IfMac.au8[4], IfMac.au8[5]);
    13371339
    13381340            strcpy(&szPropPath[offSubProp], "/Status");
    1339             VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, fIfUp ? "Up" : "Down");
     1341            VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, fIfUp ? "Up" : "Down");
    13401342
    13411343            /* The name. */
     
    13441346            {
    13451347                strcpy(&szPropPath[offSubProp], "/Name");
    1346                 VBoxServicePropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%.*s", sizeof(pCur->ifr_name), pCur->ifr_name);
     1348                VGSvcPropCacheUpdate(&g_VMInfoPropCache, szPropPath, "%.*s", sizeof(pCur->ifr_name), pCur->ifr_name);
    13471349            }
    13481350
     
    13601362    close(sd);
    13611363    if (RT_FAILURE(rc))
    1362         VBoxServiceError("VMInfo/Network: Network enumeration for interface %RU32 failed with error %Rrc\n", cIfsReported, rc);
     1364        VGSvcError("VMInfo/Network: Network enumeration for interface %RU32 failed with error %Rrc\n", cIfsReported, rc);
    13631365
    13641366#endif /* !RT_OS_WINDOWS */
     
    13721374    /* Get former count. */
    13731375    uint32_t cIfsReportedOld;
    1374     rc = VBoxServiceReadPropUInt32(g_uVMInfoGuestPropSvcClientID, g_pszPropCacheValNetCount, &cIfsReportedOld,
    1375                                    0 /* Min */, UINT32_MAX /* Max */);
     1376    rc = VGSvcReadPropUInt32(g_uVMInfoGuestPropSvcClientID, g_pszPropCacheValNetCount, &cIfsReportedOld,
     1377                             0 /* Min */, UINT32_MAX /* Max */);
    13761378    if (   RT_SUCCESS(rc)
    13771379        && cIfsReportedOld > cIfsReported) /* Are some ifaces not around anymore? */
    13781380    {
    1379         VBoxServiceVerbose(3, "VMInfo/Network: Stale interface data detected (%RU32 old vs. %RU32 current)\n",
    1380                            cIfsReportedOld, cIfsReported);
     1381        VGSvcVerbose(3, "VMInfo/Network: Stale interface data detected (%RU32 old vs. %RU32 current)\n",
     1382                     cIfsReportedOld, cIfsReported);
    13811383
    13821384        uint32_t uIfaceDeleteIdx = cIfsReported;
    13831385        do
    13841386        {
    1385             VBoxServiceVerbose(3, "VMInfo/Network: Deleting stale data of interface %d ...\n", uIfaceDeleteIdx);
    1386             rc = VBoxServicePropCacheUpdateByPath(&g_VMInfoPropCache, NULL /* Value, delete */, 0 /* Flags */, "/VirtualBox/GuestInfo/Net/%RU32", uIfaceDeleteIdx++);
     1387            VGSvcVerbose(3, "VMInfo/Network: Deleting stale data of interface %d ...\n", uIfaceDeleteIdx);
     1388            rc = VGSvcPropCacheUpdateByPath(&g_VMInfoPropCache, NULL /* Value, delete */, 0 /* Flags */, "/VirtualBox/GuestInfo/Net/%RU32", uIfaceDeleteIdx++);
    13871389        } while (RT_SUCCESS(rc));
    13881390    }
     
    13901392             && rc != VERR_NOT_FOUND)
    13911393    {
    1392         VBoxServiceError("VMInfo/Network: Failed retrieving old network interfaces count with error %Rrc\n", rc);
     1394        VGSvcError("VMInfo/Network: Failed retrieving old network interfaces count with error %Rrc\n", rc);
    13931395    }
    13941396#endif
     
    13991401     * properties are no longer valid.
    14001402     */
    1401     VBoxServicePropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValNetCount, "%RU32",
    1402                                cIfsReported);
     1403    VGSvcPropCacheUpdate(&g_VMInfoPropCache, g_pszPropCacheValNetCount, "%RU32", cIfsReported);
    14031404
    14041405    /* Don't fail here; just report everything we got. */
     
    14071408
    14081409
    1409 /** @copydoc VBOXSERVICE::pfnWorker */
    1410 DECLCALLBACK(int) VBoxServiceVMInfoWorker(bool volatile *pfShutdown)
     1410/**
     1411 * @interface_method_impl{VBOXSERVICE,pfnWorker}
     1412 */
     1413static DECLCALLBACK(int) vbsvcVMInfoWorker(bool volatile *pfShutdown)
    14111414{
    14121415    int rc;
     
    14221425    WSADATA wsaData;
    14231426    if (WSAStartup(MAKEWORD(2, 2), &wsaData))
    1424         VBoxServiceError("VMInfo/Network: WSAStartup failed! Error: %Rrc\n", RTErrConvertFromWin32(WSAGetLastError()));
     1427        VGSvcError("VMInfo/Network: WSAStartup failed! Error: %Rrc\n", RTErrConvertFromWin32(WSAGetLastError()));
    14251428#endif /* RT_OS_WINDOWS */
    14261429
     
    14281431     * Write the fixed properties first.
    14291432     */
    1430     vboxserviceVMInfoWriteFixedProperties();
     1433    vgsvcVMInfoWriteFixedProperties();
    14311434
    14321435    /*
     
    14351438    for (;;)
    14361439    {
    1437         rc = vboxserviceVMInfoWriteUsers();
     1440        rc = vgsvcVMInfoWriteUsers();
    14381441        if (RT_FAILURE(rc))
    14391442            break;
    14401443
    1441         rc = vboxserviceVMInfoWriteNetwork();
     1444        rc = vgsvcVMInfoWriteNetwork();
    14421445        if (RT_FAILURE(rc))
    14431446            break;
     
    14511454        /* Check for new connection. */
    14521455        char *pszLAClientID = NULL;
    1453         int rc2 = VBoxServiceReadHostProp(g_uVMInfoGuestPropSvcClientID, g_pszLAActiveClient, true /* Read only */,
     1456        int rc2 = VGSvcReadHostProp(g_uVMInfoGuestPropSvcClientID, g_pszLAActiveClient, true /* Read only */,
    14541457                                          &pszLAClientID, NULL /* Flags */, NULL /* Timestamp */);
    14551458        if (RT_SUCCESS(rc2))
     
    14631466                /* Peek at "Attach" value to figure out if hotdesking happened. */
    14641467                char *pszAttach = NULL;
    1465                 rc2 = vboxServiceGetLAClientValue(uLAClientID, "Attach", &pszAttach,
     1468                rc2 = vgsvcGetLAClientValue(uLAClientID, "Attach", &pszAttach,
    14661469                                                 &uLAClientAttachedTS);
    14671470
     
    14701473                        || (g_LAClientAttachedTS != uLAClientAttachedTS)))
    14711474                {
    1472                     vboxServiceFreeLAClientInfo(&g_LAClientInfo);
     1475                    vgsvcFreeLAClientInfo(&g_LAClientInfo);
    14731476
    14741477                    /* Note: There is a race between setting the guest properties by the host and getting them by
    14751478                     *       the guest. */
    1476                     rc2 = vboxServiceGetLAClientInfo(uLAClientID, &g_LAClientInfo);
     1479                    rc2 = vgsvcGetLAClientInfo(uLAClientID, &g_LAClientInfo);
    14771480                    if (RT_SUCCESS(rc2))
    14781481                    {
    1479                         VBoxServiceVerbose(1, "VRDP: Hotdesk client %s with ID=%RU32, Name=%s, Domain=%s\n",
    1480                                            /* If g_LAClientAttachedTS is 0 this means there already was an active
    1481                                             * hotdesk session when VBoxService started. */
    1482                                            !g_LAClientAttachedTS ? "already active" : g_LAClientInfo.fAttached ? "connected" : "disconnected",
    1483                                            uLAClientID, g_LAClientInfo.pszName, g_LAClientInfo.pszDomain);
     1482                        VGSvcVerbose(1, "VRDP: Hotdesk client %s with ID=%RU32, Name=%s, Domain=%s\n",
     1483                                     /* If g_LAClientAttachedTS is 0 this means there already was an active
     1484                                      * hotdesk session when VBoxService started. */
     1485                                     !g_LAClientAttachedTS ? "already active" : g_LAClientInfo.fAttached ? "connected" : "disconnected",
     1486                                     uLAClientID, g_LAClientInfo.pszName, g_LAClientInfo.pszDomain);
    14841487
    14851488                        g_LAClientAttachedTS = g_LAClientInfo.uAttachedTS;
     
    14951498                        {
    14961499                            s_iBitchedAboutLAClientInfo++;
    1497                             VBoxServiceError("Error getting active location awareness client info, rc=%Rrc\n", rc2);
     1500                            VGSvcError("Error getting active location awareness client info, rc=%Rrc\n", rc2);
    14981501                        }
    14991502                    }
    15001503                }
    15011504                else if (RT_FAILURE(rc2))
    1502                      VBoxServiceError("Error getting attached value of location awareness client %RU32, rc=%Rrc\n",
    1503                                       uLAClientID, rc2);
     1505                     VGSvcError("Error getting attached value of location awareness client %RU32, rc=%Rrc\n", uLAClientID, rc2);
    15041506                if (pszAttach)
    15051507                    RTStrFree(pszAttach);
     
    15071509            else
    15081510            {
    1509                 VBoxServiceVerbose(1, "VRDP: UTTSC disconnected from VRDP server\n");
    1510                 vboxServiceFreeLAClientInfo(&g_LAClientInfo);
     1511                VGSvcVerbose(1, "VRDP: UTTSC disconnected from VRDP server\n");
     1512                vgsvcFreeLAClientInfo(&g_LAClientInfo);
    15111513            }
    15121514
     
    15201522            {
    15211523                s_iBitchedAboutLAClient++;
    1522                 VBoxServiceError("VRDP: Querying connected location awareness client failed with rc=%Rrc\n", rc2);
     1524                VGSvcError("VRDP: Querying connected location awareness client failed with rc=%Rrc\n", rc2);
    15231525            }
    15241526        }
    15251527
    1526         VBoxServiceVerbose(3, "VRDP: Handling location awareness done\n");
     1528        VGSvcVerbose(3, "VRDP: Handling location awareness done\n");
    15271529
    15281530        /*
     
    15331535        if (idNewSession != g_idVMInfoSession)
    15341536        {
    1535             VBoxServiceVerbose(3, "The VM session ID changed, flushing all properties\n");
    1536             vboxserviceVMInfoWriteFixedProperties();
    1537             VBoxServicePropCacheFlush(&g_VMInfoPropCache);
     1537            VGSvcVerbose(3, "The VM session ID changed, flushing all properties\n");
     1538            vgsvcVMInfoWriteFixedProperties();
     1539            VGSvcPropCacheFlush(&g_VMInfoPropCache);
    15381540            g_idVMInfoSession = idNewSession;
    15391541        }
     
    15531555        if (rc2 != VERR_TIMEOUT && RT_FAILURE(rc2))
    15541556        {
    1555             VBoxServiceError("RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
     1557            VGSvcError("RTSemEventMultiWait failed; rc2=%Rrc\n", rc2);
    15561558            rc = rc2;
    15571559            break;
     
    15621564            rc2 = RTSemEventMultiReset(g_hVMInfoEvent);
    15631565            if (RT_FAILURE(rc2))
    1564                 rc2 = VBoxServiceError("RTSemEventMultiReset failed; rc2=%Rrc\n", rc2);
     1566                rc2 = VGSvcError("RTSemEventMultiReset failed; rc2=%Rrc\n", rc2);
    15651567        }
    15661568    }
     
    15741576
    15751577
    1576 /** @copydoc VBOXSERVICE::pfnStop */
    1577 static DECLCALLBACK(void) VBoxServiceVMInfoStop(void)
     1578/**
     1579 * @interface_method_impl{VBOXSERVICE,pfnStop}
     1580 */
     1581static DECLCALLBACK(void) vbsvcVMInfoStop(void)
    15781582{
    15791583    RTSemEventMultiSignal(g_hVMInfoEvent);
     
    15811585
    15821586
    1583 /** @copydoc VBOXSERVICE::pfnTerm */
    1584 static DECLCALLBACK(void) VBoxServiceVMInfoTerm(void)
     1587/**
     1588 * @interface_method_impl{VBOXSERVICE,pfnTerm}
     1589 */
     1590static DECLCALLBACK(void) vbsvcVMInfoTerm(void)
    15851591{
    15861592    if (g_hVMInfoEvent != NIL_RTSEMEVENTMULTI)
     
    16021608
    16031609        /* Destroy LA client info. */
    1604         vboxServiceFreeLAClientInfo(&g_LAClientInfo);
     1610        vgsvcFreeLAClientInfo(&g_LAClientInfo);
    16051611
    16061612        /* Destroy property cache. */
    1607         VBoxServicePropCacheDestroy(&g_VMInfoPropCache);
     1613        VGSvcPropCacheDestroy(&g_VMInfoPropCache);
    16081614
    16091615        /* Disconnect from guest properties service. */
    16101616        rc = VbglR3GuestPropDisconnect(g_uVMInfoGuestPropSvcClientID);
    16111617        if (RT_FAILURE(rc))
    1612             VBoxServiceError("Failed to disconnect from guest property service! Error: %Rrc\n", rc);
     1618            VGSvcError("Failed to disconnect from guest property service! Error: %Rrc\n", rc);
    16131619        g_uVMInfoGuestPropSvcClientID = 0;
    16141620
     
    16401646    ,
    16411647    /* methods */
    1642     VBoxServiceVMInfoPreInit,
    1643     VBoxServiceVMInfoOption,
    1644     VBoxServiceVMInfoInit,
    1645     VBoxServiceVMInfoWorker,
    1646     VBoxServiceVMInfoStop,
    1647     VBoxServiceVMInfoTerm
     1648    vbsvcVMInfoPreInit,
     1649    vbsvcVMInfoOption,
     1650    vbsvcVMInfoInit,
     1651    vbsvcVMInfoWorker,
     1652    vbsvcVMInfoStop,
     1653    vbsvcVMInfoTerm
    16481654};
    16491655
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.h

    r56294 r58029  
    1919#define ___VBoxServiceVMInfo_h
    2020
    21 //RT_C_DECLS_BEGIN
    2221
    23 extern int vboxServiceUserUpdateF(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain,
    24                                   const char *pszKey, const char *pszValueFormat, ...);
     22extern int VGSvcUserUpdateF(PVBOXSERVICEVEPROPCACHE pCache, const char *pszUser, const char *pszDomain,
     23                            const char *pszKey, const char *pszValueFormat, ...);
    2524
    26 //RT_C_DECLS_END
    2725
    2826extern uint32_t g_uVMInfoUserIdleThresholdMS;
    2927
    30 #endif /* ___VBoxServiceVMInfo_h */
     28#endif
    3129
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