Changeset 8834
- Timestamp:
- Jul 5, 2002, 4:48:06 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/src/kernel32/version.cpp ¶
r8803 r8834 1 /* $Id: version.cpp,v 1. 8 2002-06-28 20:15:06 sandervl Exp $ */1 /* $Id: version.cpp,v 1.9 2002-07-05 14:48:06 sandervl Exp $ */ 2 2 3 3 /* … … 125 125 void CheckVersion() 126 126 { 127 char szVersion[16];128 129 if(PROFILE_GetOdinIniString(PROFILE_WINVERSION_SECTION, PROFILE_WINVERSION_KEY,130 "", szVersion, sizeof(szVersion)-1) > 1)131 {132 if(!stricmp(szVersion, PROFILE_WINVERSION_WIN98)) {133 winversion = WINVERSION_WIN98;134 }135 else136 if(!stricmp(szVersion, PROFILE_WINVERSION_WINME)) {137 winversion = WINVERSION_WINME;138 }139 else140 if(!stricmp(szVersion, PROFILE_WINVERSION_NT40)) {141 winversion = WINVERSION_NT40;142 }143 else144 if(!stricmp(szVersion, PROFILE_WINVERSION_WIN2000)) {145 winversion = WINVERSION_WIN2000;146 }147 else148 if(!stricmp(szVersion, PROFILE_WINVERSION_WINXP)) {149 winversion = WINVERSION_WINXP;150 }151 }152 fCheckVersion = TRUE;127 char szVersion[16]; 128 129 if(PROFILE_GetOdinIniString(PROFILE_WINVERSION_SECTION, PROFILE_WINVERSION_KEY, 130 "", szVersion, sizeof(szVersion)-1) > 1) 131 { 132 if(!stricmp(szVersion, PROFILE_WINVERSION_WIN98)) { 133 winversion = WINVERSION_WIN98; 134 } 135 else 136 if(!stricmp(szVersion, PROFILE_WINVERSION_WINME)) { 137 winversion = WINVERSION_WINME; 138 } 139 else 140 if(!stricmp(szVersion, PROFILE_WINVERSION_NT40)) { 141 winversion = WINVERSION_NT40; 142 } 143 else 144 if(!stricmp(szVersion, PROFILE_WINVERSION_WIN2000)) { 145 winversion = WINVERSION_WIN2000; 146 } 147 else 148 if(!stricmp(szVersion, PROFILE_WINVERSION_WINXP)) { 149 winversion = WINVERSION_WINXP; 150 } 151 } 152 fCheckVersion = TRUE; 153 153 } 154 154 //****************************************************************************** … … 156 156 BOOL WIN32API GetVersionExA(OSVERSIONINFOA *lpVersionInformation) 157 157 { 158 dprintf(("KERNEL32: GetVersionExA %x", lpVersionInformation));159 160 if(lpVersionInformation == NULL)161 {162 dprintf(("ERROR: invalid parameter"));163 SetLastError(ERROR_INVALID_PARAMETER);164 return(FALSE); 165 }166 if(lpVersionInformation->dwOSVersionInfoSize < sizeof(OSVERSIONINFOA))167 {168 dprintf(("ERROR: buffer too small (%d != %d)", lpVersionInformation->dwOSVersionInfoSize, sizeof(OSVERSIONINFOA)));169 SetLastError(ERROR_INSUFFICIENT_BUFFER);170 return(FALSE); 171 }172 173 if(fCheckVersion == FALSE) {174 CheckVersion();175 }176 lpVersionInformation->dwMajorVersion = VersionData[winversion].getVersionEx.dwMajorVersion;177 lpVersionInformation->dwMinorVersion = VersionData[winversion].getVersionEx.dwMinorVersion;178 lpVersionInformation->dwBuildNumber = VersionData[winversion].getVersionEx.dwBuildNumber;179 lpVersionInformation->dwPlatformId = VersionData[winversion].getVersionEx.dwPlatformId;180 strcpy(lpVersionInformation->szCSDVersion, VersionData[winversion].getVersionEx.szCSDVersion );181 182 dprintf(("version %x.%x", lpVersionInformation->dwMajorVersion, lpVersionInformation->dwMinorVersion));183 dprintf(("build nr %x", lpVersionInformation->dwBuildNumber));184 dprintf(("Platform Id %x", lpVersionInformation->dwPlatformId));185 dprintf(("szCSDVersion %s", lpVersionInformation->szCSDVersion));186 187 if(lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXA))188 {//Windows 2000 (and up) extension189 LPOSVERSIONINFOEXA lpVersionExInformation = (LPOSVERSIONINFOEXA)lpVersionInformation;190 191 lpVersionExInformation->wServicePackMajor = VersionData[winversion].getVersionEx.wServicePackMajor;192 lpVersionExInformation->wServicePackMinor = VersionData[winversion].getVersionEx.wServicePackMinor;193 lpVersionExInformation->wReserved[0] = VersionData[winversion].getVersionEx.wReserved[0];194 lpVersionExInformation->wReserved[1] = VersionData[winversion].getVersionEx.wReserved[1];195 196 dprintf(("service pack version %x.%x", lpVersionExInformation->wServicePackMajor, lpVersionExInformation->wServicePackMinor));197 }198 199 SetLastError(ERROR_SUCCESS);200 return(TRUE);158 dprintf(("KERNEL32: GetVersionExA %x", lpVersionInformation)); 159 160 if(lpVersionInformation == NULL) 161 { 162 dprintf(("ERROR: invalid parameter")); 163 SetLastError(ERROR_INVALID_PARAMETER); 164 return(FALSE); 165 } 166 if(lpVersionInformation->dwOSVersionInfoSize < sizeof(OSVERSIONINFOA)) 167 { 168 dprintf(("ERROR: buffer too small (%d != %d)", lpVersionInformation->dwOSVersionInfoSize, sizeof(OSVERSIONINFOA))); 169 SetLastError(ERROR_INSUFFICIENT_BUFFER); 170 return(FALSE); 171 } 172 173 if(fCheckVersion == FALSE) { 174 CheckVersion(); 175 } 176 lpVersionInformation->dwMajorVersion = VersionData[winversion].getVersionEx.dwMajorVersion; 177 lpVersionInformation->dwMinorVersion = VersionData[winversion].getVersionEx.dwMinorVersion; 178 lpVersionInformation->dwBuildNumber = VersionData[winversion].getVersionEx.dwBuildNumber; 179 lpVersionInformation->dwPlatformId = VersionData[winversion].getVersionEx.dwPlatformId; 180 strcpy(lpVersionInformation->szCSDVersion, VersionData[winversion].getVersionEx.szCSDVersion ); 181 182 dprintf(("version %x.%x", lpVersionInformation->dwMajorVersion, lpVersionInformation->dwMinorVersion)); 183 dprintf(("build nr %x", lpVersionInformation->dwBuildNumber)); 184 dprintf(("Platform Id %x", lpVersionInformation->dwPlatformId)); 185 dprintf(("szCSDVersion %s", lpVersionInformation->szCSDVersion)); 186 187 if(lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXA)) 188 {//Windows 2000 (and up) extension 189 LPOSVERSIONINFOEXA lpVersionExInformation = (LPOSVERSIONINFOEXA)lpVersionInformation; 190 191 lpVersionExInformation->wServicePackMajor = VersionData[winversion].getVersionEx.wServicePackMajor; 192 lpVersionExInformation->wServicePackMinor = VersionData[winversion].getVersionEx.wServicePackMinor; 193 lpVersionExInformation->wReserved[0] = VersionData[winversion].getVersionEx.wReserved[0]; 194 lpVersionExInformation->wReserved[1] = VersionData[winversion].getVersionEx.wReserved[1]; 195 196 dprintf(("service pack version %x.%x", lpVersionExInformation->wServicePackMajor, lpVersionExInformation->wServicePackMinor)); 197 } 198 199 SetLastError(ERROR_SUCCESS); 200 return(TRUE); 201 201 } 202 202 //****************************************************************************** … … 204 204 BOOL WIN32API GetVersionExW(OSVERSIONINFOW *lpVersionInformation) 205 205 { 206 dprintf(("KERNEL32: GetVersionExW %x", lpVersionInformation));207 208 if(lpVersionInformation == NULL)209 {210 dprintf(("ERROR: invalid parameter"));211 SetLastError(ERROR_INVALID_PARAMETER);212 return(FALSE); 213 }214 if(lpVersionInformation->dwOSVersionInfoSize < sizeof(OSVERSIONINFOW))215 {216 dprintf(("ERROR: buffer too small"));217 SetLastError(ERROR_INSUFFICIENT_BUFFER);218 return(FALSE); 219 }220 221 if(fCheckVersion == FALSE) {222 CheckVersion();223 }224 lpVersionInformation->dwMajorVersion = VersionData[winversion].getVersionEx.dwMajorVersion;225 lpVersionInformation->dwMinorVersion = VersionData[winversion].getVersionEx.dwMinorVersion;226 lpVersionInformation->dwBuildNumber = VersionData[winversion].getVersionEx.dwBuildNumber;227 lpVersionInformation->dwPlatformId = VersionData[winversion].getVersionEx.dwPlatformId;228 lstrcpyAtoW(lpVersionInformation->szCSDVersion, VersionData[winversion].getVersionEx.szCSDVersion);229 230 if(lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXW))231 {//Windows 2000 (and up) extension232 LPOSVERSIONINFOEXW lpVersionExInformation = (LPOSVERSIONINFOEXW)lpVersionInformation;233 234 lpVersionExInformation->wServicePackMajor = VersionData[winversion].getVersionEx.wServicePackMajor;235 lpVersionExInformation->wServicePackMinor = VersionData[winversion].getVersionEx.wServicePackMinor;236 lpVersionExInformation->wReserved[0] = VersionData[winversion].getVersionEx.wReserved[0];237 lpVersionExInformation->wReserved[1] = VersionData[winversion].getVersionEx.wReserved[1];238 }239 SetLastError(ERROR_SUCCESS);240 return(TRUE);206 dprintf(("KERNEL32: GetVersionExW %x", lpVersionInformation)); 207 208 if(lpVersionInformation == NULL) 209 { 210 dprintf(("ERROR: invalid parameter")); 211 SetLastError(ERROR_INVALID_PARAMETER); 212 return(FALSE); 213 } 214 if(lpVersionInformation->dwOSVersionInfoSize < sizeof(OSVERSIONINFOW)) 215 { 216 dprintf(("ERROR: buffer too small")); 217 SetLastError(ERROR_INSUFFICIENT_BUFFER); 218 return(FALSE); 219 } 220 221 if(fCheckVersion == FALSE) { 222 CheckVersion(); 223 } 224 lpVersionInformation->dwMajorVersion = VersionData[winversion].getVersionEx.dwMajorVersion; 225 lpVersionInformation->dwMinorVersion = VersionData[winversion].getVersionEx.dwMinorVersion; 226 lpVersionInformation->dwBuildNumber = VersionData[winversion].getVersionEx.dwBuildNumber; 227 lpVersionInformation->dwPlatformId = VersionData[winversion].getVersionEx.dwPlatformId; 228 lstrcpyAtoW(lpVersionInformation->szCSDVersion, VersionData[winversion].getVersionEx.szCSDVersion); 229 230 if(lpVersionInformation->dwOSVersionInfoSize == sizeof(OSVERSIONINFOEXW)) 231 {//Windows 2000 (and up) extension 232 LPOSVERSIONINFOEXW lpVersionExInformation = (LPOSVERSIONINFOEXW)lpVersionInformation; 233 234 lpVersionExInformation->wServicePackMajor = VersionData[winversion].getVersionEx.wServicePackMajor; 235 lpVersionExInformation->wServicePackMinor = VersionData[winversion].getVersionEx.wServicePackMinor; 236 lpVersionExInformation->wReserved[0] = VersionData[winversion].getVersionEx.wReserved[0]; 237 lpVersionExInformation->wReserved[1] = VersionData[winversion].getVersionEx.wReserved[1]; 238 } 239 SetLastError(ERROR_SUCCESS); 240 return(TRUE); 241 241 } 242 242 //****************************************************************************** … … 244 244 LONG WIN32API GetVersion() 245 245 { 246 dprintf(("KERNEL32: GetVersion")); 247 // highword 0 = NT, lowword high byte major ver, low byte minor ver 248 /* @@@PH 98/04/04 MFC30 makes assumptions about process control block */ 249 /* structures that lead to crashes if we don't identify as NT */ 250 251 if(fCheckVersion == FALSE) { 252 CheckVersion(); 253 } 254 return VersionData[winversion].getVersion; 255 } 256 //****************************************************************************** 257 //****************************************************************************** 246 dprintf(("KERNEL32: GetVersion")); 247 if(fCheckVersion == FALSE) { 248 CheckVersion(); 249 } 250 return VersionData[winversion].getVersion; 251 } 252 //****************************************************************************** 253 //******************************************************************************
Note:
See TracChangeset
for help on using the changeset viewer.