获取串口设备,然后获取其VID PID是否是我们想要的
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
DWORD i;
// 指定设备类型GUID,得到该类型所有设备的设备列表,这里是查找所有串口设备
GUID comUID = { 0x4d36E978, 0xE325, 0x11CE, { 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18 } };
hDevInfo = ::SetupDiGetClassDevs(&comUID, 0, 0, DIGCF_PRESENT);
if (hDevInfo == INVALID_HANDLE_VALUE)
{
PStressMgr->WriteLog(_T("设备打开失败"));
return EN_PCBA_TEST_OK;;
}
// 循环列举
int nRet = EN_USB_INTERFACE_FAILED;
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_10C4&PID_EA60")))
{
nRet = EN_PCBA_TEST_OK;
break;
}
}
// 释放
SetupDiDestroyDeviceInfoList(hDevInfo);