C++写一个程序判断3.0U盘插入3.0USB接口上时抓到的是2.0还是3.0
时间: 2024-05-13 17:20:01 浏览: 90
Surf_test.zip_C++_opencv3 surf_opencv3.0_surf_surf opencv3
5星 · 资源好评率100%
C++中可以使用Windows API函数来获取U盘的信息,并判断它是2.0还是3.0。以下是一个示例代码:
```cpp
#include <iostream>
#include <Windows.h>
int main()
{
// 获取所有USB控制器的句柄
HDEVINFO hDevInfo = SetupDiGetClassDevs(NULL, TEXT("USB"), NULL, DIGCF_ALLCLASSES | DIGCF_PRESENT);
// 枚举所有USB设备
SP_DEVINFO_DATA DeviceInfoData;
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
for (DWORD i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++)
{
// 获取设备的硬件ID
TCHAR HardwareID[1024];
if (SetupDiGetDeviceRegistryProperty(hDevInfo, &DeviceInfoData, SPDRP_HARDWAREID, NULL, reinterpret_cast<PBYTE>(HardwareID), sizeof(HardwareID), NULL))
{
// 判断是否是3.0设备
if (_tcsstr(HardwareID, TEXT("USB\\ROOT_HUB30")) != NULL)
{
std::cout << "3.0 U盘插入3.0 USB接口上" << std::endl;
break;
}
else
{
std::cout << "3.0 U盘插入2.0 USB接口上" << std::endl;
break;
}
}
}
// 释放资源
SetupDiDestroyDeviceInfoList(hDevInfo);
return 0;
}
```
该程序使用了Windows API函数`SetupDiGetClassDevs`和`SetupDiEnumDeviceInfo`来枚举所有USB设备,并使用`SetupDiGetDeviceRegistryProperty`获取设备的硬件ID,从而判断它是2.0还是3.0设备。如果硬件ID中包含`USB\ROOT_HUB30`,则说明是3.0设备,否则为2.0设备。
阅读全文