MFC如何获取USB的VID、PID和协议版本呢?
各位大佬,请问Win API有哪个接口可以获取指定的USB协议版本和VID、PID,在网上查看,很多都是把所有的USB的VID和PID找出来,这样不是会把键盘和鼠标的也找出来吗?我自己试过,它就连鼠标和键盘的都找出来了,要怎么做,才能找出只有自己插入的USB的VID和PID呢?代码如下:
//#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
#include <setupapi.h>
#include <initguid.h>
using namespace std;
#pragma comment(lib,"setupapi.lib")
DEFINE_GUID(UsbClassGuid, 0xa5dcbf10L, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed);
//获取USB设备VID和PID
string GetUsbInfo()
{
HDEVINFO hDevInfo;
SP_DEVICE_INTERFACE_DATA spDevData;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail;
BOOL bRes = TRUE;
int nCount = 0;
string csResult;
hDevInfo = ::SetupDiGetClassDevs((LPGUID)&UsbClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
if (hDevInfo != INVALID_HANDLE_VALUE)
{
pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, 1024);
pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
while (bRes)
{
spDevData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
bRes = ::SetupDiEnumDeviceInterfaces(hDevInfo, NULL, (LPGUID)&UsbClassGuid, nCount, &spDevData);
if (bRes)
{
bRes = ::SetupDiGetInterfaceDeviceDetail(hDevInfo, &spDevData, pDetail, 1024, NULL, NULL);
if (bRes)
{
string szStr = pDetail->DevicePath;
csResult += szStr + "\n";
//break;
nCount++;
}
}
}
::GlobalFree(pDetail);
::SetupDiDestroyDeviceInfoList(hDevInfo);
}
return csResult;
}
int main(void)
{
string csStr = GetUsbInfo();
cout << csStr << endl;
cout << "End...";
return 0;
}
恳请懂的大佬指点一下,不胜感激!!
//#include "stdafx.h"
#include <iostream>
#include <windows.h>
#include <string>
#include <setupapi.h>
#include <initguid.h>
using namespace std;
#pragma comment(lib,"setupapi.lib")
DEFINE_GUID(UsbClassGuid, 0xa5dcbf10L, 0x6530, 0x11d2, 0x90, 0x1f, 0x00, 0xc0, 0x4f, 0xb9, 0x51, 0xed);
//获取USB设备VID和PID
string GetUsbInfo()
{
HDEVINFO hDevInfo;
SP_DEVICE_INTERFACE_DATA spDevData;
PSP_DEVICE_INTERFACE_DETAIL_DATA pDetail;
BOOL bRes = TRUE;
int nCount = 0;
string csResult;
hDevInfo = ::SetupDiGetClassDevs((LPGUID)&UsbClassGuid, NULL, NULL, DIGCF_PRESENT | DIGCF_INTERFACEDEVICE);
if (hDevInfo != INVALID_HANDLE_VALUE)
{
pDetail = (PSP_DEVICE_INTERFACE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, 1024);
pDetail->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);
while (bRes)
{
spDevData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
bRes = ::SetupDiEnumDeviceInterfaces(hDevInfo, NULL, (LPGUID)&UsbClassGuid, nCount, &spDevData);
if (bRes)
{
bRes = ::SetupDiGetInterfaceDeviceDetail(hDevInfo, &spDevData, pDetail, 1024, NULL, NULL);
if (bRes)
{
string szStr = pDetail->DevicePath;
csResult += szStr + "\n";
//break;
nCount++;
}
}
}
::GlobalFree(pDetail);
::SetupDiDestroyDeviceInfoList(hDevInfo);
}
return csResult;
}
int main(void)
{
string csStr = GetUsbInfo();
cout << csStr << endl;
cout << "End...";
return 0;
}
恳请懂的大佬指点一下,不胜感激!!
...全文
相关推荐
MFC监控USB接口插拔情况并获取VID与PID
在给定的项目“MFC监控USB接口插拔情况并获取VID与PID”中,开发者利用MFC框架创建了一个程序,能够实时监控USB设备的插入和移除,并且能够读取USB设备的Vendor ID (VID)和Product
Windows平台通过PID/VID精准识别并安全卸载USB设备的MFC源码工程
一套开箱即用的Windows USB设备安全卸载工具源码,基于C++和MFC框架开发,支持按厂商ID(VID)和产品ID(PID)精确匹配目标USB设备,执行标准的安全移除流程,防止强制拔插引发的数据异常或硬件故障。项目包含完整VC6工程文件(.dsp/.dsw)、可视化对话框界面、资源文件、说明文档及配套Python辅助脚本(usb_eject.py),可直接编译运行或嵌入自有运维系统。底层调用SetupAPI和CfgMgr32等Windows原生API完成设备枚举、接口查询、驱动卸载与弹出通知,兼容Wi
MFC的USB通讯例程 BULK传输
该项目基于MFC框架开发,实现了与USB设备的BULK传输通信功能。程序通过对话框界面配置VID/PID,支持十六进制数据发送与接收,并设有超时控制和调试信息显示。采用多线程处理异步数据接收,确保UI
我的USB调试助手(MFC)
**学习与研究**:对于学习USB协议和设备管理的初学者,该工具提供了一个直观的界面,可以深入理解PID、VID等概念及其作用。
USB识别,ID实例路径获取
在项目中,通过查询设备的VID和PID,可以准确识别出特定的USB设备。3.


硬件/系统
