Changeset 23575 in vbox for trunk/src/VBox
- Timestamp:
- Oct 6, 2009 8:23:38 AM (15 years ago)
- Location:
- trunk/src/VBox/Additions/common/VBoxService
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceExec.cpp
r23248 r23575 137 137 void *pvBuf = NULL; 138 138 int rc; 139 140 139 *ppszValue = NULL; 140 141 char *pszPropNameUTF8; 142 rc = RTStrCurrentCPToUtf8(&pszPropNameUTF8, pszPropName); 143 if (RT_FAILURE(rc)) 144 { 145 VBoxServiceError("Exec: Failed to convert property name \"%s\" to UTF-8!\n", pszPropName); 146 return rc; 147 } 141 148 142 149 for (unsigned cTries = 0; cTries < 10; cTries++) … … 156 163 char *pszFlags; 157 164 uint64_t uTimestamp; 158 rc = VbglR3GuestPropRead(g_uExecGuestPropSvcClientID, pszPropName ,165 rc = VbglR3GuestPropRead(g_uExecGuestPropSvcClientID, pszPropNameUTF8, 159 166 pvBuf, cbBuf, 160 167 &pszValue, &uTimestamp, &pszFlags, NULL); … … 200 207 break; /* done */ 201 208 } 202 203 209 RTMemFree(pvBuf); 210 RTStrFree(pszPropNameUTF8); 204 211 return rc; 205 212 } … … 399 406 * Store the result in Set return value so the host knows what happend. 400 407 */ 401 rc = V bglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID,402 403 408 rc = VBoxServiceWritePropF(g_uExecGuestPropSvcClientID, 409 "/VirtualBox/HostGuest/SysprepRet", 410 "%d", Status.iStatus); 404 411 if (RT_FAILURE(rc)) 405 412 VBoxServiceError("Exec: Failed to write SysprepRet: rc=%Rrc\n", rc); … … 446 453 if (rc != VERR_NOT_FOUND) 447 454 { 448 rc = V bglR3GuestPropWriteValueF(g_uExecGuestPropSvcClientID, "/VirtualBox/HostGuest/SysprepVBoxRC", "%d", rc);455 rc = VBoxServiceWritePropF(g_uExecGuestPropSvcClientID, "/VirtualBox/HostGuest/SysprepVBoxRC", "%d", rc); 449 456 if (RT_FAILURE(rc)) 450 457 VBoxServiceError("Exec: Failed to write SysprepVBoxRC: rc=%Rrc\n", rc); -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceInternal.h
r22744 r23575 148 148 #ifdef VBOX_WITH_GUEST_PROPS 149 149 /** Detects wheter a user is logged on based on the enumerated processes. */ 150 extern BOOL V boxServiceVMInfoWinIsLoggedIn(VBOXSERVICEVMINFOUSER* a_pUserInfo,150 extern BOOL VBoxServiceVMInfoWinIsLoggedIn(VBOXSERVICEVMINFOUSER* a_pUserInfo, 151 151 PLUID a_pSession, 152 152 PLUID a_pLuid, 153 153 DWORD a_dwNumOfProcLUIDs); 154 154 /** Gets logon user IDs from enumerated processes. */ 155 extern DWORD V boxServiceVMInfoWinGetLUIDsFromProcesses(PLUID *ppLuid);155 extern DWORD VBoxServiceVMInfoWinGetLUIDsFromProcesses(PLUID *ppLuid); 156 156 #endif /* VBOX_WITH_GUEST_PROPS */ 157 157 #endif /* RT_OS_WINDOWS */ -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.cpp
r22728 r23575 37 37 38 38 #ifdef VBOX_WITH_GUEST_PROPS 39 int VboxServiceWriteProp(uint32_t uiClientID, const char *pszKey, const char *pszValue) 40 { 41 int rc = VINF_SUCCESS; 42 Assert(pszKey); 43 /* Not checking for a valid pszValue is intentional. */ 44 45 char szKeyTemp [FILENAME_MAX] = {0}; 46 char *pszValueTemp = NULL; 47 48 /* Append base path. */ 49 RTStrPrintf(szKeyTemp, sizeof(szKeyTemp), "/VirtualBox/%s", pszKey); /** @todo r=bird: Why didn't you hardcode this into the strings before calling this function? */ 50 51 if (pszValue != NULL) 52 { 53 rc = RTStrCurrentCPToUtf8(&pszValueTemp, pszValue); 54 if (!RT_SUCCESS(rc)) 55 { 56 VBoxServiceError("vboxVMInfoThread: Failed to convert the value name \"%s\" to Utf8! Error: %Rrc\n", pszValue, rc); 57 goto cleanup; 58 } 59 } 60 61 rc = VbglR3GuestPropWriteValue(uiClientID, szKeyTemp, ((pszValue == NULL) || (0 == strlen(pszValue))) ? NULL : pszValueTemp); 62 if (!RT_SUCCESS(rc)) 63 { 64 VBoxServiceError("Failed to store the property \"%s\"=\"%s\"! ClientID: %d, Error: %Rrc\n", szKeyTemp, pszValueTemp, uiClientID, rc); 65 goto cleanup; 66 } 67 68 if ((pszValueTemp != NULL) && (strlen(pszValueTemp) > 0)) 69 VBoxServiceVerbose(3, "Property written: %s = %s\n", szKeyTemp, pszValueTemp); 70 else 71 VBoxServiceVerbose(3, "Property deleted: %s\n", szKeyTemp); 72 73 cleanup: 74 75 RTStrFree(pszValueTemp); 39 int VBoxServiceWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...) 40 { 41 char *pszNameUTF8; 42 int rc = RTStrCurrentCPToUtf8(&pszNameUTF8, pszName); 43 if (RT_SUCCESS(rc)) 44 { 45 if (pszValueFormat != NULL) 46 { 47 va_list va; 48 va_start(va, pszValueFormat); 49 VBoxServiceVerbose(3, "Writing guest property \"%s\"=\"%s\"\n", pszNameUTF8, pszValueFormat); 50 rc = VbglR3GuestPropWriteValueV(u32ClientId, pszNameUTF8, pszValueFormat, va); 51 if(RT_FAILURE(rc)) 52 VBoxServiceError("Error writing guest property \"%s\"=\"%s\" (rc=%Rrc)\n", pszNameUTF8, pszValueFormat, rc); 53 va_end(va); 54 } 55 else 56 rc = VbglR3GuestPropWriteValue(u32ClientId, pszNameUTF8, NULL); 57 RTStrFree(pszNameUTF8); 58 } 76 59 return rc; 77 60 } 78 79 80 int VboxServiceWritePropInt(uint32_t uiClientID, const char *pszKey, int32_t iValue)81 {82 Assert(pszKey);83 84 char szBuffer[32] = {0};85 RTStrPrintf(szBuffer, sizeof(szBuffer), "%ld", iValue);86 return VboxServiceWriteProp(uiClientID, pszKey, szBuffer);87 }88 61 #endif /* VBOX_WITH_GUEST_PROPS */ 89 62 90 63 91 64 #ifdef RT_OS_WINDOWS 92 BOOL V boxServiceGetFileString(const char* pszFileName,65 BOOL VBoxServiceGetFileString(const char* pszFileName, 93 66 char* pszBlock, 94 67 char* pszString, … … 146 119 147 120 148 BOOL V boxServiceGetFileVersion(const char* pszFileName,121 BOOL VBoxServiceGetFileVersion(const char* pszFileName, 149 122 DWORD* pdwMajor, 150 123 DWORD* pdwMinor, … … 174 147 int r = 0; 175 148 176 bRet = V boxServiceGetFileString(pszFileName, "\\StringFileInfo\\040904b0\\FileVersion", szValue, &uiSize);149 bRet = VBoxServiceGetFileString(pszFileName, "\\StringFileInfo\\040904b0\\FileVersion", szValue, &uiSize); 177 150 if (bRet) 178 151 { … … 208 181 209 182 210 BOOL V boxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize)183 BOOL VBoxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize) 211 184 { 212 185 BOOL bRet = FALSE; … … 219 192 DWORD dwMajor, dwMinor, dwBuild, dwRev; 220 193 221 bRet = V boxServiceGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev);194 bRet = VBoxServiceGetFileVersion(szFullPath, &dwMajor, &dwMinor, &dwBuild, &dwRev); 222 195 if (bRet) 223 196 RTStrPrintf(pszVersion, uiSize, "%ld.%ld.%ldr%ld", dwMajor, dwMinor, dwBuild, dwRev); -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceUtils.h
r22728 r23575 26 26 27 27 #ifdef VBOX_WITH_GUEST_PROPS 28 int VboxServiceWritePropInt(uint32_t uiClientID, const char *pszKey, int iValue); 29 int VboxServiceWriteProp(uint32_t uiClientID, const char *pszKey, const char *pszValue); 28 int VBoxServiceWritePropF(uint32_t u32ClientId, const char *pszName, const char *pszValueFormat, ...); 30 29 #endif 31 30 #ifdef RT_OS_WINDOWS 32 31 /** Gets a pre-formatted version string from the VS_FIXEDFILEINFO table. */ 33 BOOL V boxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize);32 BOOL VBoxServiceGetFileVersionString(const char* pszPath, const char* pszFileName, char* pszVersion, UINT uiSize); 34 33 #endif 35 34 -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo-win.cpp
r22840 r23575 54 54 #ifndef TARGET_NT4 55 55 /* Function GetLUIDsFromProcesses() written by Stefan Kuhr. */ 56 DWORD V boxServiceVMInfoWinGetLUIDsFromProcesses(PLUID *ppLuid)56 DWORD VBoxServiceVMInfoWinGetLUIDsFromProcesses(PLUID *ppLuid) 57 57 { 58 58 DWORD dwSize, dwSize2, dwIndex ; … … 166 166 } 167 167 168 BOOL V boxServiceVMInfoWinIsLoggedIn(VBOXSERVICEVMINFOUSER* a_pUserInfo,168 BOOL VBoxServiceVMInfoWinIsLoggedIn(VBOXSERVICEVMINFOUSER* a_pUserInfo, 169 169 PLUID a_pSession, 170 170 PLUID a_pLuid, … … 330 330 #endif /* TARGET_NT4 */ 331 331 332 int V boxServiceWinGetAddsVersion(uint32_t uiClientID)332 int VBoxServiceWinGetAddsVersion(uint32_t uiClientID) 333 333 { 334 334 char szInstDir[_MAX_PATH] = {0}; … … 401 401 402 402 /* Write information to host. */ 403 VboxServiceWriteProp(uiClientID, "GuestAdd/InstallDir", szInstDir);404 VboxServiceWriteProp(uiClientID, "GuestAdd/Revision", szRev);405 VboxServiceWriteProp(uiClientID, "GuestAdd/Version", szVer);403 rc = VBoxServiceWritePropF(uiClientID, "/VirtualBox/GuestAdd/InstallDir", szInstDir); 404 rc = VBoxServiceWritePropF(uiClientID, "/VirtualBox/GuestAdd/Revision", szRev); 405 rc = VBoxServiceWritePropF(uiClientID, "/VirtualBox/GuestAdd/Version", szVer); 406 406 407 407 if (NULL != hKey) … … 411 411 } 412 412 413 int V boxServiceWinGetComponentVersions(uint32_t uiClientID)413 int VBoxServiceWinGetComponentVersions(uint32_t uiClientID) 414 414 { 415 415 int rc; … … 492 492 while (pTable->pszFileName) 493 493 { 494 rc = V boxServiceGetFileVersionString(pTable->pszFilePath, pTable->pszFileName, szVer, sizeof(szVer));495 RTStrPrintf(szPropPath, sizeof(szPropPath), " GuestAdd/Components/%s", pTable->pszFileName);496 VboxServiceWriteProp(uiClientID, szPropPath, szVer);494 rc = VBoxServiceGetFileVersionString(pTable->pszFilePath, pTable->pszFileName, szVer, sizeof(szVer)); 495 RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestAdd/Components/%s", pTable->pszFileName); 496 rc = VBoxServiceWritePropF(uiClientID, szPropPath, szVer); 497 497 pTable++; 498 498 } -
trunk/src/VBox/Additions/common/VBoxService/VBoxServiceVMInfo.cpp
r22728 r23575 73 73 fnWTSGetActiveConsoleSessionId g_pfnWTSGetActiveConsoleSessionId = NULL; 74 74 /** External functions. */ 75 extern int V boxServiceWinGetAddsVersion(uint32_t uiClientID);76 extern int V boxServiceWinGetComponentVersions(uint32_t uiClientID);75 extern int VBoxServiceWinGetAddsVersion(uint32_t uiClientID); 76 extern int VBoxServiceWinGetComponentVersions(uint32_t uiClientID); 77 77 #endif 78 78 … … 159 159 char szInfo[256] = {0}; 160 160 rc = RTSystemQueryOSInfo(RTSYSOSINFO_PRODUCT, szInfo, sizeof(szInfo)); 161 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/Product", szInfo);161 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Product", szInfo); 162 162 163 163 rc = RTSystemQueryOSInfo(RTSYSOSINFO_RELEASE, szInfo, sizeof(szInfo)); 164 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/Release", szInfo);164 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Release", szInfo); 165 165 166 166 rc = RTSystemQueryOSInfo(RTSYSOSINFO_VERSION, szInfo, sizeof(szInfo)); 167 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/Version", szInfo);167 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/Version", szInfo); 168 168 169 169 rc = RTSystemQueryOSInfo(RTSYSOSINFO_SERVICE_PACK, szInfo, sizeof(szInfo)); 170 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/ServicePack", szInfo);170 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/ServicePack", szInfo); 171 171 172 172 /* Retrieve version information about Guest Additions and installed files (components). */ 173 173 #ifdef RT_OS_WINDOWS 174 rc = V boxServiceWinGetAddsVersion(g_VMInfoGuestPropSvcClientID);175 rc = V boxServiceWinGetComponentVersions(g_VMInfoGuestPropSvcClientID);176 #else 177 /* V boxServiceGetAddsVersion !RT_OS_WINDOWS */178 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestAdd/Version", VBOX_VERSION_STRING);174 rc = VBoxServiceWinGetAddsVersion(g_VMInfoGuestPropSvcClientID); 175 rc = VBoxServiceWinGetComponentVersions(g_VMInfoGuestPropSvcClientID); 176 #else 177 /* VBoxServiceGetAddsVersion !RT_OS_WINDOWS */ 178 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Version", VBOX_VERSION_STRING); 179 179 180 180 char szRevision[32]; 181 181 RTStrPrintf(szRevision, sizeof(szRevision), "%u", VBOX_SVN_REV); 182 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestAdd/Revision", szRevision);182 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestAdd/Revision", szRevision); 183 183 #endif 184 184 … … 211 211 212 212 PLUID pLuid = NULL; 213 DWORD dwNumOfProcLUIDs = V boxServiceVMInfoWinGetLUIDsFromProcesses(&pLuid);213 DWORD dwNumOfProcLUIDs = VBoxServiceVMInfoWinGetLUIDsFromProcesses(&pLuid); 214 214 215 215 VBOXSERVICEVMINFOUSER userInfo; … … 218 218 for (int i = 0; i<(int)ulCount; i++) 219 219 { 220 if (V boxServiceVMInfoWinIsLoggedIn(&userInfo, &pSessions[i], pLuid, dwNumOfProcLUIDs))220 if (VBoxServiceVMInfoWinIsLoggedIn(&userInfo, &pSessions[i], pLuid, dwNumOfProcLUIDs)) 221 221 { 222 222 if (uiUserCount > 0) … … 263 263 #endif /* !RT_OS_WINDOWS */ 264 264 265 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsersList", (uiUserCount > 0) ? szUserList : NULL);266 V boxServiceWritePropInt(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsers", uiUserCount);265 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/LoggedInUsersList", (uiUserCount > 0) ? szUserList : NULL); 266 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/LoggedInUsers", "%u", uiUserCount); 267 267 if (g_VMInfoLoggedInUsers != uiUserCount || g_VMInfoLoggedInUsers == UINT32_MAX) 268 268 { … … 272 272 * settings even if the VM aborted previously. */ 273 273 if (uiUserCount == 0) 274 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/NoLoggedInUsers", "true");274 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/NoLoggedInUsers", "true"); 275 275 else if (g_VMInfoLoggedInUsers == 0) 276 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/NoLoggedInUsers", "false");276 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/NoLoggedInUsers", "false"); 277 277 } 278 278 g_VMInfoLoggedInUsers = uiUserCount; … … 327 327 nNumInterfaces = ifcfg.ifc_len / sizeof(ifreq); 328 328 #endif 329 char szPropPath [FILENAME_MAX] = {0};330 char szTemp [FILENAME_MAX] = {0};329 char szPropPath [FILENAME_MAX]; 330 char szTemp [FILENAME_MAX]; 331 331 int iCurIface = 0; 332 332 333 RTStrPrintf(szPropPath, sizeof(szPropPath), "GuestInfo/Net/Count"); 334 VboxServiceWritePropInt(g_VMInfoGuestPropSvcClientID, szPropPath, (nNumInterfaces > 1 ? nNumInterfaces-1 : 0)); 333 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/Net/Count", "%d", (nNumInterfaces > 1 ? nNumInterfaces-1 : 0)); 335 334 336 335 /** @todo Use GetAdaptersInfo() and GetAdapterAddresses (IPv4 + IPv6) for more information. */ … … 356 355 #endif 357 356 Assert(pAddress); 358 RTStrPrintf(szPropPath, sizeof(szPropPath), " GuestInfo/Net/%d/V4/IP", iCurIface);359 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, szPropPath, inet_ntoa(pAddress->sin_addr));357 RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%d/V4/IP", iCurIface); 358 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, szPropPath, "%s", inet_ntoa(pAddress->sin_addr)); 360 359 361 360 #ifdef RT_OS_WINDOWS … … 369 368 pAddress = (sockaddr_in *)&ifrequest[i].ifr_broadaddr; 370 369 #endif 371 RTStrPrintf(szPropPath, sizeof(szPropPath), " GuestInfo/Net/%d/V4/Broadcast", iCurIface);372 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, szPropPath, inet_ntoa(pAddress->sin_addr));370 RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%d/V4/Broadcast", iCurIface); 371 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, szPropPath, inet_ntoa(pAddress->sin_addr)); 373 372 374 373 #ifdef RT_OS_WINDOWS … … 387 386 388 387 #endif 389 RTStrPrintf(szPropPath, sizeof(szPropPath), " GuestInfo/Net/%d/V4/Netmask", iCurIface);390 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, szPropPath, inet_ntoa(pAddress->sin_addr));388 RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%d/V4/Netmask", iCurIface); 389 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, szPropPath, inet_ntoa(pAddress->sin_addr)); 391 390 392 391 if (nFlags & IFF_UP) … … 395 394 RTStrPrintf(szTemp, sizeof(szTemp), "Down"); 396 395 397 RTStrPrintf(szPropPath, sizeof(szPropPath), " GuestInfo/Net/%d/Status", iCurIface);398 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, szPropPath, szTemp);396 RTStrPrintf(szPropPath, sizeof(szPropPath), "/VirtualBox/GuestInfo/Net/%d/Status", iCurIface); 397 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, szPropPath, szTemp); 399 398 400 399 iCurIface++; … … 456 455 * a more formal way of shutting down the service for that to work. 457 456 */ 458 rc = V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsersList", NULL);459 rc = V boxServiceWritePropInt(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/LoggedInUsers", 0);457 rc = VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/LoggedInUsersList", NULL); 458 rc = VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/LoggedInUsers", "%d", 0); 460 459 if (g_VMInfoLoggedInUsers > 0) 461 V boxServiceWriteProp(g_VMInfoGuestPropSvcClientID, "GuestInfo/OS/NoLoggedInUsers", "true");460 VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/OS/NoLoggedInUsers", "true"); 462 461 463 462 const char *apszPat[1] = { "/VirtualBox/GuestInfo/Net/*" }; 464 463 rc = VbglR3GuestPropDelSet(g_VMInfoGuestPropSvcClientID, &apszPat[0], RT_ELEMENTS(apszPat)); 465 rc = V boxServiceWritePropInt(g_VMInfoGuestPropSvcClientID, "GuestInfo/Net/Count", 0);464 rc = VBoxServiceWritePropF(g_VMInfoGuestPropSvcClientID, "/VirtualBox/GuestInfo/Net/Count", "%d", 0); 466 465 467 466 /* Disconnect from guest properties service. */
Note:
See TracChangeset
for help on using the changeset viewer.