|
// PSLOSVersion.cpp : Implementation of CPSLOSVersion
#include "stdafx.h"
#include "PSLOSVersion.h"
CPSLOSVersion::CPSLOSVersion()
{
m_OSVersion = osvUnknown;
m_Version.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
if(!::GetVersionEx((OSVERSIONINFO*)&m_Version))
return;
switch(m_Version.dwMajorVersion)
{
case 5: // 2000/XP/2003;
{
if(m_Version.dwMinorVersion == 1)
m_OSVersion = osvWindowsXP;
else
if(m_Version.dwMinorVersion == 2)
m_OSVersion = osvWindows2003;
else
m_OSVersion = osvWindows2000; // info.dwMinorVersion is 0;
break;
}
case 6: // Vista/2008/7;
{
if(m_Version.wProductType == VER_NT_SERVER)
m_OSVersion = osvWindows2008;
else
{
if(m_Version.dwMinorVersion == 1)
m_OSVersion = osvWindows7;
else
if(m_Version.dwMinorVersion > 1)
m_OSVersion = osvWindows8;
else
m_OSVersion = osvWindowsVista; // info.wProductType is either
// VER_NT_WORKSTATION or VER_NT_DOMAIN_CONTROLLER;
}
break;
}
default:
{
if(m_Version.dwMajorVersion > 6)
m_OSVersion = osvWindows8;
break;
}
}
}
HRESULT CPSLOSVersion::FinalConstruct()
{
return S_OK;
}
void CPSLOSVersion::FinalRelease()
{
}
////////////////////////////////////////////////////////////////////////
// Interface Implementation;
////////////////////////////////////////////////////////////////////////
STDMETHODIMP CPSLOSVersion::get_OSVersion(PSLOSMainVersion * pValue)
{
PSL_BEGIN
*pValue = m_OSVersion;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_OSMajor(long * pValue)
{
PSL_BEGIN
*pValue = m_Version.dwMajorVersion;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_OSMinor(long * pValue)
{
PSL_BEGIN
*pValue = m_Version.dwMinorVersion;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_OSBuild(long * pValue)
{
PSL_BEGIN
*pValue = m_Version.dwBuildNumber;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_IsHomeEdition(VARIANT_BOOL * pValue)
{
PSL_BEGIN
if(m_Version.wSuiteMask & (smPersonal + smHomeServer))
*pValue = VARIANT_TRUE;
else
*pValue = VARIANT_FALSE;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_SuitMask(PSLOSSuitMask * pValue)
{
PSL_BEGIN
*pValue = (PSLOSSuitMask)m_Version.wSuiteMask;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_SPMajor(long * pValue)
{
PSL_BEGIN
*pValue = m_Version.wServicePackMajor;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_SPMinor(long * pValue)
{
PSL_BEGIN
*pValue = m_Version.wServicePackMinor;
PSL_END
}
STDMETHODIMP CPSLOSVersion::get_SPName(BSTR * pValue)
{
PSL_BEGIN
*pValue = ::SysAllocString(m_Version.szCSDVersion);
PSL_END
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.