OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/win/windows_version.h" | 5 #include "base/win/windows_version.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
109 wow64_status_(GetWOW64StatusForProcess(GetCurrentProcess())) { | 109 wow64_status_(GetWOW64StatusForProcess(GetCurrentProcess())) { |
110 OSVERSIONINFOEX version_info = { sizeof version_info }; | 110 OSVERSIONINFOEX version_info = { sizeof version_info }; |
111 ::GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&version_info)); | 111 ::GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&version_info)); |
112 version_number_.major = version_info.dwMajorVersion; | 112 version_number_.major = version_info.dwMajorVersion; |
113 version_number_.minor = version_info.dwMinorVersion; | 113 version_number_.minor = version_info.dwMinorVersion; |
114 version_number_.build = version_info.dwBuildNumber; | 114 version_number_.build = version_info.dwBuildNumber; |
115 version_ = MajorMinorBuildToVersion( | 115 version_ = MajorMinorBuildToVersion( |
116 version_number_.major, version_number_.minor, version_number_.build); | 116 version_number_.major, version_number_.minor, version_number_.build); |
117 service_pack_.major = version_info.wServicePackMajor; | 117 service_pack_.major = version_info.wServicePackMajor; |
118 service_pack_.minor = version_info.wServicePackMinor; | 118 service_pack_.minor = version_info.wServicePackMinor; |
| 119 service_pack_str_ = base::WideToUTF8(version_info.szCSDVersion); |
119 | 120 |
120 SYSTEM_INFO system_info = {}; | 121 SYSTEM_INFO system_info = {}; |
121 ::GetNativeSystemInfo(&system_info); | 122 ::GetNativeSystemInfo(&system_info); |
122 switch (system_info.wProcessorArchitecture) { | 123 switch (system_info.wProcessorArchitecture) { |
123 case PROCESSOR_ARCHITECTURE_INTEL: architecture_ = X86_ARCHITECTURE; break; | 124 case PROCESSOR_ARCHITECTURE_INTEL: architecture_ = X86_ARCHITECTURE; break; |
124 case PROCESSOR_ARCHITECTURE_AMD64: architecture_ = X64_ARCHITECTURE; break; | 125 case PROCESSOR_ARCHITECTURE_AMD64: architecture_ = X64_ARCHITECTURE; break; |
125 case PROCESSOR_ARCHITECTURE_IA64: architecture_ = IA64_ARCHITECTURE; break; | 126 case PROCESSOR_ARCHITECTURE_IA64: architecture_ = IA64_ARCHITECTURE; break; |
126 } | 127 } |
127 processors_ = system_info.dwNumberOfProcessors; | 128 processors_ = system_info.dwNumberOfProcessors; |
128 allocation_granularity_ = system_info.dwAllocationGranularity; | 129 allocation_granularity_ = system_info.dwAllocationGranularity; |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 case PRODUCT_STARTER: | 163 case PRODUCT_STARTER: |
163 default: | 164 default: |
164 version_type_ = SUITE_HOME; | 165 version_type_ = SUITE_HOME; |
165 break; | 166 break; |
166 } | 167 } |
167 } else if (version_info.dwMajorVersion == 5 && | 168 } else if (version_info.dwMajorVersion == 5 && |
168 version_info.dwMinorVersion == 2) { | 169 version_info.dwMinorVersion == 2) { |
169 if (version_info.wProductType == VER_NT_WORKSTATION && | 170 if (version_info.wProductType == VER_NT_WORKSTATION && |
170 system_info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { | 171 system_info.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { |
171 version_type_ = SUITE_PROFESSIONAL; | 172 version_type_ = SUITE_PROFESSIONAL; |
172 } else if (version_info.wSuiteMask & VER_SUITE_WH_SERVER ) { | 173 } else if (version_info.wSuiteMask & VER_SUITE_WH_SERVER) { |
173 version_type_ = SUITE_HOME; | 174 version_type_ = SUITE_HOME; |
174 } else { | 175 } else { |
175 version_type_ = SUITE_SERVER; | 176 version_type_ = SUITE_SERVER; |
176 } | 177 } |
177 } else if (version_info.dwMajorVersion == 5 && | 178 } else if (version_info.dwMajorVersion == 5 && |
178 version_info.dwMinorVersion == 1) { | 179 version_info.dwMinorVersion == 1) { |
179 if(version_info.wSuiteMask & VER_SUITE_PERSONAL) | 180 if (version_info.wSuiteMask & VER_SUITE_PERSONAL) |
180 version_type_ = SUITE_HOME; | 181 version_type_ = SUITE_HOME; |
181 else | 182 else |
182 version_type_ = SUITE_PROFESSIONAL; | 183 version_type_ = SUITE_PROFESSIONAL; |
183 } else { | 184 } else { |
184 // Windows is pre XP so we don't care but pick a safe default. | 185 // Windows is pre XP so we don't care but pick a safe default. |
185 version_type_ = SUITE_HOME; | 186 version_type_ = SUITE_HOME; |
186 } | 187 } |
187 } | 188 } |
188 | 189 |
189 OSInfo::~OSInfo() { | 190 OSInfo::~OSInfo() { |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
221 return WOW64_UNKNOWN; | 222 return WOW64_UNKNOWN; |
222 return is_wow64 ? WOW64_ENABLED : WOW64_DISABLED; | 223 return is_wow64 ? WOW64_ENABLED : WOW64_DISABLED; |
223 } | 224 } |
224 | 225 |
225 Version GetVersion() { | 226 Version GetVersion() { |
226 return OSInfo::GetInstance()->version(); | 227 return OSInfo::GetInstance()->version(); |
227 } | 228 } |
228 | 229 |
229 } // namespace win | 230 } // namespace win |
230 } // namespace base | 231 } // namespace base |
OLD | NEW |