永发信息网

怎么获得USB设备的Product ID,Vendor ID等信息

答案:2  悬赏:30  手机版
解决时间 2021-01-26 01:42
  • 提问者网友:戎马万世
  • 2021-01-25 07:53
怎么获得USB设备的Product ID,Vendor ID等信息
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-01-25 09:00
ifdata.cbSize = sizeof(ifdata); // 枚举符合该GUID的设备接口 bResult = ::SetupDiEnumDeviceInterfaces( hDevInfoSet, // 设备信息集句柄 NULL, // 不需额外的设备描述 (LPGUID)&HARDDISK_GUID,//GUID_CLASS_USB_DEVICE, // GUID (ULONG)nCount, // 设备信息集里的设备序号 &ifdata); // 设备接口信息 if (bResult) { ULONG predictedLength = 0; ULONG requiredLength = 0; // 取得该设备接口的细节(设备路径) bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 NULL, // 设备接口细节(设备路径) 0, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 // 取得该设备接口的细节(设备路径) predictedLength=requiredLength; // if(pDetail) // { // pDetail =NULL; // } pDetail = (PSP_INTERFACE_DEVICE_DETAIL_DATA)::GlobalAlloc(LMEM_ZEROINIT, predictedLength); pDetail- >cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA); bResult = SetupDiGetInterfaceDeviceDetail( hDevInfoSet, // 设备信息集句柄 &ifdata, // 设备接口信息 pDetail, // 设备接口细节(设备路径) predictedLength, // 输出缓冲区大小 &requiredLength, // 不需计算输出缓冲区大小(直接用设定值) NULL); // 不需额外的设备描述 if (bResult) { // 复制设备路径到输出缓冲区 for(int i=0;i <17;i++){ ch[i]=*(pDetail- >DevicePath+8+i); } ch[17]= "/0 "; if (strcmp(ch,"vid_11dd&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_11dd&pid_11dd")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_0101")==0 ¦ ¦ strcmp(ch,"vid_0101&pid_11dd")==0) //比较版本号,防止意外出错 { len = strlen(pDetail- >DevicePath); devicename = new char[len]; memset(devicename, 0, len); for(int i=0;i <(len-38);i++) { ch[i]=*(pDetail- >DevicePath+i); } ch[len-38]= "/0 "; memset(volume, 0, MAX_PATH); } } } nCount++; } // 释放设备接口数据空间 ::GlobalFree(pDetail); // 关闭设备信息集句柄 ::SetupDiDestroyDeviceInfoList(hDevInfoSet); }
全部回答
  • 1楼网友:你哪知我潦倒为你
  • 2021-01-25 10:10
要烧固件程序,id可以读取的吧!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯