| Index: base/win/windows_version.h
|
| ===================================================================
|
| --- base/win/windows_version.h (revision 80823)
|
| +++ base/win/windows_version.h (working copy)
|
| @@ -7,99 +7,62 @@
|
| #pragma once
|
|
|
| #include "base/base_api.h"
|
| -#include "base/memory/singleton.h"
|
|
|
| typedef void* HANDLE;
|
|
|
| namespace base {
|
| namespace win {
|
|
|
| -// The running version of Windows. This is declared outside OSInfo for
|
| -// syntactic sugar reasons; see the declaration of GetVersion() below.
|
| // NOTE: Keep these in order so callers can do things like
|
| -// "if (base::win::GetVersion() >= base::win::VERSION_VISTA) ...".
|
| +// "if (GetWinVersion() > WINVERSION_2000) ...". It's OK to change the values,
|
| +// though.
|
| enum Version {
|
| - VERSION_PRE_XP = 0, // Not supported.
|
| - VERSION_XP,
|
| - VERSION_SERVER_2003, // Also includes Windows XP Professional x64.
|
| - VERSION_VISTA,
|
| - VERSION_SERVER_2008,
|
| - VERSION_WIN7,
|
| + VERSION_PRE_2000 = 0, // Not supported
|
| + VERSION_2000 = 1, // Not supported
|
| + VERSION_XP = 2,
|
| + VERSION_SERVER_2003 = 3, // Also includes Windows XP Professional x64 edition
|
| + VERSION_VISTA = 4,
|
| + VERSION_2008 = 5,
|
| + VERSION_WIN7 = 6,
|
| };
|
|
|
| -// A Singleton that can be used to query various pieces of information about the
|
| -// OS and process state.
|
| -class BASE_API OSInfo {
|
| - public:
|
| - struct VersionNumber {
|
| - int major;
|
| - int minor;
|
| - int build;
|
| - };
|
| +// Returns the running version of Windows.
|
| +BASE_API Version GetVersion();
|
|
|
| - struct ServicePack {
|
| - int major;
|
| - int minor;
|
| - };
|
| +// Returns the major and minor version of the service pack installed.
|
| +BASE_API void GetServicePackLevel(int* major, int* minor);
|
|
|
| - // The processor architecture this copy of Windows natively uses. For
|
| - // example, given an x64-capable processor, we have three possibilities:
|
| - // 32-bit Chrome running on 32-bit Windows: X86_ARCHITECTURE
|
| - // 32-bit Chrome running on 64-bit Windows via WOW64: X64_ARCHITECTURE
|
| - // 64-bit Chrome running on 64-bit Windows: X64_ARCHITECTURE
|
| - enum WindowsArchitecture {
|
| - X86_ARCHITECTURE,
|
| - X64_ARCHITECTURE,
|
| - IA64_ARCHITECTURE,
|
| - OTHER_ARCHITECTURE,
|
| - };
|
| +enum WindowsArchitecture {
|
| + X86_ARCHITECTURE,
|
| + X64_ARCHITECTURE,
|
| + IA64_ARCHITECTURE,
|
| + OTHER_ARCHITECTURE,
|
| +};
|
|
|
| - // Whether a process is running under WOW64 (the wrapper that allows 32-bit
|
| - // processes to run on 64-bit versions of Windows). This will return
|
| - // WOW64_DISABLED for both "32-bit Chrome on 32-bit Windows" and "64-bit
|
| - // Chrome on 64-bit Windows". WOW64_UNKNOWN means "an error occurred", e.g.
|
| - // the process does not have sufficient access rights to determine this.
|
| - enum WOW64Status {
|
| - WOW64_DISABLED,
|
| - WOW64_ENABLED,
|
| - WOW64_UNKNOWN,
|
| - };
|
| +// Returns the processor architecture this copy of Windows natively uses.
|
| +// For example, given an x64-capable processor, we have three possibilities:
|
| +// 32-bit Chrome running on 32-bit Windows: X86_ARCHITECTURE
|
| +// 32-bit Chrome running on 64-bit Windows via WOW64: X64_ARCHITECTURE
|
| +// 64-bit Chrome running on 64-bit Windows: X64_ARCHITECTURE
|
| +BASE_API WindowsArchitecture GetWindowsArchitecture();
|
|
|
| - static OSInfo* GetInstance();
|
| -
|
| - Version version() const { return version_; }
|
| - // The next two functions return arrays of values, [major, minor(, build)].
|
| - VersionNumber version_number() const { return version_number_; }
|
| - ServicePack service_pack() const { return service_pack_; }
|
| - WindowsArchitecture architecture() const { return architecture_; }
|
| - int processors() const { return processors_; }
|
| - size_t allocation_granularity() const { return allocation_granularity_; }
|
| - WOW64Status wow64_status() const { return wow64_status_; }
|
| -
|
| - // Like wow64_status(), but for the supplied handle instead of the current
|
| - // process. This doesn't touch member state, so you can bypass the singleton.
|
| - static WOW64Status GetWOW64StatusForProcess(HANDLE process_handle);
|
| -
|
| - private:
|
| - OSInfo();
|
| - ~OSInfo();
|
| -
|
| - Version version_;
|
| - VersionNumber version_number_;
|
| - ServicePack service_pack_;
|
| - WindowsArchitecture architecture_;
|
| - int processors_;
|
| - size_t allocation_granularity_;
|
| - WOW64Status wow64_status_;
|
| -
|
| - friend struct DefaultSingletonTraits<OSInfo>;
|
| - DISALLOW_COPY_AND_ASSIGN(OSInfo);
|
| +enum WOW64Status {
|
| + WOW64_DISABLED,
|
| + WOW64_ENABLED,
|
| + WOW64_UNKNOWN,
|
| };
|
|
|
| -// Because this is by far the most commonly-requested value from the above
|
| -// singleton, we add a global-scope accessor here as syntactic sugar.
|
| -BASE_API Version GetVersion();
|
| +// Returns whether this process is running under WOW64 (the wrapper that allows
|
| +// 32-bit processes to run on 64-bit versions of Windows). This will return
|
| +// WOW64_DISABLED for both "32-bit Chrome on 32-bit Windows" and "64-bit Chrome
|
| +// on 64-bit Windows". WOW64_UNKNOWN means "an error occurred", e.g. the
|
| +// process does not have sufficient access rights to determine this.
|
| +BASE_API WOW64Status GetWOW64Status();
|
|
|
| +// Like GetWOW64Status(), but for the supplied handle instead of the current
|
| +// process.
|
| +BASE_API WOW64Status GetWOW64StatusForProcess(HANDLE process_handle);
|
| +
|
| } // namespace win
|
| } // namespace base
|
|
|
|
|