DSS による MB モデムのログ記録

Note

モデムで MBIM_CID_MODEM_LOGGING_CONFIG をサポートする予定の場合は、Microsoft が最適なサポートを行えるように、このページでフィードバックを提供してください。 この CID は現在試験段階であり、どのモデムもサポートしていないため、モデムを使用したテストはまだ行われていません。

このトピックでは、Windows 10 バージョン 1903 以降で使用できる、USB MBIM 1.0 仕様に対応する Microsoft 拡張機能を使用した、新しい標準の Windows モバイル ブロードバンド (MBB) ログ インターフェイスについて説明します。

この新しいログ インターフェイスを使用すると、OS は、MBIM CID コマンドを使用して OS ファイル システムにログを開始、停止、フラッシュするよう MBB デバイスに通知できます。 モデムのログ ペイロードに備わる IP 以外の性質を考えると、MBB サービスが OS にログ ペイロードを送信するために使用するデータ チャネルでは、MBB Data Service Stream (DSS) が使用されます。 DSS は、モバイル ブロードバンド インターフェイス モデル (MBIM) 1.0 仕様で定義されています。

OS は、Windows 固有のMBB ログ構成のセットを使用して、MBB エコシステム全体でモデムの診断機能と構成を抽象化します。 これらのMBB ログ構成により、モデムのベンダーは、OS MBB ログ要件を適切な内部ログ構成にマップできます。 OS によって抽象化および定義されるログ構成には、MBB ログの冗長レベルと最大フラッシュ時間が含まれます。

モデムは、セグメントがいっぱいになり、MBIM フレームワークがセグメントを OS に送信するか、最大フラッシュ時間に達したときに (セグメントがいっぱいになっていなくても) バッファーの内容をフラッシュするまで、ログ バッファーの充填を最大バッファー サイズになるまで続けます。 OS は、このトピックで後述する一連の標準的な Windows MBB ログ構成レベルを定義します。 各構成レベルでは、MBB ログの詳細と冗長について OS 抽象化を指定します。

MBB 構成レベルの OS 抽象化は、モデムによって適切な内部モデム構成にマップされます。 OS では、OS MBB 構成レベル以外のモデムに対して、ログ フィルターやマスクなどの追加の構成ペイロードは提供されません。

MBB ログをサポートするモデムの場合、MBIMLoggingLevelOem を除くすべての MBB ログ構成レベルが、すべての BSP バリアントに存在している必要があります。 つまり、IHV または OEM は、BSP の運用バージョンと R&D バージョンの両方で、PROD レベルまたは LAB レベルの MBB ログをサポートする必要があります。 LAB レベルの MBB ログを無効にできるのは、OS からのみです。

この新しいログ インターフェイスの設計では、コントロール チャネルを使用してログ パラメーターを設定し、データ チャネルを使用してモデム ログを受信します (データ チャネルは一括モデム データを転送するように設計されているため)。 この設計の利点は、一括データを制御チャネル経由で転送する必要がないため、デバイスのパフォーマンスの一貫性を保てることです。 また、スループットを向上させるために適切にスケーリングされます。 データ チャネルは DSS コマンドによって動作します。 モデムのフローの例は次のようになります。

  1. OS は、MBIM_CID_MODEM_LOGGING_CONFIG CID をモデムに送信して、MaxSegmentSize、MaxFlushTime、LoggingLevel などのログ パラメーターを構成します。
  2. OS は、モデムから正常な応答を受信すると、モデムのログ記録用の特定 GUID、MBIMDssLinkActivate 状態、および一意の DSS セッション ID を使用して、MBIM_CID_DSS_CONNECT DSS コマンドをモデムに送信します。
  3. OS は、成功状態コードを受け取ると、モデムからフラグメントを受信する準備をします。 これらのフラグメントは DataServiceSessionRead パケットと呼ばれます。
  4. DataServiceSessionRead パケットの受信は、OS が同じDSS セッション ID と MBIMDSSLinkDeactivate 状態を使用して別の MBIM_CID_DSS_CONNECT コマンドを発行するまで続きます。

モデムは新規作成されたデータ チャネルにログを書き込むと、MbbDeviceReceiveDeviceServiceSessionData を呼び出します。このデータは、WinRT レイヤーの MobileBroadbandDeviceService 経由でアプリに提供されます。 モデムのログは、ETW セッションにリダイレクトできる印刷可能な文字列データとして書式設定する必要があります。

モデムのログ記録データ パス

モデムのログ記録では MBIM Data Service Stream (DSS) を使用して、ペイロードのログ用にデータを転送します。 DSS の詳細については、MBIM 1.0 仕様のセクション 10.5.38 を参照してください。

DSS との接続時または切断時には、モデムのログ記録に次の GUID が使用されます。

GUID
ModemFileTransfer GUID 0EBB1CEB-AF2D-484D-8DF3-53BC51FD162C

次のフロー図は、DSS のセットアップとティアダウン プロセスを示しています。

DSS modem logging setup and tear down flow diagram.

NDIS インターフェイス拡張機能

次の OID は、モデムのログ記録をサポートするために、Windows 10 バージョン 1903 で定義されています。

MBIM サービスと CID の値

[サービス名] UUID UUID 値
Microsoft Basic IP Connectivity Extensions UUID_BASIC_CONNECT_EXTENSIONS 3d01dcc5-fef5-4d05-9d3a-bef7058e9aaf

次の表では、各 CID の UUID とコマンド コード、および CID が Set、Query、または Event (通知) 要求をサポートするかどうかの指定について説明します。 パラメーター、データ構造、および通知の詳細については、このトピック内の CID ごとの個々のセクションを参照してください。

CID UUID コマンド コード Set クエリ Notify
MBIM_CID_MODEM_LOGGING_CONFIG UUID_BASIC_CONNECT_EXTENSIONS TBD Y

MBIM_CID_MODEM_LOGGING_CONFIG

この CID を使用して、モデムによって収集されるログを構成し、そうしたログが DSS 経由でモデムからホストに送信される頻度も構成します。 ログ セッションが開始される前に、ログを構成する必要があります。 この CID は接続拡張機能の一部であるため、IHV がこの CID をサポートするのはオプションです。 IHV が DSS データ チャネル経由でモデムのログ記録をサポートする場合は、これを機能として指定する必要があります。 この機能は、MBIM_BASIC_CID_DEVICE_SERVICES CID を使用してアドバタイズできます。

パラメーター

操作 Set クエリ 通知
コマンド MBIM_MODEM_LOGGING_CONFIG 適用外 適用なし
回答 MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG MBIM_MODEM_LOGGING_CONFIG

クエリ

現在のモデムのログ構成についてクエリを実行します。 MBIM_COMMAND_MSG の InformationBuffer は使用されません。 次のMBIM_MODEM_LOGGING_CONFIG 構造体は、MBIM_COMMAND_DONE の InformationBuffer で使用されます。

MBIM_MODEM_LOGGING_CONFIG

オフセット サイズ フィールド タイプ 説明
0 4 バージョン UINT32 この構造体のバージョン番号。 この構造体のバージョン 1 の場合、このフィールドを 1 に設定する必要があります。
4 4 MaxSegmentSize UINT32 モデムによって送信される各フラグメントのセグメント サイズをキロバイト単位で指定します。 Device Service Command のモデムでサポートされている最大フラグメント サイズが設定値を超える場合、この値はサポートされる最大セグメント サイズに設定されます。
8 4 MaxFlushTime UINT32 ログ フラグメントを送信する前にモデムが待機する最大時間を示す時間 (ミリ秒単位)。 収集されたログが、最後に送信されたログ フラグメント以降の MaxFlushTime 期間内に MaxSegmentSize に達しない場合は、サイズに関係なくログ フラグメントが送信されます。 ログ データがない場合、通知は送信されません。 小さいフラッシュ時間を処理できないデバイスは、応答で処理できる時間を返します。 クエリまたはセットへの応答には、現在構成されている MaxFlushTime が含まれます。
12 4 LevelConfig MBIM_LOGGING_LEVEL_CONFIG ログを収集するレベルを構成します。 クエリまたはセットへの応答には、現在構成されている LevelConfig が含まれます。

Note

モデムは、要求された MaxSegmentSizeMaxFlushTimer で OS にログ データを提供できない場合、これらのパラメーターに対して独自の値を選択し、設定された応答または要求されていないイベントとして OS を更新できます。 MaxSegmentSize または MaxFlushTimer が変更されても、OS の動作は変わりません。OS は変更に関係なくデータ パケットを受信し、ファイルにダンプするためです。

上記の MBIM_MODEM_LOGGING_CONFIG 構造体では、次の MBIM_LOGGING_LEVEL_CONFIG 列挙型が使用されます。

Type 説明
MBIMLoggingLevelProd 0 製品版または運用版のユーザーからのテレメトリ収集を目的としています。 結果として得られるログはカプセルサイズにする必要があり、キー モデムまたは MBB 状態もしくは障害の情報のみを含みます。
MBIMLoggingLevelLabVerbose 1 成熟度の低いMBB 製品の開発を目的としています。 モデムの詳細なフル スタック キャプチャ。 結果として得られるモデム キャプチャによって、IHV は、ログ中にキャプチャを再生して完全に復旧できる必要があります。
MBIMLoggingLevelLabMedium 2 相対的な成熟度と安定性を備えたMBB 製品の検証とフィールド テストを目的としています。 詳細レベルと冗長性により、IHV エンジニアは、ほとんどのMBB 障害をトリアージするのに十分なデータ ポイントを得られます。
MBIMLoggingLevelLabLow 3 セルフホストレベルのログを目的としています。 フルスタック キャプチャ モデムの概要レベルのキャプチャ。 モデムの状態と OS の相互作用を強調表示レベルで理解できるようにします。
MBIMLoggingLevelOem 4 OEM と IHV の内部使用のために予約されています。

Set

set コマンドを使用して、モデムのログ記録のレベル、セグメント サイズ、最大フラッシュ時間を設定します。 InformationBuffer では、MBIM_MODEM_LOGGING_CONFIG 構造体が使用されます。

回答

MBIM_COMMAND_DONE の InformationBuffer には、MBIM_MODEM_LOGGING_CONFIG 構造体が含まれています。

要求されていないイベント

要求されていないイベントは、モデムが内部変更について OS に通知する必要があるシナリオではサポートされます。 現在、Windows 10 バージョン 1903 では、これらのシナリオは発生しません。

状態コード

この CID は、MBIM 仕様リビジョン 1.0 のセクション 9.4.5 で定義されている汎用状態コードのみを使用します。

非アクティブ時の DSS セッション動作

次の表では、非アクティブ状態のさまざまな段階で DSS セッションがどのように動作するかについて説明します。

シナリオ DSS セッション状態
システム スリープ、モデムのみのスリープ、リセット、回復 DSS セッションを開いたままにしておく
システムのシャットダウン、再起動、休止状態 DSS セッションの終了