⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 raswap.cpp

📁 11N RUOTER Source Code
💻 CPP
📖 第 1 页 / 共 2 页
字号:
					&hkOpenedKey) == ERROR_SUCCESS)
	{
		
		DWORD dwType, dwSize, nResult;
		BYTE szTmp[128];
		CHAR szCPUType[128];
		dwSize = sizeof(szTmp);
		nResult = RegQueryValueEx(hkOpenedKey,
								"PROCESSOR_ARCHITECTURE", //"PROCESSOR_IDENTIFIER",
								NULL,				                              
								&dwType, 
								szTmp, 
								&dwSize);
		if(nResult == ERROR_SUCCESS)
		{			
			lstrcpy(szCPUType, (CHAR *)szTmp);
			szCPUType[dwSize] = '\0';
			if(strcmp(szCPUType, "AMD64") == 0)
				bIsX64 = true;						
		}
				
		RegCloseKey(hkOpenedKey);		
	}
		
	return bIsX64;
}

void GetOSVersion()
{
	OSVERSIONINFOEX osvi;
	BOOLEAN bOsVersionInfoEx;

	// Try calling GetVersionEx using the OSVERSIONINFOEX structure.
	//
	// If that fails, try using the OSVERSIONINFO structure.

	ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX));
	osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

	if(!(bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&osvi)))
	{
		// If OSVERSIONINFOEX doesn't work, try OSVERSIONINFO.

		osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
		if (!GetVersionEx((OSVERSIONINFO *)&osvi)) 
			return;
	}

	switch(osvi.dwPlatformId)
	{
		case VER_PLATFORM_WIN32_NT:
		// Test for the product.

			if(osvi.dwMajorVersion <= 4)
				G_osVersion = WinNT;

			else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 0)
				G_osVersion = Win2000;

			else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 1)
				G_osVersion = WinXP;

			else if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
				G_osVersion = Win2003Server;

			else if (osvi.dwMajorVersion == 6)
			{
				if(IsX64Platform())
					G_osVersion = WinVistaX64;
				else
					G_osVersion = WinVistaX86;
			}

			else
				G_osVersion = LaterOS;
			break;
				
		case VER_PLATFORM_WIN32_WINDOWS:

			if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 0)
				G_osVersion = Win95;
     
			else if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 10)
			{
				osvi.dwBuildNumber &=0x0000ffff;

				if (osvi.dwBuildNumber == 2222)
	  				G_osVersion = Win98SE;
				else
	  				G_osVersion = Win98;
			} 

			else if (osvi.dwMajorVersion == 4 && osvi.dwMinorVersion == 90)
	  			G_osVersion = WinME;

			break;
	}
	return; 
}

TCHAR* GetCardRegistryPath()
{
	return(WIN32_PATH_CLASS_PATH_NETCARDS);
}

BOOL OpenAllAccess(HKEY hKey, const char *lpszSubKey, PHKEY phkResult, BOOL bCreate)
{
	PHKEY	m_phkResult;
	m_phkResult = phkResult;
	if(RegOpenKeyEx(hKey, lpszSubKey, 0, KEY_ALL_ACCESS, m_phkResult) != ERROR_SUCCESS)
	{
		if(bCreate)
		{
			DWORD dwDisposition;
			if(RegCreateKeyEx(hKey, lpszSubKey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, m_phkResult, &dwDisposition) != ERROR_SUCCESS)
				return(FALSE);
		}
		else
			return(FALSE);
	}
	return TRUE;
}

BOOL CopyValues(HKEY hkFrom, HKEY hkTo) 
{
	TCHAR lpstrName[MAX_PATH];
	BYTE pValue[BUFSIZ];

	for (int i = 0; ; i++) 
	{
		DWORD nType;
		DWORD nNameSize(MAX_PATH);
		DWORD nValueSize(MAX_PATH);
		LONG res = RegEnumValue(hkFrom, i, lpstrName, &nNameSize, 0, &nType, pValue, &nValueSize);
		if (ERROR_NO_MORE_ITEMS == res) 
			break;
		
		res = RegSetValueEx(hkTo, lpstrName, 0, nType, pValue, nValueSize);
		
		if (ERROR_SUCCESS != res) 
			return FALSE;		
	}

	return TRUE;
}

BOOL ResetDefaultSetup()
{
	HKEY    hKeyRoot;
	HKEY    hDefault; 
	HKEY    hBackup;
	DWORD dwStatus;
    GUID cls[3];
    DWORD numClass = 0;
    HDEVINFO devs = INVALID_HANDLE_VALUE;
    SP_DEVINFO_DATA devInfo;
	HANDLE hMac = NULL;
	TCHAR buf[256];
	DWORD size = 256;
	DWORD reqSize;
	DWORD dataType;
	BOOLEAN bDeviceExist = FALSE;
	CString strRoot;
	CString strBackup;
	CString strDefault;

	// Get Net CLASSGUID use 3 because Win98 have more than one classguid about"NET"
	if(!SetupDiClassGuidsFromName(REGSTR_DEVICE_CLASS_NET, cls, 3, &numClass))
	{
		ASSERT(FALSE);
		return FALSE;
	}

    devs = SetupDiGetClassDevs(cls, NULL, NULL, DIGCF_PRESENT);

    if(devs == INVALID_HANDLE_VALUE) 
	{
		ASSERT(FALSE);
        return FALSE;
	}

    devInfo.cbSize = sizeof(devInfo);
	int nArraySize = G_arrayDeviceEnum.GetSize();
	for(int i = 0; i < nArraySize; i++)
    {
		UINT nEnum = G_arrayDeviceEnum.GetAt(i);

		SetupDiEnumDeviceInfo(devs, nEnum, &devInfo);

		SetupDiGetDeviceRegistryProperty(devs, &devInfo, SPDRP_DRIVER ,&dataType, (LPBYTE)buf, size, &reqSize);
		if(G_osVersion >= Win2000)
			strRoot.Format(_T("%s\\%s"), REGSTR_PATH_CLASS_2K, buf);
		else
			strRoot.Format(_T("%s\\%s"), REGSTR_PATH_CLASS_9X, buf);

		dwStatus = OpenAllAccess(HKEY_LOCAL_MACHINE, strRoot.GetBuffer(200), &hKeyRoot);
		if(dwStatus == FALSE)
		{
			sprintf(buf, _T("OpenAllAccess '%hs' failed\n"), strRoot);
			TRACE(buf);
			continue;
		}

		if(G_bAp)
		{
			strBackup = strRoot + _T("\\") + REGSTR_KEY_STA_BACKUP; 
			strDefault = strRoot + _T("\\") + REGSTR_KEY_AP_BACKUP; 
		}
		else
		{
			strBackup = strRoot + _T("\\") + REGSTR_KEY_AP_BACKUP; 
			strDefault = strRoot + _T("\\") + REGSTR_KEY_STA_BACKUP; 
		}

		dwStatus = OpenAllAccess(HKEY_LOCAL_MACHINE, strDefault.GetBuffer(200), &hDefault);
		if(dwStatus == FALSE)
		{
			strDefault.Empty();
			if(G_bAp)
				strDefault = strRoot + _T("\\") + REGSTR_KEY_AP_DEFAULT; 
			else
				strDefault = strRoot + _T("\\") + REGSTR_KEY_DEFAULT; 
			dwStatus = OpenAllAccess(HKEY_LOCAL_MACHINE, strDefault.GetBuffer(200), &hDefault);
			if(dwStatus == FALSE)
			{
				RegCloseKey(hKeyRoot);
				sprintf(buf, _T("OpenAllAccess '%hs' failed\n"), strDefault);
				TRACE(buf);
				continue;
			}
		}

		dwStatus = OpenAllAccess(HKEY_LOCAL_MACHINE, strBackup.GetBuffer(200), &hBackup, TRUE);
		if(dwStatus == FALSE)
		{
			RegCloseKey(hKeyRoot);
			RegCloseKey(hDefault);
			sprintf(buf, _T("OpenAllAccess '%hs' failed\n"), strBackup);
			TRACE(buf);
			continue;
		}

		CopyValues(hKeyRoot, hBackup);
		CopyValues(hDefault, hKeyRoot);

		RegCloseKey(hDefault);
		RegCloseKey(hKeyRoot);
	}

	if(devs != INVALID_HANDLE_VALUE) 
		SetupDiDestroyDeviceInfoList(devs);    
	return TRUE;
}

void SetOPMode(bool G_bAp)
{
	HKEY	hOpenedKey;

	if(RegCreateKeyEx(	HKEY_LOCAL_MACHINE,
						"SOFTWARE\\RaLink",
						0, "",
						REG_OPTION_NON_VOLATILE,
						KEY_ALL_ACCESS,
						NULL,
						&hOpenedKey,
						NULL) == ERROR_SUCCESS)
	{				
		char szOpMode[4];
		if(G_bAp)
			lstrcpy(szOpMode, "1");
		else
			lstrcpy(szOpMode, "0");

		//Trace("[FlashInstall] Let RaLaunch run as admin on Vista");
				
		RegSetValueEx(	hOpenedKey,					// subkey handle 
						"OpMode",				// value name 
						0,							// must be zero 
						REG_SZ,						// value type 
						(LPBYTE)szOpMode,       // pointer to value data 
						lstrlen(szOpMode));  // length of value data 
		
		RegCloseKey(hOpenedKey);
		//Trace("[FlashInstall] Write AppCompatFlags registry %s: %s", szLaunchFile, szRunAsAdmin);
	}
}

void CloseUtility()
{
	int PID ;
	PID = GetProcessID("RaUI.exe");		

	if(PID != FALSE) 
		KillProcess(PID); 

	PID = GetProcessID("ApUI.exe");

	if(PID != FALSE) 
		KillProcess(PID); 			
}

void RunUtility()
{
	char szCurDir[256], szUtiltiy[256], szSelectCard[256], szCmdLine[128];
	UINT nRet;
	
	GetModuleFileName(NULL, szCurDir, sizeof(szCurDir));
	CHAR * c=szCurDir + strlen(szCurDir) -1;
	while(*c!='\\') c--; *(c+1)=0;
	//strcpy(szSelectCard, szCurDir);
	
	if(G_osVersion > Win2000)
	{
		
		if(G_bAp == FALSE)
		{
			sprintf(szSelectCard, "\"%s\\SelectCard.exe\" ICS_DOWN", szCurDir);
			//WinExec("\"SelectCard.exe\" ICS_DOWN", SW_HIDE);
		}
		else
		{
			sprintf(szSelectCard, "\"%s\\SelectCard.exe\" %s", szCurDir, gVarDevID);
			//WinExec("SelectCard.exe", SW_SHOW);
		}
		//Trace("[RC][RaSwap] Launch %s", szSelectCard);
		//WinExec(szSelectCard, SW_SHOW);		
		
		PROCESS_INFORMATION proc;
		STARTUPINFO start;
		ZeroMemory(&start, sizeof(start));
		start.cb = sizeof(start);
		ZeroMemory(&proc, sizeof(proc));
		if(CreateProcess(NULL, szSelectCard, NULL, NULL, false, 0, NULL, NULL, &start, &proc))
		{
			// Wait for the shelled application to finish:
			int ret = WaitForSingleObject(proc.hProcess, INFINITE);
			DWORD dwExit;
			GetExitCodeProcess(proc.hProcess, &dwExit);
			CloseHandle(proc.hThread);
			CloseHandle(proc.hProcess);			
		}
	}

	if(G_bAp == FALSE)
	{
		sprintf(szUtiltiy, "\"%s\\RaUI.exe\"", szCurDir);
		//strcat(szUtiltiy, "RaUI.exe");
	}
	else 
	{
		sprintf(szUtiltiy, "\"%s\\APUI.exe\"", szCurDir);
		//strcat(szUtiltiy, "APUI.exe");
	}
	//Trace("[RC][RaSwap] Launch %s", szUtiltiy);
	nRet = WinExec(szUtiltiy, SW_SHOW);
	SetOPMode(G_bAp);

	if(nRet <= 31)
		AfxMessageBox("Config Utility cannot be found");
}

//CSIDL_COMMON_STARTUP 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -