C++ 프로그램에서 프로그램을 실행중인 시스템에서 사용할 수있는 USB 포트 버전을 확인해야합니다.
현재로서는 Windows에서 필요하지만 Linux는 다음에 있습니다.사용 가능한 USB 포트의 버전을 확인하는 방법은 무엇입니까?
다음과 같은 간단한 기능이 있습니까 : int GetUsbVersion()
?
libusb만큼 복잡한 것은 필요하지 않지만 어떤 기능을 사용해야합니까?
C++ 프로그램에서 프로그램을 실행중인 시스템에서 사용할 수있는 USB 포트 버전을 확인해야합니다.
현재로서는 Windows에서 필요하지만 Linux는 다음에 있습니다.사용 가능한 USB 포트의 버전을 확인하는 방법은 무엇입니까?
다음과 같은 간단한 기능이 있습니까 : int GetUsbVersion()
?
libusb만큼 복잡한 것은 필요하지 않지만 어떤 기능을 사용해야합니까?
리눅스의 경우 lsusb
| 그렙 ... 직접합니다 (libusb__device__descriptor
의 필드 bcdUSB
) libusb
명령
Bus 002 Device 007: ID 04f2:b1d8 Chicony Electronics Co., Ltd
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
2.0, 1.1 , ...
와 루트 허브의 버전입니다. 2.0 또는 3.0 루트 허브가있는 경우 다음 창은 낮은 수준에 아주 나쁜 액세스를 제공하기 때문에 창에서
http://libusb.sourceforge.net/api-1.0/structlibusb__device__descriptor.html https://itsfoss.com/find-usb-3-port-linux/
이 더 어렵다 이전 버전과의 호환성을 위해이 또한 1.1 (그리고/또는 2.0) USB 기능. 그래픽이이 https://kb.iu.edu/d/aout
USB 1.1, USB 2.0 enhanced (EHCI)
USB 3.0 extensible (xHCI)
호스트 컨트롤러 인터페이스
는 정보를 액세스 할 수있다이다 open (OHCI)
인 참조 Universal Serial Bus controllers
아래 Device Manager
의 USB 호스트 컨트롤러의 버전을 결정하는 단계에 의해 수행 될 수있다 WMI (Windows Management Instrumentation)를 사용하는 C++의 장치 관리자 USB 프로토콜 버전을 사용하는 것을 알아 내기 위해 당신은 참조 USB 루트 허브 (Win32_USBHub class
)을 조회해야 https://msdn.microsoft.com/en-us/library/aa394506(v=vs.85).aspx
[Dynamic, Provider("CIMWin32a"), UUID("{52E56374-B17E-41DC-00EC-FC3E6E8D8783}"), AMENDMENT]
class Win32_USBHub : CIM_USBHub
{
uint16 Availability;
string Caption;
uint8 ClassCode;
boolean ConfigManagerUserConfig;
string CreationClassName;
uint8 CurrentAlternateSettings[];
uint8 CurrentConfigValue;
string Description;
boolean ErrorCleared;
string ErrorDescription;
boolean GangSwitched;
datetime InstallDate;
uint32 LastErrorCode;
uint8 NumberOfConfigs;
uint8 NumberOfPorts;
string PNPDeviceID;
uint16 PowerManagementCapabilities[];
boolean PowerManagementSupported;
uint8 ProtocolCode;
string Status;
uint16 StatusInfo;
uint8 SubclassCode;
string SystemCreationClassName;
string SystemName;
uint16 USBVersion; <------------------
uint32 ConfigManagerErrorCode;
string DeviceID;
string Name;
};
https://msdn.microsoft.com/en-us/library/aa394506(v=vs.85).aspx
http://www.powertheshell.com/reference/wmireference/root/cimv2/win32_usbhub/
https://gallery.technet.microsoft.com/scriptcenter/5e2b2a59-84ec-4df2-a61d-70a6bf739578 - 스크립트 USB 목록 허브 정보
https://blogs.msdn.microsoft.com/powershell/2007/02/24/displaying-usb-devices-using-wmi/
https://msdn.microsoft.com/en-us/library/dn449417(v=winembedded.82).aspx
How do I access information in Windows Device Manager in C++?
https://stackoverflow.com/questions/42160635/how-to-determine-usb-port-version-on- windows – sailfish009
@ sailfish009 : 그들은 완벽한 GUI 응용 프로그램 인 USBView를 제안합니다. C++ 프로그램에서 호출하는 낮은 수준의 함수를 찾고 있습니다. – Pietro
https://github.com/Microsoft/Windows-driver-samples/tree/master/usb/usbview 링크에는 기능이 있습니다. – sailfish009