在枚举USB设备时,GetRootHubName返回的device path格式问题

directmemory 2019-08-01 11:45:16
事情是这样子:
我在遍历\\.\HCD*下面的HUB&Device,在 用GetRootHubName获得各个hub的device path时,发现主板原生的 / PCIe扩展卡USB root hub device path格式不一样:
Root_Hub: \\.\USB#ROOT_HUB30#4&1148bc98&0&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
Root_Hub: \\.\{df1aff3f-af8a-11e9-8130-806e6f6e6963}

外部hub接到主板原生USB root hub结果带有VID、PID如:
External_Hub: \\.\USB#VID_8087&PID_8000#5&26735ef0&0&1#{f18a0e88-c30c-11d0-8815-00a0c906bed8}
外部hub接到PCIe扩展卡USB root hub则只看到一个UUID如:
External_Hub: \\.\{df1b0e59-af8a-11e9-8130-fae4c8d2eecb}

然后这个外部的USB hub VID/PID对我十分重要,请问怎么统一成类似原生USB root hub的格式?感谢大神。

相关的试验:
1.网上下载预编译好的usbtreeview查看可以看到VID/PID
2.https://github.com/efredxu/Windows-driver-samples/tree/master/usb/usbview这个sorceCode得到的不可以看到VID/PID。

我的相关code:
for (HCNum = 0; HCNum < MAX_HCD; HCNum++)
{
wsprintf(HCName, _T("\\\\.\\HCD%d"), HCNum);
hHCDev = CreateFile(HCName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);///////////////////////////
//hHCDev = CreateFileA(HCNameA, GENERIC_WRITE, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
if (hHCDev == INVALID_HANDLE_VALUE){
continue;
}
driverKeyName = GetHCDDriverKeyName(hHCDev);
if (driverKeyName)
{
rootHubName=GetRootHubName(hHCDev);
cout<<"+++++++++++++roothubname: "<<rootHubName<<endl;
...
...全文
240 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
directmemory 2019-08-02
  • 打赏
  • 举报
回复
引用 3 楼 Eleven 的回复:
那你用SetupDiXXX接口应该枚举应该是没问题的,权限的问题?你有试过用Admin权限运行吗?


应该不是权限问题:我在admin CMD下测试自己的code,以及admin运行usbview (WDK code),结果都会有以上异常,而usbtreeview是正常的。

下一步我将按版主建议尝试SetupDixxx,并研究一个usbtreeview,感谢。
Eleven 2019-08-01
  • 打赏
  • 举报
回复
那你用SetupDiXXX接口应该枚举应该是没问题的,权限的问题?你有试过用Admin权限运行吗?
directmemory 2019-08-01
  • 打赏
  • 举报
回复
引用 1 楼 Eleven 的回复:
你可以先在设备管理器中看看,这个设备挂在那个设备类下面?


PCIe卡的USB root hub,以及接到它的外部hub都是挂到USB类下面的,如:
USB\VID_040E&PID_0100&ASMEDIAUSBD_HUB\5&3D3DE3F&0&0
Eleven 2019-08-01
  • 打赏
  • 举报
回复
你可以先在设备管理器中看看,这个设备挂在那个设备类下面?

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧