获取当前系统所有使用的设备

void CollectUSBInfo()
{
USES_CONVERSION;// 获取当前系统所有使用的设备
char *pstr;
idindex=0;
// pstr=T2A(str);
DWORD dwFlag = (DIGCF_ALLCLASSES | DIGCF_PRESENT);
HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, NULL, NULL, dwFlag);
if( INVALID_HANDLE_VALUE == hDevInfo )
{
AfxMessageBox( _T("获取系统设备列表失败") );
return;
}

// 准备遍历所有设备查找USB
SP_DEVINFO_DATA sDevInfoData;
sDevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);

CString strText;
TCHAR szDIS[MAX_PATH]; // Device Identification Strings, 
DWORD nSize = 0 ;
for(int i = 0; SetupDiEnumDeviceInfo(hDevInfo,i,&sDevInfoData); i++ )
{
nSize = 0;
if ( !SetupDiGetDeviceInstanceId(hDevInfo, &sDevInfoData, szDIS, sizeof(szDIS), &nSize) )
{
AfxMessageBox( _T("获取设备识别字符串失败") );
break;
}

// 设备识别串的前三个字符是否是"USB", 模板: USB\VID_XXXX&PID_XXXX\00000xxxxxxx
CString strDIS( szDIS );
strDIS.MakeUpper();
if( strDIS.Left( 4 ) == _T("USB\\") )
{
strText += strDIS;
strText += _T("\r\n");
int iPID_Pos = strDIS.Find( _T("VID_") );
if (iPID_Pos!=-1)
{
CString strProviderID = strDIS.Mid( iPID_Pos+4, 4 );
// PID :产品号
iPID_Pos = strDIS.Find( _T("PID_") );
if (iPID_Pos!=-1)
{
CString strProductID = strDIS.Mid( iPID_Pos+4, 4 );
pstr=T2A(strProductID);
memcpy(m_pvid[idindex].pid,pstr,4);
// m_pvid[idindex].pid=pstr;
pstr=T2A(strProviderID);
memcpy(m_pvid[idindex].vid,pstr,4);
// m_pvid[idindex].vid=pstr;
idindex++;
}
}
}
}

// 释放设备
SetupDiDestroyDeviceInfoList(hDevInfo);
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值