// 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 use 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.
This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)
Skills that self-taught computer programmers lack