Changeset 95846 in vbox
- Timestamp:
- Jul 26, 2022 10:29:39 PM (3 years ago)
- svn:sync-xref-src-repo-rev:
- 152571
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r3/win/RTSystemQueryOSInfo-win.cpp
r93115 r95846 95 95 { 96 96 BOOL (WINAPI *pfnGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD); 97 pfnGetProductInfo = (BOOL (WINAPI *)(DWORD, DWORD, DWORD, DWORD, PDWORD))GetProcAddress(GetModuleHandle("kernel32.dll"), "GetProductInfo"); 97 pfnGetProductInfo = (BOOL (WINAPI *)(DWORD, DWORD, DWORD, DWORD, PDWORD))GetProcAddress(GetModuleHandle("kernel32.dll"), 98 "GetProductInfo"); 98 99 if (pfnGetProductInfo) 99 100 { … … 108 109 109 110 /** 110 * Appends the product type if available .111 * Appends the product type if available (Vista & 2003 only for some reason). 111 112 * 112 113 * @param pszTmp The buffer. Assumes it's big enough. 113 114 */ 114 static void rtSystemWinAppendProductType(char *pszTmp )115 static void rtSystemWinAppendProductType(char *pszTmp, size_t cbTmp) 115 116 { 116 117 RTWINPRODTYPE enmVistaType = rtSystemWinGetProductInfo(6, 0, 0, 0); 117 118 switch (enmVistaType) 118 119 { 119 case kRTWinProdType_BUSINESS: strcat(pszTmp, " Business Edition"); break;120 case kRTWinProdType_BUSINESS_N: strcat(pszTmp, " Business Edition"); break;121 case kRTWinProdType_CLUSTER_SERVER: strcat(pszTmp, " Cluster Server Edition"); break;122 case kRTWinProdType_DATACENTER_SERVER: strcat(pszTmp, " Server Datacenter Edition (full installation)"); break;123 case kRTWinProdType_DATACENTER_SERVER_CORE: strcat(pszTmp, " Server Datacenter Edition (core installation)"); break;124 case kRTWinProdType_ENTERPRISE: strcat(pszTmp, " Enterprise Edition"); break;125 case kRTWinProdType_ENTERPRISE_N: strcat(pszTmp, " Enterprise Edition"); break;126 case kRTWinProdType_ENTERPRISE_SERVER: strcat(pszTmp, " Server Enterprise Edition (full installation)"); break;127 case kRTWinProdType_ENTERPRISE_SERVER_CORE: strcat(pszTmp, " Server Enterprise Edition (core installation)"); break;128 case kRTWinProdType_ENTERPRISE_SERVER_IA64: strcat(pszTmp, " Server Enterprise Edition for Itanium-based Systems"); break;129 case kRTWinProdType_HOME_BASIC: strcat(pszTmp, " Home Basic Edition"); break;130 case kRTWinProdType_HOME_BASIC_N: strcat(pszTmp, " Home Basic Edition"); break;131 case kRTWinProdType_HOME_PREMIUM: strcat(pszTmp, " Home Premium Edition"); break;132 case kRTWinProdType_HOME_PREMIUM_N: strcat(pszTmp, " Home Premium Edition"); break;133 case kRTWinProdType_HOME_SERVER: strcat(pszTmp, " Home Server Edition"); break;134 case kRTWinProdType_SERVER_FOR_SMALLBUSINESS: strcat(pszTmp, " Server for Small Business Edition"); break;135 case kRTWinProdType_SMALLBUSINESS_SERVER: strcat(pszTmp, " Small Business Server"); break;136 case kRTWinProdType_SMALLBUSINESS_SERVER_PREMIUM: strcat(pszTmp, " Small Business Server Premium Edition"); break;137 case kRTWinProdType_STANDARD_SERVER: strcat(pszTmp, " Server Standard Edition (full installation)"); break;138 case kRTWinProdType_STANDARD_SERVER_CORE: strcat(pszTmp, " Server Standard Edition (core installation)"); break;139 case kRTWinProdType_STARTER: strcat(pszTmp, " Starter Edition"); break;140 case kRTWinProdType_STORAGE_ENTERPRISE_SERVER: strcat(pszTmp, " Storage Server Enterprise Edition"); break;141 case kRTWinProdType_STORAGE_EXPRESS_SERVER: strcat(pszTmp, " Storage Server Express Edition"); break;142 case kRTWinProdType_STORAGE_STANDARD_SERVER: strcat(pszTmp, " Storage Server Standard Edition"); break;143 case kRTWinProdType_STORAGE_WORKGROUP_SERVER: strcat(pszTmp, " Storage Server Workgroup Edition"); break;144 case kRTWinProdType_ULTIMATE: strcat(pszTmp, " Ultimate Edition"); break;145 case kRTWinProdType_ULTIMATE_N: strcat(pszTmp, " Ultimate Edition"); break;146 case kRTWinProdType_WEB_SERVER: strcat(pszTmp, " Web Server Edition (full installation)"); break;147 case kRTWinProdType_WEB_SERVER_CORE: strcat(pszTmp, " Web Server Edition (core installation)"); break;148 case kRTWinProdType_UNDEFINED: 120 case kRTWinProdType_BUSINESS: RTStrCat(pszTmp, cbTmp, " Business Edition"); break; 121 case kRTWinProdType_BUSINESS_N: RTStrCat(pszTmp, cbTmp, " Business Edition"); break; 122 case kRTWinProdType_CLUSTER_SERVER: RTStrCat(pszTmp, cbTmp, " Cluster Server Edition"); break; 123 case kRTWinProdType_DATACENTER_SERVER: RTStrCat(pszTmp, cbTmp, " Server Datacenter Edition (full installation)"); break; 124 case kRTWinProdType_DATACENTER_SERVER_CORE: RTStrCat(pszTmp, cbTmp, " Server Datacenter Edition (core installation)"); break; 125 case kRTWinProdType_ENTERPRISE: RTStrCat(pszTmp, cbTmp, " Enterprise Edition"); break; 126 case kRTWinProdType_ENTERPRISE_N: RTStrCat(pszTmp, cbTmp, " Enterprise Edition"); break; 127 case kRTWinProdType_ENTERPRISE_SERVER: RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition (full installation)"); break; 128 case kRTWinProdType_ENTERPRISE_SERVER_CORE: RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition (core installation)"); break; 129 case kRTWinProdType_ENTERPRISE_SERVER_IA64: RTStrCat(pszTmp, cbTmp, " Server Enterprise Edition for Itanium-based Systems"); break; 130 case kRTWinProdType_HOME_BASIC: RTStrCat(pszTmp, cbTmp, " Home Basic Edition"); break; 131 case kRTWinProdType_HOME_BASIC_N: RTStrCat(pszTmp, cbTmp, " Home Basic Edition"); break; 132 case kRTWinProdType_HOME_PREMIUM: RTStrCat(pszTmp, cbTmp, " Home Premium Edition"); break; 133 case kRTWinProdType_HOME_PREMIUM_N: RTStrCat(pszTmp, cbTmp, " Home Premium Edition"); break; 134 case kRTWinProdType_HOME_SERVER: RTStrCat(pszTmp, cbTmp, " Home Server Edition"); break; 135 case kRTWinProdType_SERVER_FOR_SMALLBUSINESS: RTStrCat(pszTmp, cbTmp, " Server for Small Business Edition"); break; 136 case kRTWinProdType_SMALLBUSINESS_SERVER: RTStrCat(pszTmp, cbTmp, " Small Business Server"); break; 137 case kRTWinProdType_SMALLBUSINESS_SERVER_PREMIUM: RTStrCat(pszTmp, cbTmp, " Small Business Server Premium Edition"); break; 138 case kRTWinProdType_STANDARD_SERVER: RTStrCat(pszTmp, cbTmp, " Server Standard Edition (full installation)"); break; 139 case kRTWinProdType_STANDARD_SERVER_CORE: RTStrCat(pszTmp, cbTmp, " Server Standard Edition (core installation)"); break; 140 case kRTWinProdType_STARTER: RTStrCat(pszTmp, cbTmp, " Starter Edition"); break; 141 case kRTWinProdType_STORAGE_ENTERPRISE_SERVER: RTStrCat(pszTmp, cbTmp, " Storage Server Enterprise Edition"); break; 142 case kRTWinProdType_STORAGE_EXPRESS_SERVER: RTStrCat(pszTmp, cbTmp, " Storage Server Express Edition"); break; 143 case kRTWinProdType_STORAGE_STANDARD_SERVER: RTStrCat(pszTmp, cbTmp, " Storage Server Standard Edition"); break; 144 case kRTWinProdType_STORAGE_WORKGROUP_SERVER: RTStrCat(pszTmp, cbTmp, " Storage Server Workgroup Edition"); break; 145 case kRTWinProdType_ULTIMATE: RTStrCat(pszTmp, cbTmp, " Ultimate Edition"); break; 146 case kRTWinProdType_ULTIMATE_N: RTStrCat(pszTmp, cbTmp, " Ultimate Edition"); break; 147 case kRTWinProdType_WEB_SERVER: RTStrCat(pszTmp, cbTmp, " Web Server Edition (full installation)"); break; 148 case kRTWinProdType_WEB_SERVER_CORE: RTStrCat(pszTmp, cbTmp, " Web Server Edition (core installation)"); break; 149 case kRTWinProdType_UNDEFINED: break; 149 150 } 150 151 } … … 201 202 strcpy(szTmp, "Windows XP"); 202 203 if (g_WinOsInfoEx.wSuiteMask & VER_SUITE_PERSONAL) 203 strcat(szTmp, " Home");204 RTStrCat(szTmp, sizeof(szTmp), " Home"); 204 205 if ( g_WinOsInfoEx.wProductType == VER_NT_WORKSTATION 205 206 && !(g_WinOsInfoEx.wSuiteMask & VER_SUITE_PERSONAL)) 206 strcat(szTmp, " Professional");207 RTStrCat(szTmp, sizeof(szTmp), " Professional"); 207 208 #if 0 /** @todo fixme */ 208 209 if (GetSystemMetrics(SM_MEDIACENTER)) 209 strcat(szTmp, " Media Center");210 RTStrCat(szTmp, sizeof(szTmp), " Media Center"); 210 211 #endif 211 212 break; … … 215 216 { 216 217 strcpy(szTmp, "Windows Vista"); 217 rtSystemWinAppendProductType(szTmp );218 rtSystemWinAppendProductType(szTmp, sizeof(szTmp)); 218 219 break; 219 220 }
Note:
See TracChangeset
for help on using the changeset viewer.