summaryrefslogtreecommitdiffstats
path: root/base
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
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')
-rw-r--r--base/win_util.cc19
-rw-r--r--base/win_util.h2
2 files changed, 17 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;
}
diff --git a/base/win_util.h b/base/win_util.h
index 2af65a4..5c49efd 100644
--- a/base/win_util.h
+++ b/base/win_util.h
@@ -23,6 +23,8 @@ enum WinVersion {
WINVERSION_XP = 2,
WINVERSION_SERVER_2003 = 3,
WINVERSION_VISTA = 4,
+ WINVERSION_2008 = 5,
+ WINVERSION_WIN7 = 6,
};
void GetNonClientMetrics(NONCLIENTMETRICS* metrics);