USB控制器
+ -

获取USB控制器下的根集线器名称

2023-10-22 212 0

每个USB根集线器下有惟一的USBS根控制器。当我们打开某个USB根控制器时,可以使用IOCTL_USB_GET_ROOT_HUB_NAME获取USB根控制的名称。而通过打开该控制器名称,就可以获取USB根集线器相的信息。

注意:这里的根集线器名需要加上\?\之后,才能通过CreateFile在应用层打开。

对于本人电脑的中获取USB根控制的信息,可以使用以下代码:

  1. #include <iostream>
  2. #include <windows.h>
  3. #include <tchar.h>
  4. #include <usbdi.h>
  5. VOID UsbControlInfo(HANDLE h)
  6. {
  7. char buff[1024] = { 0 };
  8. ULONG rtn = 0;
  9. BOOL isok = DeviceIoControl(h, IOCTL_USB_GET_ROOT_HUB_NAME, NULL, 0, buff, sizeof(buff), &rtn, NULL);
  10. if (isok)
  11. {
  12. PUSB_ROOT_HUB_NAME pInfo = (PUSB_ROOT_HUB_NAME)buff;
  13. printf("%ws\n", pInfo->RootHubName);
  14. }
  15. }
  16. #define NUM_HCS_TO_CHECK 10
  17. VOID EnumerateHostControllers()
  18. {
  19. TCHAR HCName[16];
  20. for (int HCNum = 0; HCNum < NUM_HCS_TO_CHECK; HCNum++)
  21. {
  22. _stprintf_s(HCName, sizeof(HCName) / sizeof(HCName[0]), _T("\\\\.\\HCD%d"), HCNum);
  23. HANDLE hHCDev = CreateFile(HCName,
  24. GENERIC_WRITE,
  25. FILE_SHARE_WRITE,
  26. NULL,
  27. OPEN_EXISTING,
  28. 0,
  29. NULL);
  30. if (hHCDev != INVALID_HANDLE_VALUE)
  31. {
  32. UsbControlInfo(hHCDev);
  33. CloseHandle(hHCDev);
  34. }
  35. }
  36. }
  37. int main()
  38. {
  39. EnumerateHostControllers();
  40. return 0;
  41. }

其返回的内容如下:

  1. USB#ROOT_HUB30#4&186df573&4&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}

而我们使用UsbTreeViewr来查看其信息:
USBTREEVIEWER

  1. +++++++++++++++++ Device Information ++++++++++++++++++
  2. Device Description : USB 根集线器(xHCI)
  3. Device Path : \\?\USB#ROOT_HUB30#4&186df573&4&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8} (GUID_DEVINTERFACE_USB_HUB)
  4. Kernel Name : \Device\USBPDO-0
  5. Device ID : USB\ROOT_HUB30\4&186DF573&4&0
  6. Hardware IDs : USB\ROOT_HUB30&VID8086&PIDA2AF&REV0000 USB\ROOT_HUB30&VID8086&PIDA2AF USB\ROOT_HUB30
  7. Driver KeyName : {36fc9e60-c465-11cf-8056-444553540000}\0001 (GUID_DEVCLASS_USB)
  8. Driver : \SystemRoot\System32\drivers\UsbHub3.sys (Version: 10.0.14393.6078 Date: 2023-06-27)
  9. Driver Inf : C:\Windows\inf\usbhub3.inf
  10. Legacy BusType : PNPBus
  11. Class : USB
  12. Class GUID : {36fc9e60-c465-11cf-8056-444553540000} (GUID_DEVCLASS_USB)
  13. Service : USBHUB3
  14. Enumerator : USB
  15. Location Info : -
  16. Manufacturer Info : (标准 USB 集线器)
  17. Capabilities : 0x80 (SurpriseRemovalOK)
  18. Status : 0x0180000A (DN_DRIVER_LOADED, DN_STARTED, DN_NT_ENUMERATOR, DN_NT_DRIVER)
  19. Problem Code : 0
  20. Address : 0
  21. HcDisableSelectiveSuspend: 0
  22. EnableSelectiveSuspend : 0
  23. SelectiveSuspendEnabled : 0
  24. EnhancedPowerMgmtEnabled : 0
  25. IdleInWorkingState : 1
  26. WakeFromSleepState : 0
  27. Power State : D0 (supported: D0, D2, D3, wake from D0, wake from D2)
HID人机交互QQ群:564808376    UAC音频QQ群:218581009    UVC相机QQ群:331552032    BOT&UASP大容量存储QQ群:258159197    STC-USB单片机QQ群:315457461    USB技术交流QQ群2:580684376    USB技术交流QQ群:952873936   

0 篇笔记 写笔记

USBIP虚拟控制器和根集线器HUB的设备信息分析
USBIP是一套可以实现USB远程设备的本机映射,这样就像在本地操作目标USB设备一样。其原理是在本地端通过安装一个虚拟的USB根控制器,根集线器,同时虚拟出4个USB端口,当远程USB设备连接到远程机器时,可以把远程设备的USB信息通过网络传输到本地,在本地的虚拟USB端口虚拟一个相同的设备,这样......
Windows系统USB控制器百科
Windows系统下的USB控制器可以通过设备管理器来查看。具体方法是选择任意一USB设备,然后按连接显示。这样其上级为PCIE设备的就是USB控制器。如本人计算机中的USB控制器设备如下:USB控制器一般是挂在PCIE总线上,该控制器会有一个根USB集线器。本人计算机中的该USB控制器硬......
USBIP USB根集线器名称IOCTL_USB_GET_ROOT_HUB_NAME
每个USB控制下都有一个根集线器,使用IOCTL_USB_GET_ROOT_HUB_NAME可以获取该根集线器的名称。USB根集线器可以通过USBTREEVIEWER来直接看出相关的信息。对于USBIP,IOCTL_USB_GET_ROOT_HUB_NAME对的处理函数为: case IO......
获取USB控制器下的根集线器名称
每个USB根集线器下有惟一的USBS根控制器。当我们打开某个USB根控制器时,可以使用IOCTL_USB_GET_ROOT_HUB_NAME获取USB根控制的名称。而通过打开该控制器名称,就可以获取USB根集线器相的信息。注意:这里的根集线器名需要加上?之后,才能通过CreateFile在应......
USBIP USB根集线器节点信息IOCTL_USB_GET_NODE_INFORMATION
IOCTL_USB_GET_NODE_INFORMATION用于获取USB根集线器信息PAGEABLE NTSTATUSvhci_ioctl_vhub(pvhub_dev_t vhub, PIRP irp, ULONG ioctl_code, PVOID buffer, ULONG inlen,......
USB根集线器USBD_DEVICE_HANDLE
USBD_DEVICE_HANDLE简介USB主机控制器会创建一个PDO设备代表着根集线器。USB根集线器的扩展数据结构中个很重要的成员就是RootHubDeviceHandle。typedef struct _PDO_EXTENSION { USBD_DEVICE_HANDLE Roo......
关注公众号
  • HID人机交互
  • Linux&USB
  • UAC音频
  • TYPE-C
  • USB规范
  • USB大容量存储
  • USB百科
  • USB周边
  • UVC摄像头
  • Windows系统USB
  • 音视频博客
  • 取消
    感谢您的支持,我会继续努力的!
    扫码支持
    扫码打赏,你说多少就多少

    打开支付宝扫一扫,即可进行扫码打赏哦

    您的支持,是我们前进的动力!