概述
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 驱动程序。
驱动程序体系结构
旧的
自 RS5 OSBuild 17763) 以来的当前 (
设备通电
设备关机
MBBCx 接口
另请参阅
默认 NetAdapter 初始化
另请参阅
其他 NetAdapter 初始化
设备初始化
硬件实验室工具包 (HLK) 测试
请参阅 安装 HLK 的步骤。
在 HLK Studio 中,连接到设备手机网络调制解调器驱动程序并运行测试: TestPowerStates。
通过 netsh,我们可以运行 TestPowerStates HLK 测试列表。 有关使用 netsh 工具的详细信息,请参阅 netsh-mbn 和 netsh-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)
- 确保在“手机网络设置”中选中“让 Windows 管理此连接”。
- 将 DUT 放入 S4。
- 唤醒 DUT。 验证它是否自动建立手机网络连接,并且用户是否能够浏览 Internet。
从休眠状态唤醒后手动连接手机网络 (S4)
- 拔下以太网并关闭 Wi-Fi,取消选中“手机网络设置”中的“让 Windows 管理此连接”。
- 在管理员 CMD 提示符下运行命令:shutdown -h
- 计算机将进入休眠状态。 超过 30 秒后,按计算机的电源按钮从休眠状态唤醒。 重新登录,打开“手机网络设置”,然后单击“连接到手机网络”。 手机网络应该可以连接,用户应该能够浏览 Internet。
从屏幕睡眠状态唤醒后自动连接
- 拔下以太网并 Wi-Fi 关闭的情况下,验证活动的手机网络连接。
- (可选步骤) 允许屏幕进入睡眠状态。 可以在“设置”-“系统”->>“电源”下将屏幕睡眠时间设置为 1 分钟,& 睡眠。 该设置不应设置为“从不”。
- 使用鼠标或键盘唤醒屏幕,然后重新登录。 手机网络应保持连接状态,用户应能够浏览 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)