Пример #1
0
bool ValidVendor(CString VendorID)
{
	if(GetVendor(VendorID) == "")
		return false;
	
	return true;
}
Пример #2
0
std::string Isa::GetFullName() const {
  std::stringstream full_name;
  full_name << GetVendor() << ":" << GetArchitecture() << ":"
            << GetMajorVersion() << ":" << GetMinorVersion() << ":"
            << GetStepping();
  return full_name.str();
}
BYTE CDROM_Interface_Aspi::GetHostAdapter(char* hardwareID)
{
	ASPI_SRB sh;
	ASPI_SRB sd;
	DWORD d		= pGetASPI32SupportInfo();
	int cnt		= LOBYTE(LOWORD(d));
	int i,j,k,max;

	for(i=0; i<cnt; i++) {
		memset(&sh, 0, sizeof(sh));
		sh.hainquiry.SRB_Cmd  = SC_HA_INQUIRY;
		sh.hainquiry.SRB_HaId = i;
		pSendASPI32Command((LPSRB)&sh);
		if (sh.hainquiry.SRB_Status!=SS_COMP) continue;
		
		// Indicates the maximum number of targets the adapter supports
		// If the value is not 8 or 16, then it should be assumed max target is 8
		max = (int)sh.hainquiry.HA_Unique[3];
		if ((max!=8) && (max!=16)) max = 8;
		
		for(j=0; j<max; j++) {
			for(k=0; k<8; k++) {
				memset(&sd, 0, sizeof(sd));
				sd.gdevblock.SRB_Cmd    = SC_GET_DEV_TYPE;
				sd.gdevblock.SRB_HaId   = i;
				sd.gdevblock.SRB_Target = j;
				sd.gdevblock.SRB_Lun    = k;
				pSendASPI32Command((LPSRB)&sd);
				if (sd.gdevblock.SRB_Status == SS_COMP) {
					if (sd.gdevblock.SRB_DeviceType == DTYPE_CDROM) {						
						if ((target==j) && (lun==k)) {
							LOG(LOG_MISC,LOG_NORMAL)("SCSI: Getting Hardware vendor.");								
							// "Hardware ID = vendor" match ?
							char vendor[64];
							if (GetVendor(i,target,lun,vendor)) {
								LOG(LOG_MISC,LOG_NORMAL)("SCSI: Vendor : %s",vendor);	
								if (strstr(strupr(hardwareID),strupr(vendor))) {
									LOG(LOG_MISC,LOG_NORMAL)("SCSI: Host Adapter found: %d",i);								
									return i;								
								}
							};
						}
					}
				}
			}
		}
	}
	LOG(LOG_MISC,LOG_ERROR)("SCSI: Host Adapter not found: %d",i);									
	return 0;
};
Пример #4
0
void CSearchInfo::UpdateInfo()
{	
	// Display data to dialog box
	m_stcName.SetWindowText("Name:  " + m_autSearch->GetResultName(m_SearchID, m_ResultID));
	
	uint64 size = m_pDoc->m_RunningXP ? m_autSearch->GetResultSize2(m_SearchID, m_ResultID) : m_autSearch->GetResultSize(m_SearchID, m_ResultID);
	m_stcSize.SetWindowText("Size:  " + CommaIze(DWrdtoStr( size )) + " Bytes");

	m_stcSha1Hash.SetWindowText("SHA1 Hash:  " + m_autSearch->GetResultHash(m_SearchID, m_ResultID, HASH_SHA1));
	
	m_stcSpeed.SetWindowText("Average Speed: " + CommaIze(DWrdtoStr( m_autSearch->GetResultSpeed(m_SearchID, m_ResultID))) + " KB/s");
	
	int HostCount = m_autSearch->GetResultHostCount(m_SearchID, m_ResultID);
	CString Plural = (HostCount == 1) ? " Host:" : " Hosts";
	
	m_stcHosts.SetWindowText(CommaIze(DWrdtoStr(HostCount)) + Plural);

	// Save selected
	std::vector<ResultHost*> ListSelected;

	POSITION lstPos = m_lstResults.GetFirstSelectedItemPosition();
	while(lstPos)
	{
		int nItem = m_lstResults.GetNextSelectedItem(lstPos);

		//m_lstResults.SetItem(nItem, 0, LVIF_STATE, NULL, 0, 0, LVIS_SELECTED, 0);
		if(nItem < m_lstResults.GetItemCount())
			ListSelected.push_back( (ResultHost*) m_lstResults.GetItemData(nItem));
	}

	// Get new Host ID list
	VARIANT var = m_autSearch->GetHostIDs(m_SearchID, m_ResultID);
	SAFEARRAY* psa = var.parray;

	UINT* nArray;
	SafeArrayAccessData(psa, reinterpret_cast<void**> (&nArray));

	for(int i = 0; i < psa->rgsabound->cElements; i++)
	{
		UINT HostID = nArray[i];

		std::map<UINT, ResultHost*>::iterator itHost = m_HostMap.find(HostID);


		// Add host if not in list yet
		if(itHost == m_HostMap.end())
		{
			ResultHost* pHost = new ResultHost;

			pHost->HostID = HostID;

			pHost->Host.S_addr = m_autSearch->GetHostIP(m_SearchID, m_ResultID, HostID);
			pHost->Port	    = m_autSearch->GetHostPort(m_SearchID, m_ResultID, HostID);
			pHost->Speed	= m_autSearch->GetHostSpeed(m_SearchID, m_ResultID, HostID);
			pHost->Distance = m_autSearch->GetHostDistance(m_SearchID, m_ResultID, HostID);

			pHost->Firewall	= m_autSearch->GetHostFirewall(m_SearchID, m_ResultID, HostID) != 0;
			pHost->Stable	= m_autSearch->GetHostStable(m_SearchID, m_ResultID, HostID) != 0;
			pHost->Busy		= m_autSearch->GetHostBusy(m_SearchID, m_ResultID, HostID) != 0;
			
			pHost->Vendor	= m_autSearch->GetHostVendor(m_SearchID, m_ResultID, HostID);
			pHost->Icon	    = m_pDoc->GetIconIndex(m_autSearch->GetResultName(m_SearchID, m_ResultID));

			// Get extended host info
			VARIANT var2 = m_autSearch->GetHostExtended(m_SearchID, m_ResultID, HostID);
			SAFEARRAY* psa2 = var2.parray;

			BSTR* strArray;
			SafeArrayAccessData(psa2, reinterpret_cast<void**> (&strArray));

			for(int i = 0; i < psa2->rgsabound->cElements; i++)
			{
				if(i > 0)
					pHost->strInfo += " and " + CString(strArray[i]);
				else
					pHost->strInfo = strArray[i];
			}

			SafeArrayUnaccessData(psa2);
			VariantClear(&var2);


			m_HostMap[HostID] = pHost;
			m_HostList.push_back(pHost);
		}
	}

	SafeArrayUnaccessData(psa);
	VariantClear(&var);


	SearchExOrder o(this);
	std::stable_sort(m_HostList.begin(), m_HostList.end(), o);

	int itemCount = m_lstResults.GetItemCount();

	// Insert items into list
	for(int i = 0; i < m_HostList.size(); i++)
	{
		ResultHost* p = m_HostList[i];

		CString Properties = "";

		if(p->Firewall)
			Properties += "Firewall, ";

		if(p->Busy)
			Properties += "Busy, ";
		
		if(p->Stable)
			Properties += "Stable, ";

		if(Properties.ReverseFind(',') != -1)
			Properties = Properties.Mid(0, Properties.GetLength() - 2);


		if (itemCount <= i)
			m_lstResults.InsertItem(itemCount++, IPtoStr(p->Host), p->Icon.Index);
		else
			m_lstResults.SetItem(i, 0, LVIF_TEXT | LVIF_IMAGE | LVIF_STATE, IPtoStr(p->Host), p->Icon.Index, 0, LVIS_SELECTED, NULL);
	
		m_lstResults.SetItemText(i, 1, CommaIze( DWrdtoStr( p->Speed)) + " KB/s");
		m_lstResults.SetItemText(i, 2, Properties);
		m_lstResults.SetItemText(i, 3, GetVendor(p->Vendor));
		m_lstResults.SetItemText(i, 4, DWrdtoStr(p->Distance));
		m_lstResults.SetItemText(i, 5, p->strInfo);
		
		m_lstResults.SetItemData(i, (DWORD) p);

		// Re-select previously selected item
		for (int sel = 0; sel < ListSelected.size(); sel++)
			if(ListSelected[sel] == p)
				m_lstResults.SetItem(i, 0, LVIF_STATE, NULL, 0, LVIS_SELECTED, LVIS_SELECTED, 0);
	}

	for (int j = i + 1; j < itemCount; j++)
		m_lstResults.DeleteItem(i + 1);
}