21xrx.com
2024-11-08 22:31:21 Friday
登录
文章检索 我的文章 写文章
C++读取USB设备ID
2023-06-25 05:57:44 深夜i     --     --
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++程序中读取它。

  
  

评论区

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