事情是这样子:
我在遍历\\.\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;
...