VirtualBox

Ignore:
Timestamp:
Jul 22, 2013 11:19:20 AM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
87431
Message:

Guest user state reporting: Update.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp

    r47234 r47294  
    5050*******************************************************************************/
    5151/** Structure for storing the looked up user information. */
    52 typedef struct
     52typedef struct VBOXSERVICEVMINFOUSER
    5353{
    5454    WCHAR wszUser[_MAX_PATH];
     
    6565
    6666/** Structure for the file information lookup. */
    67 typedef struct
     67typedef struct VBOXSERVICEVMINFOFILE
    6868{
    6969    char *pszFilePath;
     
    7272
    7373/** Structure for process information lookup. */
    74 typedef struct
     74typedef struct VBOXSERVICEVMINFOPROC
    7575{
    7676    /** The PID. */
     
    9292int  VBoxServiceVMInfoWinProcessesEnumerate(PVBOXSERVICEVMINFOPROC *ppProc, DWORD *pdwCount);
    9393void VBoxServiceVMInfoWinProcessesFree(DWORD cProcs, PVBOXSERVICEVMINFOPROC paProcs);
    94 int vboxServiceVMInfoWinWriteLastInput(char *pszUser);
     94int vboxServiceVMInfoWinWriteLastInput(const char *pszUser, const char *pszDomain);
    9595
    9696typedef BOOL WINAPI FNQUERYFULLPROCESSIMAGENAME(HANDLE,  DWORD, LPTSTR, PDWORD);
     
    808808
    809809
    810 static int vboxServiceVMInfoWinWriteLastInput(char *pszUser)
     810static int vboxServiceVMInfoWinWriteLastInput(const char *pszUser, const char *pszDomain)
    811811{
    812812    AssertPtrReturn(pszUser, VERR_INVALID_POINTER);
     
    833833            if (RT_SUCCESS(rc))
    834834            {
     835                VBoxGuestUserState userState = ipcRes.uLastInputMs < 5000 /** @todo Make this configurable. */
     836                                             ? VBoxGuestUserState_InUse
     837                                             : VBoxGuestUserState_Idle;
    835838                if (ipcRes.uLastInputMs)
    836                     VBoxServiceVerbose(4, "User \"%s\" is idle for %RU32ms\n",
    837                                        pszUser, ipcRes.uLastInputMs);
     839                {
     840                    VBoxServiceVerbose(4, "User \"%s\" (domain \"%s\") is idle for %RU32ms\n",
     841                                       pszUser, pszDomain ? pszDomain : "<None>", ipcRes.uLastInputMs);
     842
     843                    rc = VbglR3GuestUserReportState(pszUser, pszDomain, userState,
     844                                                    NULL /* No details */, 0);
     845                }
    838846            }
    839847#ifdef DEBUG
    840             VBoxServiceVerbose(4, "Querying last input for user \"%s\" ended with rc=%Rrc\n",
     848            VBoxServiceVerbose(4, "Getting last input for user \"%s\" ended with rc=%Rrc\n",
    841849                               pszUser, rc);
    842850#endif
     
    10601068                    *pcUsersInList += 1;
    10611069
    1062                     char *pszUser;
    1063                     int rc2 = RTUtf16ToUtf8(pUserInfo[i].wszUser, &pszUser);
    1064                     if (RT_SUCCESS(rc2))
     1070                    char *pszUser = NULL;
     1071                    char *pszDomain = NULL;
     1072                    rc = RTUtf16ToUtf8(pUserInfo[i].wszUser, &pszUser);
     1073                    if (   RT_SUCCESS(rc)
     1074                        && pUserInfo[i].wszLogonDomain)
     1075                        rc = RTUtf16ToUtf8(pUserInfo[i].wszLogonDomain, &pszDomain);
     1076                    if (RT_SUCCESS(rc))
    10651077                    {
     1078                        /* Append user to users list. */
    10661079                        rc = RTStrAAppend(ppszUserList, pszUser);
     1080
     1081                        /* Do idle detection. */
    10671082                        if (RT_SUCCESS(rc))
    1068                             rc = vboxServiceVMInfoWinWriteLastInput(pszUser);
    1069                         RTMemFree(pszUser);
     1083                            rc = vboxServiceVMInfoWinWriteLastInput(pszUser, pszDomain);
    10701084                    }
    10711085                    else
    10721086                        rc = RTStrAAppend(ppszUserList, "<string-conversion-error>");
     1087
     1088                    RTStrFree(pszUser);
     1089                    RTStrFree(pszDomain);
     1090
    10731091                    AssertRCBreakStmt(rc, RTStrFree(*ppszUserList));
    10741092                }
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette