VirtualBox

Changeset 26085 in vbox for trunk


Ignore:
Timestamp:
Jan 28, 2010 2:32:05 PM (15 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
57043
Message:

VBoxService: Bugfixes.

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

Legend:

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

    r26083 r26085  
    8282         default:
    8383             VBoxServiceError("Token class not implemented: %ld", tkClass);
     84             rc = VERR_NOT_IMPLEMENTED;
    8485             break;
    8586         }
     
    124125    AssertPtr(pdwCount);
    125126
    126     DWORD dwSize = 256; /* Number of processes our array can hold */
    127     DWORD *pdwProcIDs = (DWORD*)RTMemAlloc(dwSize * sizeof(DWORD));
     127    DWORD dwNumProcs = 128; /* Number of processes our array can hold */
     128    DWORD *pdwProcIDs = (DWORD*)RTMemAlloc(dwNumProcs * sizeof(DWORD));
    128129    if (pdwProcIDs == NULL)
    129130        return VERR_NO_MEMORY;
    130131
    131132    int rc;
    132     DWORD dwNeeded;
     133    DWORD cbRet; /* Returned size in bytes */
    133134    do
    134135    {
    135         if (FALSE == EnumProcesses(pdwProcIDs, dwSize * sizeof(DWORD), &dwNeeded))
     136        if (FALSE == EnumProcesses(pdwProcIDs, dwNumProcs * sizeof(DWORD), &cbRet))
    136137        {
    137138            rc = RTErrConvertFromWin32(GetLastError());
     
    140141
    141142        /* Was our array big enough? Or do we need more space? */
    142         if (dwNeeded >= dwSize)
     143        if (cbRet >= dwNumProcs * sizeof(DWORD))
    143144        {
    144145            /* Apparently not, so try next bigger size */
    145             dwSize += 256;
    146             pdwProcIDs = (DWORD*)RTMemRealloc(pdwProcIDs, dwSize * sizeof(DWORD));
     146            dwNumProcs += 128;
     147            pdwProcIDs = (DWORD*)RTMemRealloc(pdwProcIDs, dwNumProcs * sizeof(DWORD));
    147148            if (pdwProcIDs == NULL)
    148149            {
     
    156157            break;
    157158        }
    158     } while(dwNeeded >= dwSize);
     159    } while(cbRet >= dwNumProcs * sizeof(DWORD));
    159160
    160161    if (RT_SUCCESS(rc))
    161162    {
    162163        /* Allocate our process structure */
    163         *ppProc = (PVBOXSERVICEVMINFOPROC)RTMemAlloc(dwNeeded * sizeof(VBOXSERVICEVMINFOPROC));
     164        *ppProc = (PVBOXSERVICEVMINFOPROC)RTMemAlloc(dwNumProcs * sizeof(VBOXSERVICEVMINFOPROC));
    164165        if (ppProc == NULL)
    165166            rc = VERR_NO_MEMORY;
     
    170171            PVBOXSERVICEVMINFOPROC pCur = *ppProc;
    171172            DWORD *pCurProcID = pdwProcIDs;
    172             for (DWORD i=0; i<dwNeeded; i++)
     173            for (DWORD i=0; i<dwNumProcs; i++)
    173174            {
    174175                RT_BZERO(pCur, sizeof(VBOXSERVICEVMINFOPROC));
     
    185186            }
    186187            /* Save number of processes */
    187             *pdwCount = dwNeeded;
     188            *pdwCount = dwNumProcs;
    188189        }
    189190    }
     
    227228    {
    228229        /*VBoxServiceVerbose(3, "%ld:%ld <-> %ld:%ld\n",
    229                            pCur->luid.HighPart, pCur->luid.LowPart,
    230                            pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart);*/
     230                             pCur->luid.HighPart, pCur->luid.LowPart,
     231                             pSessionData->LogonId.HighPart, pSessionData->LogonId.LowPart);*/
    231232        if (   pCur->luid.HighPart == pSessionData->LogonId.HighPart
    232233            && pCur->luid.LowPart  == pSessionData->LogonId.LowPart)
  • trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp

    r26083 r26085  
    225225        rc = VBoxServiceVMInfoWinProcessesEnumerate(&pProcs, &dwNumProcs);
    226226
    227         VBOXSERVICEVMINFOUSER userInfo;
    228         ZeroMemory (&userInfo, sizeof(VBOXSERVICEVMINFOUSER));
    229 
    230227        for (ULONG i=0; i<ulCount; i++)
    231228        {
     229            VBOXSERVICEVMINFOUSER userInfo;
     230            ZeroMemory (&userInfo, sizeof(VBOXSERVICEVMINFOUSER));
     231
    232232            if (   VBoxServiceVMInfoWinIsLoggedIn(&userInfo, &pSessions[i])
    233233                && VBoxServiceVMInfoWinSessionGetProcessCount(&pSessions[i], pProcs, dwNumProcs) > 0)
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