MB 标识变换解决方案详细信息

配置要求

需要维护Windows 8中跨转换的函数顺序。 例如,如果 MBIM 是 Windows-8-Configuration 中的第三个函数,则它也应该是 IHV-NCM-2.0-Configuration 中的第三个函数。

Windows-7-Configuration

Windows-7 配置应该是变形设备中的第一个配置。 此配置应将大容量存储函数作为函数之一。 Windows 8不会选择此配置。 在 Windows 7 及更早版本的 Windows 中,Windows-7 配置是所选的默认配置。 此配置用于公开 IHV 放置其驱动程序包(允许用户安装 IHV 驱动程序)的 USB 大容量存储函数。

Windows-8 配置

Windows-7-Configuration 将 MBIM 函数公开为加载 MBCD 的函数之一。 在 Windows 8 中,此配置的值用于返回到 USBCCGP 的 subCompatibleID 值。 USBCCGP 在加载时选择此配置。 Windows-8 配置应为配置 2、3 或 4。 不支持其他配置作为 Windows-8 配置。 此配置还公开大容量存储函数作为允许用户安装 IHV 驱动程序包的第一个函数。

IHV-NCM-2.0-Configuration

IHV-NCM-2.0-Configuration 公开特定于 IHV 的函数以及 MBIM 和大容量存储函数。 Windows 未设置或使用此配置。 用户安装 IHV 软件后,可以更改为此配置。 请注意,此配置中的函数顺序应与 Windows-8 配置中的函数顺序相同。 尽管可以将额外的函数添加到 Windows-8-Configuration,但现有函数应按相同的顺序保留。

IHV-NCM-1.0-Configuration

IHV-NCM-1.0-Configuration 公开特定于 IHV 的函数以及 NCM 1.0 和大容量存储函数。 Windows 8未设置或使用此配置。 在用户安装 IHV 软件后,此配置仅在 Windows 7 及更早版本的 Windows 中使用。 IHV 软件将变形设备从 Windows-7 配置更改为此配置。

Compatible IDs

兼容的 ID 是设备用来指示驱动程序对 Windows 的加载首选项的 8 个字符或更小的字符串。 设备可以使用 Microsoft OS 描述符定义兼容的 ID。 兼容 ID 和子兼容 ID 适用于单个函数。 每个配置可以有一组单独的兼容 ID,这些 ID 映射到该配置中的函数集。 尽管兼容 ID 和子兼容 ID 适用于单个函数,但在未选择任何配置时,变形设备可以具有单个兼容 ID。 此兼容且子不兼容的 ID 在逻辑上适用于整个变形设备。

加载 USBCCGP

在 Windows 8 中,需要 USBCCGP 驱动程序才能在平滑设备上自动选择 Windows-8-Configuration。

若要加载 USBCCGP 驱动程序,当未在平滑设备上选择任何配置时,平滑设备需要报告以下兼容和不兼容的 ID:

  • 如果变形设备使用 IAD 将接口分组到函数中,则兼容 ID 应报告为“ALTRCFG”,将子兼容 ID 报告为 Windows-8-Configuration 的编号。
  • 如果变形设备使用 WCM UFD 将接口分组到函数中,则兼容 ID 应报告为“WMCALTR”,将子兼容 ID 报告为 Windows-8-Configuration 的编号。

例如,如果 Windows-8-Configuration 为配置 3,则在这两种情况下,子不兼容 ID 将为“3”。

平滑兼容 ID

在 USB 设备枚举期间,当在平滑设备上未选择任何配置时,USBHUB 会查询平滑设备以获取兼容 ID。 平滑设备应返回用于加载 USBCCGP 的兼容和次兼容 ID,如 MB 标识平滑解决方案概述中所述。

USBHUB 加载 USBCCGP 后,USBCCGP 会选择前面报告的子兼容 ID 指示的配置。 然后,USBCCGP 再次查询兼容和子兼容的 ID。 此时,平滑设备应返回当前所选配置的兼容 ID 和子不兼容 ID。 因此,在 USBCCGP 加载并选择特定配置后,变形设备需要对报告的兼容和次不兼容 ID 进行平滑化。 在选择配置后,变形设备不得报告用于加载 USBCCGP 的兼容和次兼容 ID。

usbhub 在枚举期间从设备查询 microsoft os 描述符。

USBHUB 在枚举期间从设备查询 Microsoft OS 描述符。

设备在未配置状态下返回兼容性。

设备返回处于未配置状态的 CompatId。 此 CompatId 用于加载 USBCCGP。

usbccgp 选择子兼容 ID 中报告的配置。

USBCCGP 选择子兼容 ID 中报告的配置。

设备根据新配置改变其 microsoft os 描述符。microsoft os 描述符的 usbccgp 查询。

设备根据新配置改变其 Microsoft OS 描述符。 Microsoft OS 描述符的 USBCCGP 查询。

device 不返回任何兼容性。usbccgp 基于类/子类/协议,加载 usbstor 和 mbcd。

设备不返回任何 CompatID。 根据类/子类/协议,USBCCGP 加载 USBSTOR 和 MBCD。