什么是USB设备的注册表设备“LocationInformation”关键部分?

时间:2017-05-26 16:02:52

标签: c# windows usb registry

我目前正在迭代连接到我的计算机的USB相机列表,我使用以下代码检索:

DsDevice[] cams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);

然后我从DevicePath为每个设备确定HardwareID和InstanceID值,并为所有设备查找以下注册表项:

  

HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \枚举\ USB {硬件ID} {实例id} \

然后我读了LocationInformation子键值。以下是我根据设备插入的USB端口收到的一些示例:

0000.001a.0000.001.003.000.000.000.000
0000.001a.0000.001.004.000.000.000.000
0000.001d.0000.001.008.000.000.000.000
0000.001d.0000.001.007.000.000.000.000
0000.001d.0000.001.005.000.000.000.000
0000.001d.0000.001.006.000.000.000.000
  1. 看来第二个块(返回的Split('.')阵列的索引1)是USB端口所连接的内部USB集线器之间的区别。这是对的吗?

  2. 我推断出第五个块(索引4)是USB端口号,但是在我使用的另一台计算机上(Intel Compute Stick),端口号区别实际上发生在第四个块中(指数3)。有没有办法知道我需要根据计算机检查哪个块? (第三方库是可以接受的,但我更倾向于使用.NET的内置功能或者我可以连接的直接Windows API,如果可能的话。)

  3. 是否有关于LocationInformation的每个部分的文档?我用谷歌搜索了一下信息,但是我找不到我正在寻找的东西。也许我只是不知道找到这些信息的最佳搜索词。无论如何,我敢打赌,这个文档对其他StackOverflow用户也非常有用。

  4. 谢谢!

0 个答案:

没有答案