bool ValidVendor(CString VendorID) { if(GetVendor(VendorID) == "") return false; return true; }
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; };
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); }