欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

c语言 编写的usb枚举 有有关问题 请高手帮忙解决

更新时间: 2014-01-05 03:19:13 责任编辑: Author_N1

 

C语言 编写的usb枚举 有问题 请高手帮忙解决
#include <windows.h>
#include <basetyps.h>
#include <windowsx.h>
#include <initguid.h>
#include <devioctl.h>
#include <usbioctl.h>
#include <dbt.h>
#include <stdio.h>
#include <setupapi.h>
char* GetUsbDeviceLabel(char* key_name)
{
  HDEVINFO di = SetupDiGetClassDevs(&GUID_CLASS_USB_DEVICE, 0, 0, DIGCF_PRESENT|DIGCF_DEVICEINTERFACE);
  if(di == INVALID_HANDLE_VALUE)
  {
    MyPrintf("没有找到");
    return 0;
  }   
  for(int i = 0; ; i++)
  {
    BYTE tmp_buf1[513];   
    //主控的描述字符串
    SP_DEVINFO_DATA DevInfoData;
    DevInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
    if(! SetupDiEnumDeviceInfo(di, i, &DevInfoData))
      break;
    if(! SetupDiGetDeviceRegistryProperty(di, &DevInfoData, SPDRP_DRIVER, 0, tmp_buf1, 513, 0))
      continue;
    if(strcmp(key_name, (char*)tmp_buf1) != 0)
      continue;
    if(SetupDiGetDeviceRegistryProperty(di, &DevInfoData, SPDRP_DEVICEDESC, 0, tmp_buf1, 513, 0))
    {
      strcpy(key_name, (char*)tmp_buf1);
      return key_name;
    }
    else
    {
      return 0;
    }
  }
  return 0;
}
void GetPortDevDescString(HANDLE hub, int port_idx, USB_DEVICE_DESCRIPTOR* dev_desc)
{
  //读语言的种类
  BYTE tmp_buf1[513] = {0};   
  DWORD data_len;
  USB_DESCRIPTOR_REQUEST* str_req = (USB_DESCRIPTOR_REQUEST*)tmp_buf1;
  USB_STRING_DESCRIPTOR* str_desc = (USB_STRING_DESCRIPTOR*)(tmp_buf1 + sizeof(USB_DESCRIPTOR_REQUEST) - 1);
  int LanIDs_num = 0;
  WORD* LanIDs = 0;
  int i;
  str_req->ConnectionIndex = port_idx;
  str_req->SetupPacket.wValue = (USB_STRING_DESCRIPTOR_TYPE << 8) | 0;
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:19:13
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20712/
本文WWW.DOC100.NET DOC100.NET版权所有。