113 lines
2.3 KiB
C++
113 lines
2.3 KiB
C++
#ifndef _COMMON_WINVERSIONINFO_HPP_
|
|
#define _COMMON_WINVERSIONINFO_HPP_
|
|
#ifndef _COMMON_STRING_HPP_
|
|
#include <common/string.hpp>
|
|
#endif
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
|
|
class WinVersionInfo : private OSVERSIONINFO
|
|
{
|
|
public:
|
|
enum Platform{PlatformWin32s=VER_PLATFORM_WIN32s,PlatformWin32Windows=VER_PLATFORM_WIN32_WINDOWS,PlatformWin32NT=VER_PLATFORM_WIN32_NT};
|
|
WinVersionInfo(void);
|
|
virtual ~WinVersionInfo();
|
|
DWORD majorVersion(void)const;
|
|
DWORD minorVersion(void)const;
|
|
DWORD buildNumber(void)const;
|
|
Platform platformID(void)const;
|
|
BOOL isWinNT(void)const;
|
|
BOOL isWin95(void)const;
|
|
String additionalInfo(void)const;
|
|
private:
|
|
WinVersionInfo(const WinVersionInfo &versionInfo);
|
|
WinVersionInfo &operator=(const WinVersionInfo &versionInfo);
|
|
void init(void);
|
|
void getVersionEx(void);
|
|
};
|
|
|
|
inline
|
|
WinVersionInfo::WinVersionInfo(void)
|
|
{
|
|
init();
|
|
getVersionEx();
|
|
}
|
|
|
|
inline
|
|
WinVersionInfo::WinVersionInfo(const WinVersionInfo &versionInfo)
|
|
{ // private implementation
|
|
*this=versionInfo;
|
|
}
|
|
|
|
inline
|
|
WinVersionInfo::~WinVersionInfo()
|
|
{
|
|
}
|
|
|
|
inline
|
|
WinVersionInfo &WinVersionInfo::operator=(const WinVersionInfo &/*versionInfo*/)
|
|
{ // private implentation
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
DWORD WinVersionInfo::majorVersion(void)const
|
|
{
|
|
return OSVERSIONINFO::dwMajorVersion;
|
|
}
|
|
|
|
inline
|
|
DWORD WinVersionInfo::minorVersion(void)const
|
|
{
|
|
return OSVERSIONINFO::dwMinorVersion;
|
|
}
|
|
|
|
inline
|
|
DWORD WinVersionInfo::buildNumber(void)const
|
|
{
|
|
return OSVERSIONINFO::dwBuildNumber;
|
|
}
|
|
|
|
inline
|
|
WinVersionInfo::Platform WinVersionInfo::platformID(void)const
|
|
{
|
|
return Platform(OSVERSIONINFO::dwPlatformId);
|
|
}
|
|
|
|
inline
|
|
BOOL WinVersionInfo::isWinNT(void)const
|
|
{
|
|
return PlatformWin32NT==platformID();
|
|
}
|
|
|
|
inline
|
|
BOOL WinVersionInfo::isWin95(void)const
|
|
{
|
|
return PlatformWin32Windows==platformID();
|
|
}
|
|
|
|
inline
|
|
String WinVersionInfo::additionalInfo(void)const
|
|
{
|
|
if(OSVERSIONINFO::szCSDVersion&&*OSVERSIONINFO::szCSDVersion)return String(OSVERSIONINFO::szCSDVersion);
|
|
return String();
|
|
}
|
|
|
|
inline
|
|
void WinVersionInfo::init(void)
|
|
{
|
|
OSVERSIONINFO::dwOSVersionInfoSize=sizeof(OSVERSIONINFO);
|
|
OSVERSIONINFO::dwMajorVersion=0;
|
|
OSVERSIONINFO::dwMinorVersion=0;
|
|
OSVERSIONINFO::dwBuildNumber=0;
|
|
OSVERSIONINFO::dwPlatformId=0;
|
|
OSVERSIONINFO::szCSDVersion[0]=0;
|
|
}
|
|
|
|
inline
|
|
void WinVersionInfo::getVersionEx(void)
|
|
{
|
|
::GetVersionEx(&((OSVERSIONINFO&)*this));
|
|
}
|
|
#endif |