Esempio n. 1
0
void CHardwareListing::vSortHardwareItems()
{
	if(mHardwareListMap.size() > 0 ){
		mHardwareListMap.clear();
	}

	int nItemCount = m_omHardwareList.GetItemCount();
	for(int nIndex = 0; nIndex < nItemCount; nIndex++){
		m_pouHardwareContainer = new HARDWARE_CONTAINER();
		m_pouHardwareContainer->m_omHardwareName  = m_omHardwareList.GetItemText(nIndex,0);

		// Get the array index
		m_pouHardwareContainer->m_omDriverId  = m_omHardwareList.GetItemData( nIndex );
		mHardwareListMap.insert ( Int_Pair ( m_pouHardwareContainer->m_omDriverId , m_pouHardwareContainer ) );
	}

	m_omHardwareList.DeleteAllItems();
	int iCount = 0;
	for(int nIndex = 0; nIndex < m_nSize; nIndex++){
		m_pIter = mHardwareListMap.find(nIndex);

		if(m_pIter != mHardwareListMap.end() ){
			PHARDWARE_CONTAINER pTempHardware = m_pIter->second;
			m_omHardwareList.InsertItem( iCount, pTempHardware->m_omHardwareName, 0);
			// Set the hardware list index as item data
			m_omHardwareList.SetItemData( iCount++, pTempHardware->m_omDriverId );
		}
	}

	for (m_pIter = mHardwareListMap.begin(); m_pIter != mHardwareListMap.end(); ++m_pIter){
		delete(m_pIter->second);
		m_pIter->second = NULL;
	}
	mHardwareListMap.clear();
}
Esempio n. 2
0
DWORD Q4_ParseServers(char * p, DWORD length,  GAME_INFO *pGI,long (*InsertServerListView)(GAME_INFO *pGI,SERVER_INFO pSI))
{
	DWORD dwNewServers = 0;
	Q4DATA *q4d;
	SERVER_INFO tempSI;
	DWORD *dwIP=NULL;
	DWORD idx = pGI->vSI.size();

	if (p==NULL)
		return 0;

	q4d = (Q4DATA*)p;
	char *end = p+length;

	p = q4d->data;

	ZeroMemory(&tempSI,sizeof(SERVER_INFO));		
	tempSI.pPlayerData = NULL;
	tempSI.pServerRules = NULL;
	strcpy(tempSI.szShortCountryName,"zz");
	tempSI.cGAMEINDEX =  pGI->cGAMEINDEX;
	tempSI.bUpdated = 0;
	tempSI.dwPing = 9999;

	int hash = 0;
	while(p<end) 
	{	
		dwIP = (DWORD*)&p[0];
		tempSI.dwIP = ntohl((DWORD)*dwIP); 
		tempSI.usPort  = ((p[5])<<8);
		tempSI.usPort |=(unsigned char)(p[4]);
		tempSI.usQueryPort = tempSI.usPort;
		hash = tempSI.dwIP + tempSI.usPort;
		
		if(UTILZ_checkforduplicates(pGI,  hash,tempSI.dwIP, tempSI.usPort)==FALSE)	
		{		
			sprintf_s(tempSI.szIPaddress,sizeof(tempSI.szIPaddress),"%d.%d.%d.%d",(unsigned char)p[0],(unsigned char)p[1],(unsigned char)p[2],(unsigned char)p[3]);
			tempSI.dwIndex = idx++;
			SERVER_INFO *pNewSrv = (SERVER_INFO*)calloc(1,sizeof(SERVER_INFO));
			memcpy(pNewSrv,&tempSI,sizeof(SERVER_INFO));
			InitializeCriticalSection(&pNewSrv->csLock);
			pGI->shash.insert(Int_Pair(hash,tempSI.dwIndex));
			pGI->vSI.push_back(pNewSrv);
			dwNewServers++;
		} //end serverexsist
		p+=6;			
	} //end while

	return dwNewServers;
}
Esempio n. 3
0
DWORD Q3_ParseServers(char * p, DWORD length, GAME_INFO *pGI)
{
	DWORD dwNewTotalServers = 0;
	Q3DATA *Q3d;
	Q3d = (Q3DATA*)p;

	SERVER_INFO ptempSI;
	DWORD idx = pGI->vSI.size();	
	DWORD *dwIP=NULL;
	if (p==NULL)
		return 0;

	char *end;
	end = p+length-10;
/*
Quake 2 master server response
0x011F0BBB  01 00 00 00 00 00 00 00 00 00 00 00 00 40 27 00 00 01 00 00 00 39 e7 00 00 fd fd fd fd ff ff ff ff 73 65 72 76 65 72 73 20  .............@'......9ç..ýýýýÿÿÿÿservers 
0x011F0BE4  45 09 a8 04 6d 19 d0 2b 0f c7 6d 06 26 67 08 62 6d 0c 26 67 08 62 6d 0b c1 6e 7a d7 6d 06 48 e8 e4 ba 6d 1c d9 aa 42 53 6d  E.¨.m.Ð+.Çm.&g.bm.&g.bm.Ánz×m.Hèäºm.ÙªBSm
            1  2   3  4  5 6  1  2                                                                                                      23456123456123456

0x01ECB9B8  ff ff ff ff 73 65 72 76 65 72 73 20 45 09 a8 04 6d 19 d0 2b 0f c7 6d 06 26 67 08 62 6d 0c 26 67 08 62 6d 0b c1 6e 7a d7 6d  ÿÿÿÿservers E.¨.m.Ð+.Çm.&g.bm.&g.bm.Ánz×m
0x01ECB9E1  06 48 e8 e4 ba 6d 1c d9 aa 42 53 6d 06 d9 aa 42 53 6d 10 c3 7a d9 13 6d 24 cb ce 5f 01 6d 01 cb ce 5f 01 6d 0c cb ce 5f 01  .Hèäºm.ÙªBSm.ÙªBSm.ÃzÙ.m$ËÎ_.m.ËÎ_.m.ËÎ_.


Quake 3
0x01EF1F80  ff ff ff ff 67 65 74 73 65 72 76 65 72 73 52 65 73 70 6f 6e 73 65 5c d8 b4 ed 0a a1 9b 5c d9 4f b6 f7 82 19 5c d8 b4 ed 0e  ÿÿÿÿgetserversResponse\Ø´í.¡.\ÙO¶÷..\Ø´í.
0x01EF1FA9  d7 90 5c d8 b4 ed 0e 6d 42 5c 4e 3b 70 80 6d 38 5c d8 b4 ed 0d f4 b4 5c d8 b4 ed 0e 6d 38 5c 57 f9 b7 f2 f4 f3 5c 59 95 c2  ×.\Ø´í.mB\N;p€m8\Ø´í.ô´\Ø´í.m8\Wù·òôó\Y.Â

CoD 2                                                                                                     \
0x01249028  ff ff ff ff 67 65 74 73 65 72 76 65 72 73 52 65 73 70 6f 6e 73 65 0a 00 5c 4e 8f 19 5d d9 03 5c d5 ef d0 16 71 21 5c 48 33  ÿÿÿÿgetserversResponse..\N..]Ù.\ÕïÐ.q!\H3
0x01249051  3c 15 71 20 5c 43 e4 0b 45 71 20 5c 51 13 db d1 71 34 5c 54 c8 fc e9 69 91 5c 51 00 d9 b1 6a 3e 5c d8 06 e1 69 71 20 5c 51  <.q \Cä.Eq \Q.ÛÑq4\TÈüéi‘\Q.Ù±j>\Ø.áiq \Q

CoD 4                                                                                                    \
0x01249028  ff ff ff ff 67 65 74 73 65 72 76 65 72 73 52 65 73 70 6f 6e 73 65 0a 00 5c 41 63 f6 4f 71 20 5c 5b 79 88 c3 71 25 5c c1 11  ÿÿÿÿgetserversResponse..\AcöOq \[yˆÃq%\Á.
0x01249051  db 28 71 20 5c 55 be 0b 13 71 20 5c 52 62 e1 b6 71 20 5c 57 76 44 9a 71 20 5c d1 61 55 71 71 20 5c 43 a7 ad f2 d7 20 5c d8  Û(q \U...q \Rbá¶q \WvDšq \ÑaUqq \C§­ò× \Ø


*/
	int pbytes=0;
	//Scan to start
	while((p[0]!=0x5c) && (p[0]!=0x20))
	{
		pbytes++;
		p++;
		if(p>end)
			break;
	}
	end = p+(length-pbytes);
	p++;
	
	ZeroMemory(&ptempSI,sizeof(SERVER_INFO));
	ptempSI.dwPing = 9999;
	ptempSI.cGAMEINDEX = (char) pGI->cGAMEINDEX;
	strcpy(ptempSI.szShortCountryName,"zz");
	ptempSI.bUpdated = 0;	

	int hash = 0;
	while(p<end) 
	{	
		if((p[0]=='E') && (p[1]=='O') && (p[2]=='T') && (p[3]==0x00))
			break;
		else if((p[0]=='E') && (p[1]=='O') && (p[2]=='F') && (p[3]==0x00))
			break;

		//Parse and initialize server info
		dwIP = (DWORD*)&p[0];
		ptempSI.dwIP = ntohl((DWORD)*dwIP); 
	
		p+=4;
		ptempSI.usPort  = ((p[0])<<8);
		ptempSI.usPort |=(unsigned char)(p[1]);
		//ptempSI.usPort &= 0x0000FFFF;	//safe, ensure max port value
		
		if(pGI->cGAMEINDEX == Q2_SERVERLIST)
			p+=2; //q2
		else
			p+=3; //q3
		
		ptempSI.usQueryPort = ptempSI.usPort;
		hash = ptempSI.dwIP + ptempSI.usPort;

		if(UTILZ_checkforduplicates(pGI,  hash,ptempSI.dwIP, ptempSI.usPort)==FALSE)
		{	
			strcpy_s(ptempSI.szIPaddress,sizeof(ptempSI.szIPaddress),DWORD_IP_to_szIP(ptempSI.dwIP));
			ptempSI.dwIndex = idx++;

			SERVER_INFO *pNewSrv = (SERVER_INFO*)calloc(1,sizeof(SERVER_INFO));
			memcpy(pNewSrv,&ptempSI,sizeof(SERVER_INFO));
		
			InitializeCriticalSection(&pNewSrv->csLock);

			pGI->shash.insert(Int_Pair(hash,ptempSI.dwIndex) );
			pGI->vSI.push_back(pNewSrv);
			dwNewTotalServers++;
		}
		//end serverexsist

	} //end while
	return dwNewTotalServers;
}