Files
Work/common/VERSION.HPP
2024-08-07 09:09:36 -04:00

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