21xrx.com
2024-11-22 07:50:26 Friday
登录
文章检索 我的文章 写文章
如何使用C++获取USB设备的设备号“usb0000-usb0001-usb0002”
2023-07-03 02:55:42 深夜i     --     --
C++ USB设备 设备号 获取 usb0000-usb0001-usb0002

在计算机中连接USB设备非常方便,但有时需要获取它们的设备号。使用C++可以轻松地获取USB设备的设备号“usb0000-usb0001-usb0002”,以下是实现方法:

第一步:导入头文件

#include

第二步:初始化变量

HANDLE hDevice; //设备句柄

SP_DEVICE_INTERFACE_DATA spInterfaceData = { 0 };

DWORD dwIndex = 0;

第三步:枚举USB设备

使用SetupDiGetClassDevs函数和SetupDiEnumDeviceInterfaces函数来枚举系统中的USB设备。以下是代码:

HDEVINFO hDevInfo;

SP_DEVICE_INTERFACE_DATA spInterfaceData = { 0 };

DWORD dwIndex = 0;

//获取设备接口信息集合

hDevInfo = SetupDiGetClassDevs(&GUID_DEVINTERFACE_USB_DEVICE, NULL, NULL, DIGCF_PRESENT | DIGCF_DEVICEINTERFACE);

if (hDevInfo != INVALID_HANDLE_VALUE)

{

  spInterfaceData.cbSize = sizeof(SP_DEVICE_INTERFACE_DATA);

  //枚举设备

  while (SetupDiEnumDeviceInterfaces(hDevInfo, NULL, &GUID_DEVINTERFACE_USB_DEVICE, dwIndex, &spInterfaceData))

  {

    ++dwIndex;

   //...

  }

  //释放设备接口信息集合

  SetupDiDestroyDeviceInfoList(hDevInfo);

}

第四步:获取设备接口详情信息

使用SetupDiGetDeviceInterfaceDetail函数获取设备接口详情信息,该信息包含了USB设备的路径,也就是设备号。以下是代码:

BYTE detail_buf[1024];

PSP_DEVICE_INTERFACE_DETAIL_DATA pDetailData = (PSP_DEVICE_INTERFACE_DETAIL_DATA)detail_buf;

pDetailData->cbSize = sizeof(SP_DEVICE_INTERFACE_DETAIL_DATA);

DWORD dwSize = 0;

if (SetupDiGetDeviceInterfaceDetail(hDevInfo, &spInterfaceData, pDetailData, sizeof(detail_buf), &dwSize, NULL))

{

  //获取USB设备的路径,也就是设备号

  std::string strPath = (char*)&pDetailData->DevicePath;

}

有了设备号,就可以使用C++进行USB设备操作了!

总结

通过以上步骤,我们已经成功获取了USB设备的设备号。如果你需要使用C++进行USB设备操作,这个方法对你应该是非常有用的。只需简单几步,就可以轻松获得设备号,并且可以在程序中使用它。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复