适用于功能控制器驱动程序的 USB 注册表设置

OEM 必须设置多个注册表值,以确保其设备在连接到计算机时枚举正确的元数据。 这些值指定 Windows 中 USB 设备端驱动程序的设备和配置描述符。 创建和包含其自己的接口的 OEM 必须设置其他注册表值,才能加载和使用其接口。

与设备端 USB 驱动程序相关的注册表项位于: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN

本主题介绍上述密钥的设置,以及定义设备的设备、配置和接口描述符的子键。

USBFN 注册表项

USB 设备的配置信息位于以下注册表中: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN

下表描述了其子键。 其中一些可由 OEM 修改。 有关每个子键支持的值的详细信息,请参阅以下部分。

订阅密钥 说明
备用项 此子键包含描述具有一个或多个备用设置的接口的其他子键。
关联 此子键定义接口关联描述符 (IIAD) 。 每个 IAD 允许将多个接口分组到单个函数中。 每个子键表示不同的 IAD,OEM 可以修改这些子键的值。
Default 此子键包含用于描述特定于设备的设置(如 VID 和 PID)的默认值。 这是 Microsoft 拥有的子键,其值被父键中的子键替代。
配置 此子键包含其他子键,这些子键包含 USB 枚举期间使用的配置描述符值。 例如,标准测试配置可能位于 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations\TestConfig下。
Configurations\Default 这是 Microsoft 拥有的子键。 它包含默认配置的值。 当 IncludeDefaultCfg 值在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 键下设置为 1 时,默认配置中的接口将添加到当前配置之前。
接口 此子键包含描述特定接口描述符的其他子键。 例如,基于 USB 的 IP 接口可能位于 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces\IpOverUsb下。 接口子键的名称也用作 USBFN 子设备的硬件 ID,用于加载 USBFn 类驱动程序。 在 IP over USB 示例中,USBFN 子设备的硬件 ID 将是 USBFN\IpOverUsb

下表描述了 OEM 可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 键中定义的值。 此键中未定义的值假定 Microsoft 在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Default下定义的默认值。

所有 OEM 都必须设置 idVendoridProductManufacturerStringProductString 值。 创建并添加其自己的接口的 OEM 还必须将 CurrentConfiguration 设置为在 InterfaceList 中包含其接口的HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations 下的子键的名称。

类型 所有者 说明
IncludeDefaultCfg REG_DWORD OEM 当 OEM 想要包含默认配置的接口(例如 IpOverUsb 或 MTP)时,将 设置为 1。
idVendor REG_DWORD OEM 枚举期间发送到主机的设备描述符的供应商标识符。
idProduct REG_DWORD OEM 枚举期间发送到主机的设备描述符的产品标识符。
ManufacturerString REG_SZ OEM 发送到主机以标识设备制造商的制造商字符串。
ProductString REG_SZ OEM 将设备描述为产品的字符串。 默认值为 Windows 10 移动版 Device。 此值用作连接的计算机的用户界面中的设备的显示名称。 OEM 应确保此值与 DeviceTargetingInfo 子键下的 PhoneModelName 值匹配。
iSerialNumber REG_DWORD OEM 如果此值设置为 0,则设备没有序列号。 如果此值不为零或不存在,则按设备唯一生成序列号。
CurrentConfiguration REG_SZ OEM 此字符串必须与配置子键的名称相对应。 此字符串确定用于生成 USB 设备枚举的配置描述符的配置。
ClassEndpointRequestEnabled REG_DWORD OEM 如果要指示接受类终结点请求,请将 设置为 1。 默认情况下,不接受类终结点请求。 如果想要指示不接受类终结点请求或仅接受特定接口,则设置为 0 (或不设置此注册表值) 。 请参阅 USBFN\Interfaces 注册表项部分中的 ClassEndpointRequestEnabled 值,了解如何接受特定接口的类终结点请求。

USBFN\Configurations 注册表项

下表描述了 OEM 可为 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations下的子键定义的值。 每个子键表示不同的 USB 配置。 如果 OEM 想要创建自己的接口,OEM 必须定义包含要使用的接口的新配置。 为此,请在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Configurations 下创建一个子键,该子键使用配置的名称,并使用此表中的值填充子键。 此外,若要使 USB 驱动程序使用新配置,必须将上表) 中描述的 CurrentConfiguration 值设置为配置子键的名称 (。

类型 所有者 说明
InterfaceList REG_MULTI_SZ OEM 或 Microsoft 包含与HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces下的接口子键对应的接口名称列表、HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations 下定义的 IAD 关联,以及 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates下定义的备用接口。 这些键确定用于描述复合配置描述符的接口。

如果 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 键下的 IncludeDefaultCfg 值设置为 1,则此列表将追加到 Microsoft 拥有的默认接口列表,以创建设备将用于枚举的完整接口列表。
MSOSCompatIdDescriptor REG_BINARY OEM 或 Microsoft 可选。 定义配置的扩展兼容性 ID OS 功能描述符。 如果 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN 键下的 IncludeDefaultCfg 值设置为 1,则此描述符中的函数将追加到默认配置中的函数和接口。

USBFN\Interfaces 注册表项

此表描述了 OEM 可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces下修改子键的值。

每个子键表示不同的 USB 接口。 若要定义接口,请使用接口的名称 在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces 下创建一个子键,并使用下表中的值填充该子键。 此外,仅当接口是 CurrentConfigurationInterfaceList 的一部分时,才会包含接口。

类型 所有者 说明
InterfaceDescriptor REG_BINARY OEM 或 Microsoft 在 USB 枚举期间要发送到主机的接口描述符的二进制表示形式。 编译完整配置描述符后,USB 函数堆栈会自动填充 bInterfaceNumberiInterface 值,以避免与其他接口描述符冲突。
InterfaceGUID REG_SZ OEM 或 Microsoft 唯一标识总线上的接口的 GUID。
InterfaceNumber REG_DWORD OEM 或 Microsoft 可选。 此值用于将固定接口号分配给函数。 接口号 0-1F 保留给旧版函数,20-3F 保留给 Microsoft,40-5F 保留供 OEM 使用。
MSOSExtendedPropertyDescriptor REG_BINARY OEM 或 Microsoft 可选。 定义接口的扩展属性 OS 功能描述符。
ClassEndpointRequestEnabled REG_DWORD OEM 仅当 不存在HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\ClassEndpointRequestEnabled 或设置为 0 时,此注册表值才有效。 如果要指示接受此接口的类终结点请求,请将此注册表值设置为 1。 (设置为 0,或者当要指示不接受对此接口的类终结点请求时,) 不设置此注册表值。

USBFN\Alternates 注册表项

备用子键用于定义具有一个或多个备用接口的单个接口。 此表描述了 OEM 可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates下修改子键的值。

每个子键表示不同的接口。 若要使用备用设置定义接口,请使用接口名称在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Alternates 下创建子键,并使用下表中的值填充该子键。

类型 所有者 说明
InterfaceList REG_MULTI_SZ OEM 或 Microsoft HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Interfaces下定义的接口相对应的另外两个接口名称的列表。 该键共同定义具有备用设置的接口。 第一个接口对应于备用设置 0,第二个接口对应于备用设置 1,依此。
InterfaceNumber REG_DWORD OEM 或 Microsoft 可选。 此值用于将固定接口号分配给函数。 接口号 0-1F 保留给旧版函数,20-3F 保留给 Microsoft,40-5F 保留供 OEM 使用。
MSOSExtendedPropertyDescriptor REG_BINARY OEM 或 Microsoft 可选。 定义接口的扩展属性 OS 功能描述符。

USBFN\Associations 注册表项

OEM 可以通过定义接口关联描述符 (IAD) 来指定关联。 每个 IAD 允许将多个接口分组到一个函数中。 此表描述了 OEM 可以在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations下修改子键的值。

每个子键表示不同的 IAD。 若要定义关联,请使用 IAD 的名称在 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\USBFN\Associations 下创建一个子键,并使用下表中的值填充该子键。

类型 所有者 说明
InterfaceList REG_MULTI_SZ OEM 或 Microsoft 与 USB 函数关联的接口或备用接口的列表。 如果列表的大小小于 2,则无法加载函数驱动程序堆栈。 其他函数或接口继续加载。
bFunctionClass REG_DWORD OEM 或 Microsoft 函数的类代码,设置为 02。
bFunctionSubClass REG_DWORD OEM 或 Microsoft 函数的子类代码,设置为 0d。
bFunctionProtocol REG_DWORD 函数的协议代码,设置为 01。
MSOSExtendedPropertyDescriptor REG_BINARY OEM 或 Microsoft 可选。 定义接口的扩展属性 OS 功能描述符。

MirrorLink 是一种互操作性标准,允许在移动设备和汽车信息娱乐系统之间进行集成。 设备必须向 MirrorLink 客户端公开 USB CDC NCM 接口。 作为 CDC) 设备的通信设备类 (,需要使用接口关联描述符 (IAD) 和/或 CDC 函数联合描述符来描述数据接口。

若要在 Windows 10 移动版 设备上启用 MirrorLink 连接,OEM 必须进行这些更改才能公开 IAD。

  • 通过使用接口关联描述符 (IAD) 设置上表所示的注册表值,创建通信和数据接口的关联。

  • 除了注册表设置之外,将此注册表值设置为非零值。

    类型 所有者 说明
    MirrorLink REG_DWORD OEM 或 Microsoft 非零值指示接口支持 MirrorLink。 USB 函数堆栈不会停止 MirrorLink USB 命令。
  • 特定于类的描述符可以包含在注册表中定义的接口描述符集中。 必须在这些描述符中设置大小字段,以便 USB 函数驱动程序堆栈可以准确地分析它们。

或者,也可以将 CDC 函数联合描述符定义为 Class-Specific 接口描述符;但是,联合描述符指定的接口号是静态的,不由 USB 函数驱动程序堆栈分配,并且存在联合描述符不会导致它描述的接口与单个子 PDO 相关联。 该关联需要 IAD。