MFC USB通信枚举HID设备出现一大堆VID和PID一样的设备
最近在做一个usb通信的工程,搜了一下资料,大概是HID类设备的写法。
枚举USB设备的函数如下
m_combobox是一个combobox按钮绑定的变量。
这段代码能枚举出来设备,只不过结果我有点不太理解。

里面的vid和pid全都一样,第一个是我的键盘,下面那些都是设备管理器里的人体输入学设备和通用串行总线控制器里的东西。
我想要的就是那个键盘,代码哪里有问题?
枚举USB设备的函数如下
m_combobox.ResetContent();
SP_DEVINFO_DATA DeviceInfoData;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;
//get device id
GUID deviceId;
HidD_GetHidGuid(&deviceId);
//get device info
HDEVINFO handle;
handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);
bool result1 = false;
bool result2 = false;
DWORD strSize = 0;
DWORD requiredSize = 0;
CString temp;
int countNum = 0;
DWORD dwError;
do
{
DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
result1 = SetupDiEnumDeviceInterfaces(handle, NULL, &deviceId, countNum, &DeviceInterfaceData);
if (result1 == FALSE)
{
dwError = GetLastError();
break;
}
SetupDiGetDeviceInterfaceDetail(handle, &DeviceInterfaceData, NULL, 0, &strSize, NULL);
requiredSize = strSize;
DeviceInterfaceDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)malloc(requiredSize);
DeviceInterfaceDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
result2 = SetupDiGetDeviceInterfaceDetail(handle, &DeviceInterfaceData, DeviceInterfaceDetailData,
strSize, &requiredSize, &DeviceInfoData);
temp = DeviceInterfaceDetailData->DevicePath;
UpdateData(FALSE);
m_combobox.AddString(temp);
countNum++;
free(DeviceInterfaceDetailData);
} while (result1);
m_combobox是一个combobox按钮绑定的变量。
这段代码能枚举出来设备,只不过结果我有点不太理解。

里面的vid和pid全都一样,第一个是我的键盘,下面那些都是设备管理器里的人体输入学设备和通用串行总线控制器里的东西。
我想要的就是那个键盘,代码哪里有问题?
...全文
相关推荐
MFC监控USB接口插拔情况并获取VID与PID
在给定的项目“MFC监控USB接口插拔情况并获取VID与PID”中,开发者利用MFC框架创建了一个程序,能够实时监控USB设备的插入和移除,并且能够读取USB设备的Vendor ID (VID)和Product
MFC USB设备插拔检测:基于WM_DEVICECHANGE的实现
在Windows系统开发中,实时感知USB设备插拔是上位机与产测工具常见需求。即插即用管理器通过WM_DEVICECHANGE消息将设备变化主动推送给注册窗口,相比轮询方式,该机制具有毫秒级实时性与极低资源开销。利用RegisterDeviceNotification注册设备接口GUID,可捕获HID设备及U盘等存储设备的到达与移除事件,再配合SetupAPI解析设备路径、VID/PID等关键信息,即可实现精准的设备状态监控。这一方案广泛应用于MFC对话框程序,支持扫码枪、U盘自动处理等场景,是构建设备监控
USB HID DLL
该项目是一个基于MFC框架的USB HID设备通信演示程序,通过动态加载HID驱动DLL实现设备的枚举、打开、数据收发和回调处理。核心功能封装在FHHID模块中,支持VID/PID匹配的设备识别与交互
MFC下HID设备读写
设备,并根据设备的Vendor ID (VID) 和 Product ID (PID) 来找到目标设备。
MFC按USB插口顺序显示所有USB设备(包括安卓)
该项目基于MFC框架开发,利用Windows API和SetupDi系列函数枚举系统中所有USB设备,获取设备实例ID、硬件ID、VID/PID等信息,并按插口顺序展示。核心功能封装在Usb_List


