HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
// 指定设备类型GUID,得到该类型所有设备的设备列表,这里是查找所有设备
hDevInfo = ::SetupDiGetClassDevs(NULL, NULL, NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
PStressMgr->WriteLog(_T("设备打开失败"));
continue;
}
// 循环列举
//int nRet = EN_USB_INTERFACE_FAILED;
BOOL bFound = FALSE;
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (i = 0; ::SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++)
{
char szClassBuf[MAX_PATH] = { 0 };
TCHAR szDIS[MAX_PATH] = { 0 };
DWORD nSize = 0;
//获取设备描述信息
SetupDiGetDeviceInstanceId(hDevInfo, &DeviceInfoData, szDIS, MAX_PATH, &nSize);
CString strDIS(szDIS);
if (-1 != strDIS.Find(_T("VID_2BC5&PID_0560")))
{
char szDescBuf[MAX_PATH] = { 0 };
if (SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, NULL, (PBYTE)szDescBuf, MAX_PATH - 1, NULL))
{
CString strName;
strName.Format(_T("%s"), szDescBuf);
PStressMgr->WriteLog(strName, LOG_INFO);
CString strDeviceName = _T("MB2304");
if (-1 != strName.Find(strDeviceName)) //如果不是电流的串口,就是调试串口
{
bFound = TRUE;
m_bDeviceIsInitNoSdk = TRUE;
StateChange(0, TRUE);
break;
}
else
{
bFound = FALSE;
continue;;
}
}
}
}
if (!bFound)
{
m_bDeviceIsInitNoSdk = FALSE;
StateChange(0, FALSE);
}
// 释放
SetupDiDestroyDeviceInfoList(hDevInfo);