예제 #1
0
int Supported(VOID)
{
	DWORD dwPInfo = NULL;
	DWORD dwVersion = NULL;
	DWORD dwMajorVersion = NULL;
	DWORD dwMinorVersion = NULL;
	dwVersion = GetVersion();
	dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
	dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
	if(dwMajorVersion != 6 || dwMinorVersion != 1) {
		return 1;
	}
	GetProductInfo(dwMajorVersion, dwMinorVersion, 0, 0, &dwPInfo);
	switch(dwPInfo) {
	case PRODUCT_ULTIMATE:
	case PRODUCT_HOME_BASIC:
	case PRODUCT_HOME_PREMIUM:
	case PRODUCT_PROFESSIONAL:
	case PRODUCT_STARTER:
	case PRODUCT_STANDARD_SERVER:
	case PRODUCT_STANDARD_SERVER_CORE:
	case PRODUCT_STANDARD_SERVER_CORE_V:
	case PRODUCT_STANDARD_SERVER_V:
		break;
	default:
		return 2;
	}
	return 0;
}
예제 #2
0
String ColorProfile::GetProfileInfo()
{
//	String name= GetProductName();
	String desc= GetProductDesc();
	String info= GetProductInfo();
	String cpyr= GetCopyrightStr();

	oStringstream ost;
	const TCHAR* space= _T("\r\n");
//	ost << name;
//	if (!name.empty())
//		ost << space;
	if (!desc.empty()) // && desc != name)
		ost << desc << space;
	if (!info.empty() && info != desc)// && info != name)
		ost << info << space;
	if (!cpyr.empty() && cpyr != desc && /*cpyr != name &&*/ cpyr != info)
		ost << cpyr << space;

	String str= ost.str();

	while (str[0] == _T(' '))
		str.erase(0);

//	while (!str.empty() && str[str.size() - 1] == _T(' '))
//		str.erase(str.size() - 1);

	return str;
}
예제 #3
0
파일: SSD.cpp 프로젝트: zphseu/cuiyan
CSSD::CSSD(SSD ssd, CRYPTTYPE crypt, BOOL inSysInfo) : m_Crypt(crypt), m_ssd(ssd)
{ 
	m_ssd.m_szProduct = GetProductInfo(); 
	m_inSysInfo = inSysInfo;
	if (m_inSysInfo) {
		CSysInfo si;
		m_ssd.m_szSysInfo = si.GetSysInfo();
	}
}
void QGeneralSettingWidget::on_RBMultiTouchWin7_clicked()
{
#if defined(Q_OS_WIN)
    OSVERSIONINFOW Info;
    Info.dwOSVersionInfoSize = sizeof(OSVERSIONINFOW);
    if( GetVersionEx( &Info ) )
    {
        if( Info.dwMajorVersion <= 6 && Info.dwMinorVersion <= 1 )
        {
            bool bMsg = false;
            if( Info.dwMajorVersion == 6 && Info.dwMinorVersion == 1 )
            {
                typedef bool (WINAPI *fnGetProductInfo)(DWORD, DWORD, DWORD, DWORD, PDWORD);
                DWORD dwType = 0;
                fnGetProductInfo GetProductInfo = (fnGetProductInfo)GetProcAddress( GetModuleHandle(L"kernel32.dll"), "GetProductInfo" );
                GetProductInfo( Info.dwMajorVersion, Info.dwMinorVersion, 0, 0, &dwType );
                if( dwType == 0x00000002 || // PRODUCT_HOME_BASIC
                    dwType == 0x00000043 || // PRODUCT_HOME_BASIC_E
                    dwType == 0x00000005 || // PRODUCT_HOME_BASIC_N
                    dwType == 0x0000000B || // PRODUCT_STARTER
                    dwType == 0x00000042 || // PRODUCT_STARTER_E
                    dwType == 0x0000002F )  // RPODUCT_STARTER_N
                {
                    bMsg = true;
                }
            }
            else
            {
                bMsg = true;
            }

            if( bMsg )
            {
                QLangRes& Res = QLangManager::instance()->getResource();
                QString strMessage = Res.getResString( QString::fromUtf8("SETTING"), QString::fromUtf8("TEXT_INPUT_MODE_WARNING_MSG") );
                QString strMsgTitle = Res.getResString( QString::fromUtf8("WARNING SENSOR DIAGNOSIS"), QString::fromUtf8("TITLE_CAPTION") );

                QMessageBox msgBox( this );
                msgBox.setWindowTitle( strMsgTitle );
                msgBox.setText( strMessage );
                msgBox.setStandardButtons( QMessageBox::Yes | QMessageBox::No );
                msgBox.setIcon( QMessageBox::Warning );
                msgBox.setButtonText( QMessageBox::Yes, Res.getResString( QString::fromUtf8("MESSAGEBOX"), QString::fromUtf8("BTN_CAPTION_YES") ) );
                msgBox.setButtonText( QMessageBox::No, Res.getResString( QString::fromUtf8("MESSAGEBOX"), QString::fromUtf8("BTN_CAPTION_NO") ) );
                msgBox.setFont( font() );

                if( msgBox.exec() != QMessageBox::Yes )
                {
                    RBMultiTouchWin7->setChecked( false );
                    RBMouse->setChecked( true );
                    return;
                }
            }
        }
예제 #5
0
static
BOOL
GetVistaVersion(WCHAR * szBuffer)
{
     DWORD Length;

     if (GetProductInfo(6, 0, 0, 0, &Length))
     {
         switch(Length)
         {
             case PRODUCT_ULTIMATE:
                 wsprintfW(szBuffer, L"Windows Vista Ultimate (6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
             case PRODUCT_HOME_BASIC:
                 wsprintfW(szBuffer, L"Windows Vista Home Basic (6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
             case PRODUCT_HOME_PREMIUM:
                 wsprintfW(szBuffer, L"Windows Vista Home Premimum (6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
             case PRODUCT_ENTERPRISE:
                 wsprintfW(szBuffer, L"Windows Vista Enterprise (6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
             case PRODUCT_HOME_BASIC_N:
                 wsprintfW(szBuffer, L"Windows Vista Home Basic N(6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
             case PRODUCT_BUSINESS:
                 wsprintfW(szBuffer, L"Windows Vista Business(6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
            case PRODUCT_STARTER:
                 wsprintfW(szBuffer, L"Windows Vista Starter(6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
            case PRODUCT_BUSINESS_N:
                 wsprintfW(szBuffer, L"Windows Vista Business N(6.0, Build %04u)", info.dwBuildNumber);
                 return TRUE;
            default:
                 return FALSE;
                }
            }
}
예제 #6
0
BOOL GetKey(wchar_t** ProductKey)
{
	DWORD dwVersion = NULL;
	DWORD dwPInfo = NULL;
	DWORD dwMajorVersion = NULL;
	DWORD dwMinorVersion = NULL;
	dwVersion = GetVersion();
	dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
	dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
	GetProductInfo(dwMajorVersion, dwMinorVersion, 0, 0, &dwPInfo);
	switch(dwPInfo) {
	case PRODUCT_ULTIMATE:
		*ProductKey = L"MHFPT-8C8M2-V9488-FGM44-2C9T3";
		break;
	case PRODUCT_HOME_BASIC:
		*ProductKey = L"DX8R9-BVCGB-PPKRR-8J7T4-TJHTH";
		break;
	case PRODUCT_HOME_PREMIUM:
		*ProductKey = L"4FG99-BC3HD-73CQT-WMF7J-3Q6C9";
		break;
	case PRODUCT_PROFESSIONAL:
		*ProductKey = L"74T2M-DKDBC-788W3-H689G-6P6GT";
		break;
	case PRODUCT_STARTER:
		*ProductKey = L"RH98C-M9PW4-6DHR7-X99PJ-3FGDB";
		break;
	case PRODUCT_STANDARD_SERVER:
	case PRODUCT_STANDARD_SERVER_CORE:
	case PRODUCT_STANDARD_SERVER_CORE_V:
	case PRODUCT_STANDARD_SERVER_V:
		*ProductKey = L"D7TCH-6P8JP-KRG4P-VJKYY-P9GFF";
		break;
	default:
		*ProductKey = NULL;
		return FALSE;
	}
	return TRUE;
}
//Verify Windows SideShow (Aux display) item in CPL
STDAPI SideShow_BVT_EntryPoints(LPVOID pvReserved)
{
    BOOL fResult = FALSE;
    BOOL fLaunched = FALSE;

    LogTestBeginW(__FUNCTIONW__, L"Beginning Windows SideShow BVT test case...");

    HRESULT hr = LOG_FAILED_HR(FromPartialQueryId(START_BUTTON));

    if (SUCCEEDED(hr))
    {
        LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));

        hr = LOG_FAILED_HR(FromPartialQueryId(START_MENU_CONTROL_PANEL));
        if (SUCCEEDED(hr))
        {
            LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));

            //checks to make the switch to Classic View or not
            int originalTimeout = SetSearchTimeOut(TEN_SECONDS);
            hr = LOG_FAILED_HR(FromPartialQueryId(CPL_CLASSIC_VIEW_LNK));
            if (FAILED(hr))
            {
                LogTestInfoW(__FUNCTIONW__, L"Attempt to switch to Classic View failed. Control Panel is already in Classic View mode...");
            }
            else
            {
                LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
            }
            // restore timeout
            SetSearchTimeOut(originalTimeout);

            BOOL fExpected = FALSE;
            DWORD dwProductInfoType = 0;

            if (GetProductInfo(WINDOWS_VISTA_VERSION, 0, 0, 0, &dwProductInfoType))
            {
                switch (dwProductInfoType)
                {
                    case PRODUCT_STARTER:
                    case PRODUCT_HOME_BASIC:
                    case PRODUCT_HOME_BASIC_N:
                        LogTestInfoW(__FUNCTIONW__, L"Windows SideShow is NOT expected in this SKU.");
                        break;
                    case PRODUCT_HOME_PREMIUM:
                    case PRODUCT_HOME_PREMIUM_N:
                    case PRODUCT_BUSINESS:
                    case PRODUCT_BUSINESS_N:
                    case PRODUCT_ENTERPRISE:
                    case PRODUCT_ENTERPRISE_N:
                    case PRODUCT_ULTIMATE:
                    case PRODUCT_ULTIMATE_N:
                        fExpected = TRUE;
                        LogTestInfoW(__FUNCTIONW__, L"Windows SideShow is expected in this SKU.");
                        break;
                    default:
                        LogTestInfoW(__FUNCTIONW__, L"Could not determine the SKU.");
                        break;
                }

                BOOL fFoundUI = SUCCEEDED(LOG_FAILED_HR(FromPartialQueryId(CPL_SIDESHOW_LNK_ENU)));

                if (fFoundUI)
                {
                    fFoundUI &= SUCCEEDED(LOG_FAILED_HR(DoubleClick(CLICKABLE_POINT)));
                    LogTestInfoW(__FUNCTIONW__, L"%s Found Item", fFoundUI ? L"Found": L"Did not find");
                    fLaunched = TRUE;
                }

                if (fFoundUI != fExpected)
                {
                    LogTestInfoW(__FUNCTIONW__,
                        L"Windows SideShow SKU differentiated feature failed.[Current: %s | Expected: %s ]",
                        fFoundUI ? L"Found": L"Not Found",
                        fExpected ? L"Found" : L"Not Found");
                }
                else
                {
                    fResult = TRUE;
                    LogTestInfoW(__FUNCTIONW__, L"Windows SideShow is differentiated correctly.");
                }
            }
            else
            {
                LogTestInfoW(__FUNCTIONW__, L"GetProductInfo failed.");
            }
        }
    }

  LogTestInfoW(__FUNCTIONW__, L"Cleaning up...\n");

  if (!fLaunched)
  {
    hr = LOG_FAILED_HR(FromPartialQueryId(CPL_CLOSE_BTN));
    if (SUCCEEDED(hr))
    {
        hr = LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
    }
  }
  else
  {
    hr = LOG_FAILED_HR(FromPartialQueryId(CPL_SIDESHOW_CLOSE));
    if (SUCCEEDED(hr))
    {
        hr = LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
    }
  }

  LogTestResultW(fResult, __FUNCTIONW__, L"Completed Windows SideShow BVT test case.");
  return NOERROR;
}
예제 #8
0
String GetPlatformName()
{
	static Cache<String> Value;

	return Value.Get([] () 
	{		
		SYSTEM_INFO SystemInfo;

		OSVERSIONINFOEXA VersionInfo;
		VersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);

		DWORD ProductType;

		GetSystemInfo(&SystemInfo);

		if (!GetVersionExA((OSVERSIONINFOA*)&VersionInfo))
		{
			LogLastSystemError("GetVersionEx");
			return String("Unknown");
		}

		if (!GetProductInfo(VersionInfo.dwMajorVersion, VersionInfo.dwMinorVersion, 0, 0, &ProductType))
		{
			LogLastSystemError("GetProductInfo");
			return String("Unknown");
		}

		String Result = "Unknown";

		if (VER_PLATFORM_WIN32_NT == VersionInfo.dwPlatformId && VersionInfo.dwMajorVersion > 4)
		{
			Result = "Microsoft ";

			if (VersionInfo.dwMajorVersion >= 6)
			{
				if (VersionInfo.dwMajorVersion == 6 && VersionInfo.dwMinorVersion == 0)
				{
					if (VersionInfo.wProductType == VER_NT_WORKSTATION)
					{
						Result += "Windows Vista";
					}
					else
					{
						Result += "Windows Server 2008";
					}
				}
				else if (VersionInfo.dwMinorVersion == 0 || VersionInfo.dwMinorVersion == 1 || VersionInfo.dwMinorVersion == 2 || VersionInfo.dwMinorVersion == 3)
				{
					if (VersionInfo.dwMajorVersion == 6)
					{
						if (VersionInfo.wProductType == VER_NT_WORKSTATION && VersionInfo.dwMinorVersion == 1)
						{
							Result += "Windows 7";
						}
						else if (VersionInfo.wProductType == VER_NT_WORKSTATION && VersionInfo.dwMinorVersion == 2)
						{
							Result += "Windows 8";
						}
						else if (VersionInfo.wProductType == VER_NT_WORKSTATION && VersionInfo.dwMinorVersion == 3)
						{
							Result += "Windows 8.1";
						}
						else
						{
							Result += "Windows Server 2008 R2";
						}
					}
					else if (VersionInfo.dwMajorVersion == 10)
					{
						if (VersionInfo.wProductType == VER_NT_WORKSTATION)
						{
							Result += "Windows 10";
						}
						else
						{
							Result += "Windows Server 2016";
						}
					}
					else
					{
						Result += "Unknown Windows Version";
					}

					Result += " ";

					switch (ProductType)
					{
					case PRODUCT_BUSINESS:							Result += "Business"; break;
					case PRODUCT_BUSINESS_N:						Result += "Business N"; break;
					case PRODUCT_CLUSTER_SERVER:					Result += "HPC Edition"; break;
					case PRODUCT_CLUSTER_SERVER_V:					Result += "Server Hyper Core V"; break;
					case PRODUCT_CORE:								Result += "Home"; break;
					case PRODUCT_CORE_COUNTRYSPECIFIC:				Result += "Home China"; break;
					case PRODUCT_CORE_N:							Result += "Home N"; break;
					case PRODUCT_CORE_SINGLELANGUAGE:				Result += "Home Single Language"; break;
					case PRODUCT_DATACENTER_EVALUATION_SERVER:		Result += "Server Datacenter(evaluation installation)"; break;
					case PRODUCT_DATACENTER_SERVER:					Result += "Server Datacenter(full installation)"; break;
					case PRODUCT_DATACENTER_SERVER_CORE:			Result += "Server Datacenter(core installation)"; break;
					case PRODUCT_DATACENTER_SERVER_CORE_V:			Result += "Server Datacenter without Hyper - V(core installation)"; break;
					case PRODUCT_DATACENTER_SERVER_V:				Result += "Server Datacenter without Hyper - V(full installation)"; break;
					case PRODUCT_EDUCATION:							Result += "Education"; break;
					case PRODUCT_EDUCATION_N:						Result += "Education N"; break;
					case PRODUCT_ENTERPRISE:						Result += "Enterprise"; break;
					case PRODUCT_ENTERPRISE_E:						Result += "Enterprise E"; break;
					case PRODUCT_ENTERPRISE_EVALUATION:				Result += "Enterprise Evaluation"; break;
					case PRODUCT_ENTERPRISE_N:						Result += "Enterprise N"; break;
					case PRODUCT_ENTERPRISE_N_EVALUATION:			Result += "Enterprise N Evaluation"; break;
					case PRODUCT_ENTERPRISE_S:						Result += "Enterprise 2015 LTSB"; break;
					case PRODUCT_ENTERPRISE_S_EVALUATION:			Result += "Enterprise 2015 LTSB Evaluation"; break;
					case PRODUCT_ENTERPRISE_S_N:					Result += "Enterprise 2015 LTSB N"; break;
					case PRODUCT_ENTERPRISE_S_N_EVALUATION:			Result += "Enterprise 2015 LTSB N Evaluation"; break;
					case PRODUCT_ENTERPRISE_SERVER:					Result += "Server Enterprise(full installation)"; break;
					case PRODUCT_ENTERPRISE_SERVER_CORE:			Result += "Server Enterprise(core installation)"; break;
					case PRODUCT_ENTERPRISE_SERVER_CORE_V:			Result += "Server Enterprise without Hyper - V(core installation)"; break;
					case PRODUCT_ENTERPRISE_SERVER_IA64:			Result += "Server Enterprise for Itanium - based Systems"; break;
					case PRODUCT_ENTERPRISE_SERVER_V:				Result += "Server Enterprise without Hyper - V(full installation)"; break;
					case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDL:		Result += "Windows Essential Server Solution Additional"; break;
					case PRODUCT_ESSENTIALBUSINESS_SERVER_ADDLSVC:	Result += "Windows Essential Server Solution Additional SVC"; break;
					case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMT:		Result += "Windows Essential Server Solution Management"; break;
					case PRODUCT_ESSENTIALBUSINESS_SERVER_MGMTSVC:	Result += "Windows Essential Server Solution Management SVC"; break;
					case PRODUCT_HOME_BASIC:						Result += "Home Basic"; break;
					case PRODUCT_HOME_BASIC_E:						Result += "Not supported (Home Basic E)"; break;
					case PRODUCT_HOME_BASIC_N:						Result += "Home Basic N"; break;
					case PRODUCT_HOME_PREMIUM:						Result += "Home Premium"; break;
					case PRODUCT_HOME_PREMIUM_E:					Result += "Not supported (Home Premium E)"; break;
					case PRODUCT_HOME_PREMIUM_N:					Result += "Home Premium N"; break;
					case PRODUCT_HOME_PREMIUM_SERVER:				Result += "Windows Home Server 2011"; break;
					case PRODUCT_HOME_SERVER:						Result += "Windows Storage Server 2008 R2 Essentials"; break;
					case PRODUCT_HYPERV:							Result += "Microsoft Hyper - V Server"; break;
					case PRODUCT_IOTUAP:							Result += "IoT Core"; break;
					case PRODUCT_IOTUAPCOMMERCIAL:					Result += "IoT Core Commercial"; break;
					case PRODUCT_MEDIUMBUSINESS_SERVER_MANAGEMENT:	Result += "Windows Essential Business Server Management Server"; break;
					case PRODUCT_MEDIUMBUSINESS_SERVER_MESSAGING:	Result += "Windows Essential Business Server Messaging Server"; break;
					case PRODUCT_MEDIUMBUSINESS_SERVER_SECURITY:	Result += "Windows Essential Business Server Security Server"; break;
					case PRODUCT_MOBILE_CORE:						Result += "Mobile"; break;
					case PRODUCT_MOBILE_ENTERPRISE:					Result += "Mobile Enterprise"; break;
					case PRODUCT_MULTIPOINT_PREMIUM_SERVER:			Result += "Windows MultiPoint Server Premium(full installation)"; break;
					case PRODUCT_MULTIPOINT_STANDARD_SERVER:		Result += "Windows MultiPoint Server Standard(full installation)"; break;
					case PRODUCT_PROFESSIONAL:						Result += "Pro"; break;
					case PRODUCT_PROFESSIONAL_E:					Result += "Not supported (Pro E)"; break;
					case PRODUCT_PROFESSIONAL_N:					Result += "Pro N"; break;
					case PRODUCT_PROFESSIONAL_WMC:					Result += "Professional with Media Center"; break;
					case PRODUCT_SB_SOLUTION_SERVER:				Result += "Windows Small Business Server 2011 Essentials"; break;
					case PRODUCT_SB_SOLUTION_SERVER_EM:				Result += "Server For SB Solutions EM"; break;
					case PRODUCT_SERVER_FOR_SB_SOLUTIONS:			Result += "Server For SB Solutions"; break;
					case PRODUCT_SERVER_FOR_SB_SOLUTIONS_EM:		Result += "Server For SB Solutions EM"; break;
					case PRODUCT_SERVER_FOR_SMALLBUSINESS:			Result += "Windows Server 2008 for Windows Essential Server Solutions"; break;
					case PRODUCT_SERVER_FOR_SMALLBUSINESS_V:		Result += "Windows Server 2008 without Hyper - V for Windows Essential Server Solutions"; break;
					case PRODUCT_SERVER_FOUNDATION:					Result += "Server Foundation"; break;
					case PRODUCT_SMALLBUSINESS_SERVER:				Result += "Windows Small Business Server"; break;
					case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM:		Result += "Small Business Server Premium"; break;
					case PRODUCT_SMALLBUSINESS_SERVER_PREMIUM_CORE:	Result += "Small Business Server Premium(core installation)"; break;
					case PRODUCT_SOLUTION_EMBEDDEDSERVER:			Result += "Windows MultiPoint Server"; break;
					case PRODUCT_STANDARD_EVALUATION_SERVER:		Result += "Server Standard(evaluation installation)"; break;
					case PRODUCT_STANDARD_SERVER:					Result += "Server Standard"; break;
					case PRODUCT_STANDARD_SERVER_CORE:				Result += "Server Standard(core installation)"; break;
					case PRODUCT_STANDARD_SERVER_CORE_V:			Result += "Server Standard without Hyper - V(core installation)"; break;
					case PRODUCT_STANDARD_SERVER_V:					Result += "Server Standard without Hyper - V"; break;
					case PRODUCT_STANDARD_SERVER_SOLUTIONS:			Result += "Server Solutions Premium"; break;
					case PRODUCT_STANDARD_SERVER_SOLUTIONS_CORE:	Result += "Server Solutions Premium(core installation)"; break;
					case PRODUCT_STARTER:							Result += "Starter"; break;
					case PRODUCT_STARTER_E:							Result += "Not supported (Starter E)"; break;
					case PRODUCT_STARTER_N:							Result += "Starter N"; break;
					case PRODUCT_STORAGE_ENTERPRISE_SERVER:			Result += "Storage Server Enterprise"; break;
					case PRODUCT_STORAGE_ENTERPRISE_SERVER_CORE:	Result += "Storage Server Enterprise(core installation)"; break;
					case PRODUCT_STORAGE_EXPRESS_SERVER:			Result += "Storage Server Express"; break;
					case PRODUCT_STORAGE_EXPRESS_SERVER_CORE:		Result += "Storage Server Express(core installation)"; break;
					case PRODUCT_STORAGE_STANDARD_EVALUATION_SERVER:Result += "Storage Server Standard(evaluation installation)"; break;
					case PRODUCT_STORAGE_STANDARD_SERVER:			Result += "Storage Server Standard"; break;
					case PRODUCT_STORAGE_STANDARD_SERVER_CORE:		Result += "Storage Server Standard(core installation)"; break;
					case PRODUCT_STORAGE_WORKGROUP_EVALUATION_SERVER:Result += "Storage Server Workgroup(evaluation installation)"; break;
					case PRODUCT_STORAGE_WORKGROUP_SERVER:			Result += "Storage Server Workgroup"; break;
					case PRODUCT_STORAGE_WORKGROUP_SERVER_CORE:		Result += "Storage Server Workgroup(core installation)"; break;
					case PRODUCT_ULTIMATE:							Result += "Ultimate"; break;
					case PRODUCT_ULTIMATE_E:						Result += "Not supported (Ultimate E)"; break;
					case PRODUCT_ULTIMATE_N:						Result += "Ultimate N"; break;
					case PRODUCT_UNDEFINED:							Result += "An unknown product"; break;
					case PRODUCT_WEB_SERVER:						Result += "Web Server(full installation)"; break;
					case PRODUCT_WEB_SERVER_CORE:					Result += "Web Server(core installation)"; break;
					default:										Result += "Unknown product type"; break;
					}
				}
			}
			else if (VersionInfo.dwMajorVersion == 5 && VersionInfo.dwMinorVersion == 2)
			{
				if (GetSystemMetrics(SM_SERVERR2))
				{
					Result += "Windows Server 2003 R2";
				}
				else if (VersionInfo.wSuiteMask & VER_SUITE_STORAGE_SERVER)
				{
					Result += "Windows Storage Server 2003";
				}
				else if (VersionInfo.wSuiteMask & VER_SUITE_WH_SERVER)
				{
					Result += "Windows Home Server";
				}
				else if (VersionInfo.wProductType & VER_NT_WORKSTATION && SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
				{
					Result += "Windows XP Professional x64 Edition";
				}
				else
				{
					Result += "Windows Server 2003";
				}

				if (VersionInfo.wProductType != VER_NT_WORKSTATION)
				{
					if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
					{
						if (VersionInfo.wSuiteMask & VER_SUITE_DATACENTER)
						{
							Result += " Datacenter Edition for Itanium-based Systems";
						}
						else if (VersionInfo.wSuiteMask & VER_SUITE_ENTERPRISE)
						{
							Result += " Enterprise Edition for Itanium-based Systems";
						}
					}
					else if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
					{
						if (VersionInfo.wSuiteMask & VER_SUITE_DATACENTER)
						{
							Result += " Datacenter x64 Edition";
						}
						else if (VersionInfo.wSuiteMask & VER_SUITE_ENTERPRISE)
						{
							Result += " Enterprise x64 Edition";
						}
						else
						{
							Result += " Standard x64 Edition";
						}
					}
					else
					{
						if (VersionInfo.wSuiteMask & VER_SUITE_COMPUTE_SERVER)
						{
							Result += " Compute Cluster Edition";
						}
						else if (VersionInfo.wSuiteMask & VER_SUITE_DATACENTER)
						{
							Result += " Datacenter Edition";
						}
						else if (VersionInfo.wSuiteMask & VER_SUITE_ENTERPRISE)
						{
							Result += " Enterprise Edition";
						}
						else if (VersionInfo.wSuiteMask & VER_SUITE_BLADE)
						{
							Result += " Web Edition";
						}
						else
						{
							Result += " Standard Edition";
						}
					}
				}
			}
			else if (VersionInfo.dwMajorVersion == 5 && VersionInfo.dwMinorVersion == 1)
			{
				Result += "Windows XP";
				if (VersionInfo.wSuiteMask & VER_SUITE_PERSONAL)
				{
					Result += " Home Edition";
				}
				else
				{
					Result += " Professional";
				}
			}
			else if (VersionInfo.dwMajorVersion == 5 && VersionInfo.dwMinorVersion == 0)
			{
				Result += "Windows 2000 ";

				if (VersionInfo.wProductType == VER_NT_WORKSTATION)
				{
					Result += " Professional";
				}
				else
				{
					if (VersionInfo.wSuiteMask & VER_SUITE_DATACENTER)
					{
						Result += " Datacenter Server";
					}
					else if (VersionInfo.wSuiteMask & VER_SUITE_ENTERPRISE)
					{
						Result += " Advanced Server";
					}
					else
					{
						Result += " Server";
					}
				}
			}

			if (strlen(VersionInfo.szCSDVersion) > 0)
			{
				Result += " ";
				Result += VersionInfo.szCSDVersion;
			}

			Result += String(" (Build ") + (int)VersionInfo.dwBuildNumber + String(")");

			if (VersionInfo.dwMajorVersion >= 6)
			{
				if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
				{
					Result += ", 64-bit";
				}
				else if (SystemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_INTEL)
				{
					Result += ", 32-bit";
				}
			}
		}

		return Result;
	});
}
// Verify Mobility Center cpl in SKUs
STDAPI MobilityCenterEntryPoints(LPVOID pvReserved)
{

    BOOL fResult = FALSE;

    LogTestBeginW(__FUNCTIONW__, L"Beginning Mobility Center BVT test case...");

    LogTestInfoW(__FUNCTIONW__, L"Launch Start Button...\n");
    HRESULT hr = LOG_FAILED_HR(FromPartialQueryId(START_BUTTON));

    if (SUCCEEDED(hr))
    {
        LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
        LogTestInfoW(__FUNCTIONW__, L"Launch Control Panel...\n");
        hr = LOG_FAILED_HR(FromPartialQueryId(START_MENU_CONTROL_PANEL));

        if (SUCCEEDED(hr))
        {
            LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
            LogTestInfoW(__FUNCTIONW__, L"Maximize Control Panel...\n");
            hr = LOG_FAILED_HR(FromPartialQueryId(CPL_MAXIMIZE));

            if (SUCCEEDED(hr))
            {
                LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));

                //Get Product Type
                LogTestInfoW(__FUNCTIONW__, L"Getting product type...\n");
                DWORD dwProductInfoType = 0;
                if (!GetProductInfo(6, 0, 0, 0, &dwProductInfoType))
                {
                    LogTestInfoW(__FUNCTIONW__, L"GetProductInfo failed.\n");
                }

                LogTestInfoW(__FUNCTIONW__, L"Click Mobile PC link...\n");
                hr = FromPartialQueryId(CPL_MOBILE_PC_LNK);
                LeftButtonClick(CLICKABLE_POINT);

                // Unable to find Mobile PC item
                if (FAILED(hr))
                {
                    if (PRODUCT_STARTER == dwProductInfoType)
                    {
                        // pass test case if Mobile PC not found in Starter
                        fResult = TRUE;
                    }

                    else
                    {
                        // fail test case if Mobile PC not found in other SKUs
                        LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
                        fResult = FALSE;
                    }
                }

                // Able to find Mobile PC item
                else
                {
                    // fail test case for Starter
                    if (PRODUCT_STARTER == dwProductInfoType)
                    {
                        fResult = FALSE;
                    }
                    else
                    {
                        LogTestInfoW(__FUNCTIONW__, L"Click Mobility Center link...\n");
                        hr = LOG_FAILED_HR(FromPartialQueryId(CPL_MBLCTR_LNK));

                        if (SUCCEEDED(hr))
                        {
                            LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
                            LogTestInfoW(__FUNCTIONW__, L"Close Mobility Center...\n");
                            hr = LOG_FAILED_HR(FromPartialQueryId(MBLCTR_CLOSE_BTN));

                            if (SUCCEEDED(hr))
                            {
                                LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
                                fResult = TRUE;
                            }
                        }
                    }
                }
            }
        }
    }

    // clean up: close windows
    if (SUCCEEDED(hr))
    {

        LogTestInfoW(__FUNCTIONW__, L"Close Control Panel...\n");
        hr = LOG_FAILED_HR(FromPartialQueryId(CPL_CLOSE_BTN));

        if (SUCCEEDED(hr))
        {
            hr = LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
        }
    }

    LogTestResultW(fResult, __FUNCTIONW__, L"Completed Mobility Center BVT test case.");
    return NOERROR;
}
//    
//    VerifyWmp_StartMenuEntryPoint 
//  
STDAPI VerifyWmp_StartMenuEntryPoint(LPVOID pvReserved)
{
    BOOL    fPassed = FALSE;
    LPWSTR pwszResultInfo = NULL;
    HRESULT hr = E_FAIL;
    
    LogTestBeginW(__FUNCTIONW__, L"Verify Windows Media Player available in the Start Menu");    
 
    hr = LOG_FAILED_HR(FromPartialQueryId(START_BUTTON));
    if (SUCCEEDED(hr))
    {
        LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
        
        hr = LOG_FAILED_HR(FromPartialQueryId(STARTMENU_ALLPROGRAMS));
        if (SUCCEEDED(hr))  
        {
            LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));

            BOOL fFoundWMP = SUCCEEDED(LOG_FAILED_HR(FromPartialQueryId(WINDOWS_MEDIA_PLAYER)));
            BOOL fExpected = FALSE;
            DWORD dwProductInfoType = 0;

            if (GetProductInfo(WINDOWS_VISTA_VERSION, 0, 0, 0, &dwProductInfoType))
            {
                switch (dwProductInfoType)
                {
                    case PRODUCT_BUSINESS_N:
                    case PRODUCT_HOME_BASIC_N:
                        LogTestInfoW(__FUNCTIONW__, L"Windows Media Player is not expected here!");
                        break;
                    case PRODUCT_STARTER:
                    case PRODUCT_HOME_BASIC:
                    case PRODUCT_HOME_PREMIUM:
                    case PRODUCT_HOME_PREMIUM_N:
                    case PRODUCT_BUSINESS:
                    case PRODUCT_ENTERPRISE:
                    case PRODUCT_ENTERPRISE_N:
                    case PRODUCT_ULTIMATE:
                    case PRODUCT_ULTIMATE_N:
                        fExpected = TRUE;
                        pwszResultInfo = L"Windows Media Player expected here.";
                        break;
                    default:
                        LogTestInfoW(__FUNCTIONW__, L"Could not determine the SKU");
                        pwszResultInfo = L"Could not verify behavior";
                        break;
                }

                if (fFoundWMP != fExpected)
                {
                    LogTestInfoW(__FUNCTIONW__,
                        L"WMP SKU differentiation failed.[Current: %s | Expected: %s ]",
                        fFoundWMP ? L"Found": L"Not Found",
                        fExpected ? L"Found" : L"Not Found");
                }
                else
                {
                    fPassed = TRUE;
                    pwszResultInfo = L"WMP entry point is differentiated correctly";
                    if (fExpected)
                    {
                        RightButtonClick(CLICKABLE_POINT);
                    }
                }
            }
            else
            {
                LogTestInfoW(__FUNCTIONW__, L"GetProductInfo failed.");
                pwszResultInfo = L"GetProductInfo failed.";
            }
        }
    }

    LogTestInfoW(__FUNCTIONW__, L"Cleaning up...");
    
    hr = LOG_FAILED_HR(FromPartialQueryId(START_BUTTON));
    if (SUCCEEDED(hr))
    {
       LOG_FAILED_HR(LeftButtonClick(CLICKABLE_POINT));
    }

 
    LogTestResultW(fPassed, __FUNCTIONW__, pwszResultInfo);
    return NOERROR;
}
// GetMaxRamInMbExpected
//
// Helper function that determines the max RAM in MB supported on the current installed SKU.
// Returns 0 : if SKU not supported on current processor architecture or is SKU cannot be determined
int GetMaxRamInMbExpected()
{
    int nMaxRamInMbExpected = 0;

    // get processor architecture upfront.
    BOOL fIs64BitProcessor = FALSE;
    SYSTEM_INFO systemInfo;
    GetSystemInfo(&systemInfo);
    if (systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 ||
        systemInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_IA64)
    {
        fIs64BitProcessor = TRUE;
    }

    DWORD dwProductInfoType = 0;
    if (GetProductInfo(6, 0, 0, 0, &dwProductInfoType))
    {
        switch (dwProductInfoType)
        {
            case PRODUCT_STARTER:
            {
                if (!fIs64BitProcessor)
                {
                    nMaxRamInMbExpected = RAM_512MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for Starter on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                else
                {
                    LogTestInfoW(__FUNCTIONW__, L"Starter not supported on 64-bit processors!!");
                }
                break;
            }
            case PRODUCT_HOME_BASIC:
            case PRODUCT_HOME_BASIC_N:
            {
                if (!fIs64BitProcessor)
                {
                    nMaxRamInMbExpected = RAM_4GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for Home Basic on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                else
                {
                    nMaxRamInMbExpected = RAM_8GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for Home Basic on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                break;
            }
            case PRODUCT_HOME_PREMIUM:
            case PRODUCT_HOME_PREMIUM_N:
            {
                if (!fIs64BitProcessor)
                {
                    nMaxRamInMbExpected = RAM_4GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for Home Premium on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                else
                {
                    nMaxRamInMbExpected = RAM_16GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for Home Premium on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                break;
            }
            case PRODUCT_BUSINESS:
            case PRODUCT_BUSINESS_N:
            case PRODUCT_ENTERPRISE:
            case PRODUCT_ENTERPRISE_N:
            case PRODUCT_ULTIMATE:
            case PRODUCT_ULTIMATE_N:
            {
                if (!fIs64BitProcessor)
                {
                    nMaxRamInMbExpected = RAM_4GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for this SKU on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                else
                {
                    nMaxRamInMbExpected = RAM_128GB_IN_MB;
                    LogTestInfoW(__FUNCTIONW__, L"Max RAM for this SKU on a 32-bit processor is %dMB!", nMaxRamInMbExpected);
                }
                break;
            }
            default:
                LogTestInfoW(__FUNCTIONW__, L"Could not determine the SKU");
                break;
        }
    }

    return nMaxRamInMbExpected;
}