LRESULT CHardwarePage::OnInitDialog(HWND hwndFocus, LPARAM lParam) { ATLASSERT(NULL != m_pDevice); if (NULL == m_pDevice) { return 0; } m_propList.SubclassWindow(GetDlgItem(IDC_PROPLIST)); m_propList.SetExtendedListStyle(PLS_EX_CATEGORIZED); CString strType, strValue; // // Device Hardware Information // const NDAS_DEVICE_HW_INFORMATION* pDevHWInfo = m_pDevice->GetHwInfo(); strValue.LoadString(IDS_DEVPROP_CATEGORY_HARDWARE); m_propList.AddItem(PropCreateCategory(strValue)); if (NULL == pDevHWInfo) { m_propList.AddItem(PropCreateSimple(_T("Not available."), _T(""))); return 0; } // Version strType.LoadString(IDS_DEVPROP_HW_VERSION); pHWVersionString(strValue, pDevHWInfo->dwHwVersion); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max Request Blocks strType.LoadString(IDS_DEVPROP_HW_MAX_REQUEST_BLOCKS); strValue.Format(_T("%d"), pDevHWInfo->nMaxRequestBlocks); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Slots strType.LoadString(IDS_DEVPROP_HW_SLOT_COUNT); strValue.Format(_T("%d"), pDevHWInfo->nSlots); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Targets strType.LoadString(IDS_DEVPROP_HW_TARGET_COUNT); strValue.Format(_T("%d"), pDevHWInfo->nTargets); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max Targets strType.LoadString(IDS_DEVPROP_HW_MAX_TARGET_COUNT); strValue.Format(_T("%d"), pDevHWInfo->nMaxTargets); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max LUs strType.LoadString(IDS_DEVPROP_HW_MAX_LU_COUNT); strValue.Format(_T("%d"), pDevHWInfo->nMaxLUs); m_propList.AddItem(PropCreateSimple(strType, strValue)); // // Unit Device Hardware Information // for (DWORD i = 0; i < m_pDevice->GetUnitDeviceCount(); ++i) { ndas::UnitDevice* pUnitDevice = m_pDevice->GetUnitDevice(i); const NDAS_UNITDEVICE_HW_INFORMATION* pHWI = pUnitDevice->GetHWInfo(); strValue.FormatMessage(IDS_DEVPROP_UNITDEV_TITLE_FMT, i + 1); m_propList.AddItem(PropCreateCategory(strValue)); if (NULL == pHWI) { m_propList.AddItem(PropCreateSimple(_T("Not available"), _T(""))); continue; } // Media Type strType.LoadString(IDS_DEVPROP_UNITDEV_DEVICE_TYPE); pUnitDeviceMediaTypeString(strValue, pHWI->MediaType); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Transfer Mode strType.LoadString(IDS_DEVPROP_UNITDEV_TRANSFER_MODE); strValue = _T(""); if (pHWI->bPIO) strValue += _T("PIO, "); if (pHWI->bDMA) strValue += _T("DMA, "); if (pHWI->bUDMA) strValue += _T("UDMA, "); if (strValue.GetLength() > 2) { // Trimming ", " strValue = strValue.Left(strValue.GetLength() - 2); } m_propList.AddItem(PropCreateSimple(strType, strValue)); // LBA support? strType.LoadString(IDS_DEVPROP_UNITDEV_LBA_MODE); strValue = _T(""); if (pHWI->bLBA) strValue += _T("LBA, "); if (pHWI->bLBA48) strValue += _T("LBA48, "); if (strValue.GetLength() > 2) { // Trimming ", " strValue = strValue.Left(strValue.GetLength() - 2); } m_propList.AddItem(PropCreateSimple(strType, strValue)); // Model strType.LoadString(IDS_DEVPROP_UNITDEV_MODEL); strValue = pHWI->szModel; strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); // FWRev strType.LoadString(IDS_DEVPROP_UNITDEV_FWREV); strValue = pHWI->szFwRev; strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Serial No strType.LoadString(IDS_DEVPROP_UNITDEV_SERIALNO); strValue = pHWI->szSerialNo; strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); pUnitDevice->Release(); } return 0; }
LRESULT CDeviceHardwarePage::OnInitDialog(HWND hwndFocus, LPARAM lParam) { ATLASSERT(NULL != m_pDevice.get()); if (NULL == m_pDevice.get()) { return 0; } m_propList.SubclassWindow(GetDlgItem(IDC_PROPLIST)); m_propList.SetExtendedListStyle(PLS_EX_CATEGORIZED); // // Device Hardware Information // boost::shared_ptr<const NDAS_DEVICE_HARDWARE_INFO> pDevHWInfo = m_pDevice->GetHardwareInfo(); CString strValue = (LPCTSTR) IDS_DEVPROP_CATEGORY_HARDWARE; m_propList.AddItem(PropCreateCategory(strValue)); if (0 == pDevHWInfo.get()) { CString str = MAKEINTRESOURCE(IDS_DEVICE_HARDWARE_INFO_NA); m_propList.AddItem(PropCreateSimple(str, _T(""))); return 0; } CString strType; // Version strType.LoadString(IDS_DEVPROP_HW_VERSION); pHWVersionString(strValue, pDevHWInfo->HardwareVersion); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max Request Blocks strType.LoadString(IDS_DEVPROP_HW_MAX_REQUEST_BLOCKS); strValue.Format(_T("%d"), pDevHWInfo->MaximumTransferBlocks); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Slots strType.LoadString(IDS_DEVPROP_HW_SLOT_COUNT); strValue.Format(_T("%d"), pDevHWInfo->NumberOfCommandProcessingSlots); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Targets //strType.LoadString(IDS_DEVPROP_HW_TARGET_COUNT); //strValue.Format(_T("%d"), pDevHWInfo->NumberOfTargets); //m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max Targets strType.LoadString(IDS_DEVPROP_HW_MAX_TARGET_COUNT); strValue.Format(_T("%d"), pDevHWInfo->MaximumNumberOfTargets); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Max LUs strType.LoadString(IDS_DEVPROP_HW_MAX_LU_COUNT); strValue.Format(_T("%d"), pDevHWInfo->MaximumNumberOfLUs); m_propList.AddItem(PropCreateSimple(strType, strValue)); boost::shared_ptr<const NDAS_DEVICE_HARDWARE_INFO> phwi = m_pDevice->GetHardwareInfo(); if (NULL != phwi.get() && !IsNullNdasDeviceId(phwi->NdasDeviceId)) { strType.LoadString(IDS_DEVPRO_HW_MAC_ADDRESS); strValue.Format(_T("%02X:%02X:%02X:%02X:%02X:%02X"), phwi->NdasDeviceId.Node[0], phwi->NdasDeviceId.Node[1], phwi->NdasDeviceId.Node[2], phwi->NdasDeviceId.Node[3], phwi->NdasDeviceId.Node[4], phwi->NdasDeviceId.Node[5]); m_propList.AddItem(PropCreateSimple(strType, strValue)); } // // Unit Device Hardware Information // const ndas::UnitDeviceVector& unitDevices = m_pDevice->GetUnitDevices(); for (DWORD i = 0; i < unitDevices.size(); ++i) { ndas::UnitDevicePtr pUnitDevice = unitDevices.at(i); const NDAS_UNITDEVICE_HARDWARE_INFO* pHWI = pUnitDevice->GetHWInfo(); strValue.FormatMessage(IDS_DEVPROP_UNITDEV_TITLE_FMT, i + 1); m_propList.AddItem(PropCreateCategory(strValue)); if (NULL == pHWI) { // "Not available" CString str = MAKEINTRESOURCE(IDS_UNITDEVICE_HARDWARE_INFO_NA); m_propList.AddItem(PropCreateSimple(str, _T(""))); continue; } // Media Type strType.LoadString(IDS_DEVPROP_UNITDEV_DEVICE_TYPE); pUnitDeviceMediaTypeString(strValue, pHWI->MediaType); m_propList.AddItem(PropCreateSimple(strType, strValue)); CString modeDelimiter(MAKEINTRESOURCE(IDS_MODE_DELIMITER)); // Transfer Mode strType.LoadString(IDS_DEVPROP_UNITDEV_TRANSFER_MODE); strValue = _T(""); { const struct { const BOOL& Mode; UINT ResID; } TransferModeStrings[] = { pHWI->PIO, IDS_TRANSFER_MODE_PIO, pHWI->DMA, IDS_TRANSFER_MODE_DMA, pHWI->UDMA, IDS_TRANSFER_MODE_UDMA }; bool multipleModes = false; for (int i = 0; i < RTL_NUMBER_OF(TransferModeStrings); ++i) { if (multipleModes) strValue += modeDelimiter; if (TransferModeStrings[i].Mode) { strValue += CString(MAKEINTRESOURCE(TransferModeStrings[i].ResID)); multipleModes = true; } } m_propList.AddItem(PropCreateSimple(strType, strValue)); } // LBA support? strType.LoadString(IDS_DEVPROP_UNITDEV_LBA_MODE); strValue = _T(""); { const struct { const BOOL& Mode; UINT ResID; } LbaModeStrings[] = { pHWI->LBA, IDS_LBA_MODE_LBA, pHWI->LBA48, IDS_LBA_MODE_LBA48 }; bool multipleModes = false; for (int i = 0; i < RTL_NUMBER_OF(LbaModeStrings); ++i) { if (multipleModes) strValue += modeDelimiter; if (LbaModeStrings[i].Mode) { strValue += CString(MAKEINTRESOURCE(LbaModeStrings[i].ResID)); multipleModes = true; } } m_propList.AddItem(PropCreateSimple(strType, strValue)); } // Model strType.LoadString(IDS_DEVPROP_UNITDEV_MODEL); strValue = pHWI->Model; strValue.TrimLeft(); strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); // FWRev strType.LoadString(IDS_DEVPROP_UNITDEV_FWREV); strValue = pHWI->FirmwareRevision; strValue.TrimLeft(); strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); // Serial No strType.LoadString(IDS_DEVPROP_UNITDEV_SERIALNO); strValue = pHWI->SerialNumber; strValue.TrimLeft(); strValue.TrimRight(); m_propList.AddItem(PropCreateSimple(strType, strValue)); } return 0; }