C# 什么是注册表设备;位置信息“;USB设备的关键部分?

C# 什么是注册表设备;位置信息“;USB设备的关键部分?,c#,windows,usb,registry,C#,Windows,Usb,Registry,我目前正在遍历连接到我的计算机的USB摄像头列表,我使用以下代码检索这些摄像头: DsDevice[] cams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice); 然后,我从DevicePath为每个设备确定HardwareID和InstanceID值,并查找所有设备的以下注册表项: HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Enum\USB{HardwareID}{I

我目前正在遍历连接到我的计算机的USB摄像头列表,我使用以下代码检索这些摄像头:

DsDevice[] cams = DsDevice.GetDevicesOfCat(FilterCategory.VideoInputDevice);
然后,我从DevicePath为每个设备确定HardwareID和InstanceID值,并查找所有设备的以下注册表项:

HKEY\U LOCAL\U MACHINE\SYSTEM\CurrentControlSet\Enum\USB{HardwareID}{InstanceID}\


然后我读取
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)似乎是USB端口连接到的内部USB集线器之间的区别。这是正确的吗

  • 我推断第五个块(索引4)是USB端口号,但在我使用的另一台计算机(英特尔计算棒)上,端口号差异实际上发生在第四个块(索引3)中。有没有办法知道我需要根据计算机检查哪个区块?(第三方库是可以接受的,尽管我更愿意使用.NET或直接的Windows API的内置功能,如果可能的话,我可以将其挂接进去。)


  • 是否有任何文档说明
    位置信息的每个部分是什么?我在谷歌上搜索过信息,但我没有找到我想要的。也许我只是不知道找到这些信息的最佳搜索词。无论如何,我敢打赌这个文档对其他StackOverflow用户也非常有用


  • 谢谢

    为此,不需要直接读取注册表,而是使用CM_uuAPI。如果您希望LocationInformation调用这些有用的信息,但我更感兴趣的是注册表值此时包含的信息。代码已经编写好并且工作可靠,但是我想知道
    LocationInformation
    键值中的特定块指的是什么。
    LocationInformation
    是string(
    REG_SZ
    )值。它是按原样使用的。对于像这样的usb字符串,句点是字符串值中的分隔符#3在我的问题中,我问这些部分都指什么。为此,不需要直接阅读注册表,而需要使用CM_uAPI。如果您希望LocationInformation调用这些有用的信息,但我更感兴趣的是注册表值此时包含的信息。代码已经编写好并且工作可靠,但是我想知道
    LocationInformation
    键值中的特定块指的是什么。
    LocationInformation
    是string(
    REG_SZ
    )值。它是按原样使用的。对于像这样的usb字符串,句点是字符串值中的分隔符#3在我的问题中,我问这些章节都指什么。