制作mfc程序怎么实现获取usb设备的pid和vid

Vladimirr 2017-06-27 02:18:39
最好说的详细一点,新人,刚接触mfc。
...全文
496 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
CMyDlg * p = (CMyDlg *)pParam; //获取主窗口的指针,用来调用主窗口的变量和函数

int ret1 = 0,ret2 = 0,ret3 = 0;

PVOID buf = malloc(100);
char * buf1 = (char *)malloc(100);

PVOID buf2 = malloc(100);
char * buf3 = (char *)malloc(100);

PVOID buf4 = malloc(100);
char * buf5 = (char *)malloc(100);

int num = 0;
int num1 = 0;
int num2 = 0;

PHIDD_ATTRIBUTES a;

int Count = 0; //Total number of devices found
DWORD strSize=0,requiredSize=0;
BOOL result1,result2;

//定义一些变量,以后会用到
SP_DEVINFO_DATA DeviceInfoData;
SP_DEVICE_INTERFACE_DATA DeviceInterfaceData;
PSP_DEVICE_INTERFACE_DETAIL_DATA DeviceInterfaceDetailData;


//第一步:获取deviceID
GUID deviceId;
HidD_GetHidGuid(&deviceId);


//第二步:获取设备信息
HDEVINFO handle;
handle = SetupDiGetClassDevs(&deviceId, NULL, NULL, (DIGCF_DEVICEINTERFACE | DIGCF_PRESENT)); //Get only HID devices


//第三步:对所有的设备进行枚举

result1=false; //定义一些变量
result2=false;
//CString temp11="";
while(1)
{

DeviceInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);
result1 = SetupDiEnumDeviceInterfaces(
handle,
NULL, // IN PSP_DEVINFO_DATA DeviceInfoData, OPTIONAL
&deviceId,
Count,
&DeviceInterfaceData
);
if(result1 == FALSE)
{
break;
}

//获得设备详细数据(初步)
result1 = 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);

//再次获得详细数据
SetupDiGetDeviceInterfaceDetail(handle,
&DeviceInterfaceData,
DeviceInterfaceDetailData,
strSize,
&requiredSize,
&DeviceInfoData);

//获得设备路径(最重要的部分)
//m_zf1=DeviceInterfaceDetailData->DevicePath;
Count++;
}
if(Count != 0)
{
//AfxMessageBox("进来了");
a = (PHIDD_ATTRIBUTES)malloc(100);
a->Size = sizeof(struct _HIDD_ATTRIBUTES);

HANDLE hCom = CreateFile(DeviceInterfaceDetailData->DevicePath,
NULL,//GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL);


HidD_GetAttributes(hCom,a);
pid = a->ProductID;
vid = a->VendorID;
zgl7903 2017-06-27
  • 打赏
  • 举报
回复
WDK 中有 USBView 源码可参考
三岁、就很帅 2017-06-27
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/system/HwDetect.aspx http://www.cnblogs.com/SunYu/archive/2010/04/29/1723977.html
三岁、就很帅 2017-06-27
  • 打赏
  • 举报
回复
http://blog.csdn.net/shen_001/article/details/14448287

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧