summaryrefslogtreecommitdiffstats
path: root/base/win_util.cc
diff options
context:
space:
mode:
authornsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-12 20:23:10 +0000
committernsylvain@chromium.org <nsylvain@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-02-12 20:23:10 +0000
commitedb4c82c5b851305a2045fc4661912c7d6b10de4 (patch)
tree4df3f11cf27ed31811637ef3149affc3bd056f39 /base/win_util.cc
parent3fad9ce12443c3cecdcb0759586e77ac8a639a4c (diff)
downloadchromium_src-edb4c82c5b851305a2045fc4661912c7d6b10de4.zip
chromium_src-edb4c82c5b851305a2045fc4661912c7d6b10de4.tar.gz
chromium_src-edb4c82c5b851305a2045fc4661912c7d6b10de4.tar.bz2
Add code to be able to detect windows7 and 2008 in GetWinVersion.
Review URL: http://codereview.chromium.org/21274 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@9694 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/win_util.cc')
-rw-r--r--base/win_util.cc19
1 files changed, 15 insertions, 4 deletions
diff --git a/base/win_util.cc b/base/win_util.cc
index 8373f4c..c3bc69b 100644
--- a/base/win_util.cc
+++ b/base/win_util.cc
@@ -39,9 +39,9 @@ WinVersion GetWinVersion() {
static bool checked_version = false;
static WinVersion win_version = WINVERSION_PRE_2000;
if (!checked_version) {
- OSVERSIONINFO version_info;
+ OSVERSIONINFOEX version_info;
version_info.dwOSVersionInfoSize = sizeof version_info;
- GetVersionEx(&version_info);
+ GetVersionEx(reinterpret_cast<OSVERSIONINFO*>(&version_info));
if (version_info.dwMajorVersion == 5) {
switch (version_info.dwMinorVersion) {
case 0:
@@ -55,8 +55,19 @@ WinVersion GetWinVersion() {
win_version = WINVERSION_SERVER_2003;
break;
}
- } else if (version_info.dwMajorVersion >= 6) {
- win_version = WINVERSION_VISTA;
+ } else if (version_info.dwMajorVersion == 6) {
+ if (version_info.wProductType != VER_NT_WORKSTATION) {
+ // 2008 is 6.0, and 2008 R2 is 6.1.
+ win_version = WINVERSION_2008;
+ } else {
+ if (version_info.dwMinorVersion == 0) {
+ win_version = WINVERSION_VISTA;
+ } else {
+ win_version = WINVERSION_WIN7;
+ }
+ }
+ } else if (version_info.dwMajorVersion > 6) {
+ win_version = WINVERSION_WIN7;
}
checked_version = true;
}