Union 函数描述符
实现 UFD 的移动宽带设备具有 CDC 设备所需的设备类/子类/协议 2/0/0。 这可以防止 Windows 在设备上加载 USBCCGP。 有关 Windows 如何在复合设备上加载 USBCCGP 的信息,请参阅 [USB 通用父驱动程序(Usbccgp.sys)](/windows-hardware/drivers/usb-common-class-generic-parent-driver)。
若要允许 Windows 加载 USBCCGP,设备需要在未配置时报告 Microsoft 操作系统兼容 ID“CDC_WMC”。 检测“CDC_WMC”的兼容 ID 后,Windows 会加载 USBCCGP,USBCCGP 会将设备上的配置设置为 1。 然后,USBCCGP 将再次查询 Microsoft 操作系统兼容 ID。 然而,这一次,设备不应报告 Microsoft 操作系统兼容 ID “CDC_WMC”。 设备可能会报告 Microsoft 操作系统兼容的函数 ID,以支持所选配置。
USBHUB 在未配置设备时查询 Microsoft OS 描述符
设备使用“CDC_WMC”进行响应,这会导致 Windows 加载 USBCCGP
USBCCGP 选择设备上的配置方案 #1。
设备选择配置并改变兼容 ID 的列表。 设备可能包括 CompatID2,这是 Function2 所必需的。
加载后,USBCCGP 会再次查询 Microsoft OS 兼容的 ID。
设备报告其功能具有的任何兼容 ID。 然后,USBCCGP 将为设备中的每个函数创建子设备节点。
MBIM Backward-Compatible 函数
默认情况下,与 NCM 1.0 规范向后兼容的 MBIM 函数将作为 NCM 1.0 函数出现。 由 MBIM 向后兼容函数组成的移动宽带设备应报告 MBIM 函数的MICROSOFT OS 兼容 ID 为“MBIM”。 这允许 Windows 8 将 NCM 1.0 函数检测为 MBIM 函数,并将 MBCD 作为函数驱动程序加载。