MB 驱动程序堆叠、暂停和继续

概述

Microsoft 为移动宽带 (MBB) 设备提供一个内置类驱动程序,称为移动宽带类驱动程序 (MBCD) 。 此驱动程序基于移动宽带接口模型 (MBIM) 规范,该规范是 MBB 设备的接口, (也称为调制解调器,) 与 Windows 通信。 MBIM 规范基于 USB。 MBCD 支持通过名为 USB 设备仿真 (UDE) 的技术模拟 USB 的 USB 调制解调器和调制解调器。

MBCD 是一个微型端口驱动程序,它与网络驱动程序接口规范 (NDIS) 端口驱动程序相结合,形成单个函数驱动程序。 在 OSI 网络模型中,此驱动程序在逻辑上位于数据链接层 (第 2 层) 的上半部分。 网络协议驱动程序 (,例如逻辑位于网络层 (第 3 层的 IP) ,) 接收 (SDU) 段 (TCP) 或数据报的数据 (来自传输层 (第 4 层) 的 UDP) ,并通过调用 NDIS API 将数据) (PDU 作为数据包发送到数据链接层。 通常,NDIS 仅在必要时涉及微型端口驱动程序。


OSI 网络模型
协议数据单元 (PDU) 函数
主机
7 应用程序 数据 高级 API,包括资源共享和远程文件访问
6 呈现 网络服务和应用程序之间的数据转换,包括字符编码、数据压缩和加密
5 会话 管理通信会话,例如,以两个节点之间多次来回传输的形式进行连续信息交换
4 运输 Segment 在网络上的点之间可靠传输数据段,包括分段、确认和多路复用
媒体
3 网络 数据包 管理和构建多节点网络,包括地址映射、路由和流量控制
2 数据链接 Frame 在物理层连接的两个节点之间可靠地传输数据帧
1 物理 符号 通过物理介质传输和接收原始位流

网络层是网络协议驱动程序所在的位置,包括 NDIS 用户模式 I/O (NDISUIO) 协议驱动程序。 此驱动程序在 MBB 设备的控制和配置中发挥着重要作用。 请务必注意,从概念上讲,此层也是 TCP/IP 的 IP 部分所在的位置。 你可能会将这些视为兄弟姐妹。

WwanSvc 是主要负责控制调制解调器的服务,枚举其功能和配置。 WwanSvc 使用 WWAN OID 向 NDISUIO 发出命令,后者会将这些 OID 传递给 NDIS。 MBCD 微型端口驱动程序定义它支持的 OID,并在函数驱动程序初始化过程中将其提供给 NDIS。 因此,当 NDIS 从 NDISUIO 接收 OID 时,它将在必要时涉及微型端口。

来自应用程序 ((例如手机网络 UI) )的命令流如下所示:

应用程序 -> WwanSvc --- (OID) ---> NDISUIO ---- (OID) ---> NDIS ---- (OID) ---> MBCD --- (MBIM) ---> MBB 设备。

以上概述了控制路径所涉及的技术。 数据路径更为复杂,因为存在多种解决方案。 但是,我们可以将数据路径通用化为:

应用程序 -> TCP/IP -- (数据包) --> NDIS ---- (帧) ---> [驱动程序] ---> MBB 设备。

[驱动程序] 可能是旧版驱动程序、新式驱动程序或第三方 IHV 驱动程序。

驱动程序体系结构

旧的

旧版 MBIM 驱动程序体系结构示意图。

自 RS5 OSBuild 17763) 以来的当前 (

自 RS5 OSBuild 17763 以来的当前 MBIM 驱动程序体系结构示意图。

设备通电

MBIM 中设备通电过程的流程图。

设备关机

MBIM 中设备关机过程的流程图。

MBBCx 接口

MBIM 中的 MBBCx 接口示意图。

另请参阅

EvtMbbDeviceSendMBIMFragment

MbbRequestComplete

默认 NetAdapter 初始化

默认 NetAdapter 初始化过程的流程图。

另请参阅

MbbAdapterInitialize

其他 NetAdapter 初始化

其他 NetAdapter 初始化过程的流程图。

设备初始化

MBIM 中的设备初始化过程的流程图。

硬件实验室工具包 (HLK) 测试

请参阅 安装 HLK 的步骤

在 HLK Studio 中,连接到设备手机网络调制解调器驱动程序并运行测试: TestPowerStates

通过 netsh,我们可以运行 TestPowerStates HLK 测试列表。 有关使用 netsh 工具的详细信息,请参阅 netsh-mbnnetsh-mbn-test-installation

netsh mbn test feature=power testpath="C:\\data\\test\\bin" taefpath="C:\\data\\test\\bin"

此显示 HLK 测试结果的文件应在运行“netsh mbn test”命令的目录中生成: TestPowerStates.htm

手动测试

从休眠状态唤醒后自动连接 (S4)

  1. 确保在“手机网络设置”中选中“让 Windows 管理此连接”。
  2. 将 DUT 放入 S4。
  3. 唤醒 DUT。 验证它是否自动建立手机网络连接,并且用户是否能够浏览 Internet。

从休眠状态唤醒后手动连接手机网络 (S4)

  1. 拔下以太网并关闭 Wi-Fi,取消选中“手机网络设置”中的“让 Windows 管理此连接”。
  2. 在管理员 CMD 提示符下运行命令:shutdown -h
  3. 计算机将进入休眠状态。 超过 30 秒后,按计算机的电源按钮从休眠状态唤醒。 重新登录,打开“手机网络设置”,然后单击“连接到手机网络”。 手机网络应该可以连接,用户应该能够浏览 Internet。

从屏幕睡眠状态唤醒后自动连接

  1. 拔下以太网并 Wi-Fi 关闭的情况下,验证活动的手机网络连接。
  2. (可选步骤) 允许屏幕进入睡眠状态。 可以在“设置”-“系统”->>“电源”下将屏幕睡眠时间设置为 1 分钟,& 睡眠。 该设置不应设置为“从不”。
  3. 使用鼠标或键盘唤醒屏幕,然后重新登录。 手机网络应保持连接状态,用户应能够浏览 Internet,包括在 VAIL/WCOS 系统下。

日志分析

提示

  • 确保日志中包含必要的 ETW 提供程序,包括 MbbCx、NetAdapterCx、WwanSvc 和 NdisUio。
  • 首先检查设备电源状态 (Dx 状态) 和设备电源功能
  • 检查上面包含电源流的日志
  • OID 和指示对

示例日志

597454 [2]1020.115C::2018-08-31 01:05:12.669792000 [WwanService]INFO: CWwanDataExecutor::OnNdisNotification - current device power state 3 (WaitForDeviceD0AfterSleep 1 systemPowerState 0)
679337 [6]1020.115C::2018-08-31 01:07:36.343312200 [WwanService]INFO: CWwanManager::OnSystemPowerStateChange - system resuming from sleep (fWaitForDeviceD0AfterSleep 1)
2422155 [7]1020.1150::2018-08-31 01:07:37.878446100 [WwanService]INFO: CWwanDataExecutor::OnNdisNotification - current device power state 0 (WaitForDeviceD0AfterSleep 1 systemPowerState 1)
2437098 [3]1020.115C::2018-08-31 01:07:37.893061200 [WwanService]INFO: CWwanDeviceEnumerator::onDeviceRemoval: MBB device removed [9d33b700-d66d-4c0a-807f-6a328690dafa].
2678588 [5]1020.2E30::2018-08-31 01:07:40.765642800 [WwanService]INFO: CWwanDeviceEnumerator::onDeviceArrival: MBB device arrived [9d33b700-d66d-4c0a-807f-6a328690dafa]. Parent Interface = [00000000-0000-0000-0000-000000000000].
2679204 [6]1020.2E30::2018-08-31 01:07:40.766278700 [sys]Ref WwanprotGetD3ColdCapability:0x6a2 \DEVICE\{9D33B700-D66D-4C0A-807F-6A328690DAFA} 0x2
2679205 [6]1020.2E30::2018-08-31 01:07:40.766280200 [sys]Sending IRP_MN_QUERY_INTERFACE for interface GUID_D3COLD_SUPPORT_INTERFACE
2679211 [6]1020.2E30::2018-08-31 01:07:40.766287400 [sys]IRP_MN_QUERY_INTERFACE for interface GUID_D3COLD_SUPPORT_INTERFACE succeeded
2679212 [6]1020.2E30::2018-08-31 01:07:40.766289500 [sys]Successfully queried the D3 cold capability of device. D3ColdCapability = 0
2679213 [6]1020.2E30::2018-08-31 01:07:40.766290000 [sys]DeRef WwanprotGetD3ColdCapability:0x6a8 \DEVICE\{9D33B700-D66D-4C0A-807F-6A328690DAFA} 0x2
2679214 [6]1020.2E30::2018-08-31 01:07:40.766290500 [sys]Returning D3 cold capability as 0. Status = c0000225
2679219 [6]1020.2E30::2018-08-31 01:07:40.766294100 [WwanService]CWwanNetworkInterface::InitializeInterface: Getting D3 cold capability for interface 9d33b700-d66d-4c0a-807f-6a328690dafa failed [1168]
2679220 [6]1020.2E30::2018-08-31 01:07:40.766294600 [WwanService]CWwanNetworkInterface::InitializeInterface: fIsEmbedded:0x00000001(true) fIsD3ColdSupported:0x00000000(false)

另请参阅

UDE 体系结构

NDIS 6.20 简介

MBIM 概述

MBIM 合规性测试修订版 1.0

USB 设备的移动宽带实施指南

NetAdapterCx