概要
Microsoft では、モバイル ブロードバンド クラス ドライバー (MBCD) と呼ばれるモバイル ブロードバンド (MBB) デバイス用の受信トレイ クラス ドライバーを提供しています。 このドライバーは、モバイル ブロードバンド インターフェイス モデル (MBIM) 仕様に基づいており、MBB デバイス (モデムとも呼ばれます) と Windows との通信用インターフェイスです。 MBIM 仕様は USB に基づいています。 MBCD では、USB モデムと、USB デバイス エミュレーション (UDE) と呼ばれるテクノロジを使用して USB をエミュレートするモデムがサポートされます。
MBCD は、1 つの関数ドライバーを形成するネットワーク ドライバー インターフェイス仕様 (NDIS) ポート ドライバーと組み合わせたミニポート ドライバーです。 OSI ネットワーク モデルでは、このドライバーはデータ リンク層 (レイヤー 2) の上半分に論理的に配置されます。 ネットワーク層 (レイヤー 3) に論理的に配置されているネットワーク プロトコル ドライバー (IP など) は、トランスポート層 (レイヤー 4) からセグメント (TCP) またはデータグラム (UDP) のデータ (SDU) を受信し、NDIS API を呼び出してデータ リンク層にパケットとしてデータ (PDU) を送信します。 一般に、NDIS は必要な場合のみ、ミニポート ドライバーを含みます。
OSI ネットワーク モデル | ||||
レイヤー | プロトコル データ ユニット (PDU) | 機能 | ||
ホスト レイヤー |
7 | アプリケーション | データ | リソース共有やリモート ファイル アクセスを含む高度な API |
6 | プレゼンテーション | ネットワーク サービスとアプリケーション間のデータの変換 (文字エンコード、データ圧縮、暗号化を含む) | ||
5 | セッション | 通信セッションの管理 (2 つのノード間で複数回にわたって送受信を行う継続的な情報交換など) | ||
4 | トランスポート | セグメント | ネットワーク上のポイント間で行われる信頼性の高いデータ セグメントの伝送 (セグメント化、確認、多重化など) | |
メディア レイヤー |
3 | ネットワーク | パケット | マルチノード ネットワークの管理と構築 (アドレス マッピング、ルーティング、トラフィック制御を含む) |
2 | データ リンク | フレーム | 物理層で接続された 2 つのノード間で行われる信頼性の高いデータ フレームの伝送 | |
1 | 物理 | シンボル | 物理メディア経由の生ビット ストリームの伝送と受信 |
ネットワーク層は、NDIS ユーザーモード I/O (NDISUIO) プロトコル ドライバーなど、ネットワーク プロトコル ドライバーが存在する場所です。 このドライバーは、MBB デバイスの制御と構成において重要な役割を果たします。 このレイヤーが概念的には TCP/IP の IP 部分が存在する場所でもあることを心に留めておくことが大切です。 これらを兄弟と考えてもよいでしょう。
WwanSvc は、主にモデムの制御、その機能の列挙、その構成を行うサービスです。 WwanSvc では、WWAN OID を使用して NDISUIO にコマンドを発行すると、これらの OID が NDIS に渡されます。 MBCD ミニポート ドライバーは、サポートする OID を定義し、関数ドライバーの初期化の一部として NDIS にこれを提供します。 そのため、NDISUIO から OID を受信すると、NDIS には必要に応じてミニポートが含まれます。
アプリケーション (携帯ネットワーク UI など) からのコマンドのフローは、次のようになります。
アプリケーション -> WwanSvc ---(OID)---> NDISUIO ----(OID)---> NDIS ----(OID)---> MBCD ---(MBIM)---> MBB デバイス。
上記は、制御パスに関係しているテクノロジの概要です。 複数のソリューションが用意されているため、データ パスはより複雑です。 ただし、次のようにデータ パスを一般化できます。
アプリケーション -> TCP/IP --(パケット)--> NDIS ----(フレーム)---> [ドライバー] ---> MBB デバイス。
[ドライバー] は、レガシ ドライバー、新しい最新ドライバー、またはサード パーティの IHV ドライバーになる可能性があります。
ドライバーのアーキテクチャ
従来
現在 (RS5 OSBuild 17763 以降)
デバイスのパワーアップ
デバイスのパワーダウン
MBBCx インターフェイス
参照
既定の NetAdapter 初期化
参照
追加の NetAdapter の初期化
デバイスの初期化
Hardware Lab Kit (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 をスリープ解除します。 携帯ネットワーク接続が自動的に確立され、ユーザーがインターネットを閲覧できることを確認します。
休止状態 (S4) からスリープ解除後の携帯ネットワークの手動接続
- イーサネットが取り外されて Wi-Fi がオフになっている場合は、[携帯ネットワークの設定] で [Windows でこの接続を管理できるようにする] のチェックを外します。
- 管理者 CMD プロンプトで、shutdown -h コマンドを実行します。
- コンピューターが休止状態になります。 30 秒以上経過したら、コンピューターの電源ボタンを押して休止状態からスリープ解除します。 もう一度ログインして、[携帯ネットワークの設定] を開き、[携帯ネットワークへの接続] をクリックします。 携帯ネットワークは接続しており、ユーザーはインターネットを閲覧できるはずです。
画面スリープのスリープ解除後の自動接続
- イーサネットが取り外されて Wi-Fi がオフになっている状態で、アクティブな携帯ネットワーク接続を確認します。
- (省略可能な手順) 画面スリープを許可します。 [設定] -> [システム] -> [電源とスリープ] で、画面スリープを 1 分に設定します。 この設定は [Never] (行わない) に設定できません。
- マウスまたはキーボードを使用して画面をスリープ解除して、もう一度ログインします。 携帯ネットワークは接続された状態が維持され、ユーザーは VAIL/WCOS システム下を含め、インターネットを閲覧できるはずです。
ログ分析
ヒント
- MbbCx、NetAdapterCx、WwanSvc、NdisUio など、必要な ETW プロバイダーがログに含まれていることを確認します。
- デバイスの電源状態 (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)