21xrx.com
2025-03-26 01:55:16 Wednesday
文章检索 我的文章 写文章
C++读取USB设备ID
2023-06-25 05:57:44 深夜i     14     0
C++ 读取 USB设备 ID

USB设备ID是指USB设备的唯一标识符,可以用于区分不同的USB设备。在C++编程中,读取USB设备ID对于开发USB设备的应用程序非常重要,因为它可以帮助应用程序识别已连接的USB设备以及与之通信。下面介绍一下如何在C++中读取USB设备ID。

第一步,打开Windows设备管理器。在设备管理器中找到要读取USB设备ID的USB设备,右键单击该设备并选择“属性”。

第二步,打开设备属性对话框。在属性对话框中,找到“详细信息”选项卡并展开此选项卡,选择“硬件ID”。

第三步,复制USB设备ID。在硬件ID栏中将USB设备ID复制到剪贴板中。

第四步,使用C++代码读取USB设备ID。使用Windows API可以在C++中读取USB设备ID。以下是一段示例代码,可以读取指定USB设备的ID:

#include <windows.h>
#include <setupapi.h>
#include <devguid.h>
#include <regstr.h>
#include <iostream>
HDEVINFO hDevInfo = NULL;
SP_DEVINFO_DATA DeviceInfoData;
DWORD dwIndex = 0;
DWORD dwRegType;
TCHAR szDeviceInstanceID[MAX_DEVICE_ID_LEN];
void DisplayDeviceIdentifier(SP_DEVINFO_DATA &DeviceInfoData)
{
  DWORD dwSize;
  CHAR szBuffer[1024] = {0};
  LPTSTR pszBuffer = NULL;
  // 设备名称
  if (SetupDiGetDeviceRegistryPropertyA(hDevInfo, &DeviceInfoData, SPDRP_FRIENDLYNAME, &dwRegType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize))
  
    std::cout << "Friendly name: " << szBuffer << std::endl;
  
  // 设备描述
  if (SetupDiGetDeviceRegistryPropertyA(hDevInfo, &DeviceInfoData, SPDRP_DEVICEDESC, &dwRegType, (BYTE*)szBuffer, sizeof(szBuffer), &dwSize))
  
    std::cout << "Device description: " << szBuffer << std::endl;
  
  // 设备ID
  if (SetupDiGetDeviceInstanceId(hDevInfo, &DeviceInfoData, szDeviceInstanceID, sizeof(szDeviceInstanceID), &dwSize))
  
    pszBuffer = szDeviceInstanceID;
    std::cout << "Device ID: " << pszBuffer << std::endl;
  
}
int main()
{
  // 枚举所有USB设备
  hDevInfo = SetupDiGetClassDevsA(&GUID_DEVCLASS_USB, NULL, NULL, DIGCF_PRESENT | DIGCF_ALLCLASSES);
  if (hDevInfo == INVALID_HANDLE_VALUE)
  
    std::cout << "Error: SetupDiGetClassDevs failed." << std::endl;
    return 0;
  
  DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
  while (SetupDiEnumDeviceInfo(hDevInfo, dwIndex, &DeviceInfoData))
  {
    dwIndex++;
    // 显示设备标识符
    DisplayDeviceIdentifier(DeviceInfoData);
  }
  SetupDiDestroyDeviceInfoList(hDevInfo);
}

这段示例代码使用了Windows API来枚举USB设备并显示它们的设备名称、设备描述和设备ID。用户可以根据自己的需要修改代码以实现读取USB设备ID的功能。

总之,读取USB设备ID是C++编程中的一个重要任务,可以帮助应用程序与连接的USB设备进行通信。在Windows系统中,可以通过设备管理器获取USB设备ID,并使用Windows API在C++程序中读取它。

  
  

评论区