2017-04-10 2 views
1

C++ 프로그램에서 프로그램을 실행중인 시스템에서 사용할 수있는 USB 포트 버전을 확인해야합니다.
현재로서는 Windows에서 필요하지만 Linux는 다음에 있습니다.사용 가능한 USB 포트의 버전을 확인하는 방법은 무엇입니까?

다음과 같은 간단한 기능이 있습니까 : int GetUsbVersion()?

libusb만큼 복잡한 것은 필요하지 않지만 어떤 기능을 사용해야합니까?

+0

https://stackoverflow.com/questions/42160635/how-to-determine-usb-port-version-on- windows – sailfish009

+0

@ sailfish009 : 그들은 완벽한 GUI 응용 프로그램 인 USBView를 제안합니다. C++ 프로그램에서 호출하는 낮은 수준의 함수를 찾고 있습니다. – Pietro

+0

https://github.com/Microsoft/Windows-driver-samples/tree/master/usb/usbview 링크에는 기능이 있습니다. – sailfish009

답변

0

리눅스의 경우 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/dn449417(v=winembedded.82).aspx

How do I access information in Windows Device Manager in C++?

관련 문제