コード例 #1
0
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;
}
コード例 #2
0
ファイル: devpropsh.cpp プロジェクト: tigtigtig/ndas4windows
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;
}