DSS を使用した MB モデム のログ記録

モデムが MBIM_CID_MODEM_LOGGING_CONFIGをサポートすることを計画している場合は、このページでフィードバックを提供して、最適なサポートを提供してください。 この CID は現在試験段階であり、まだモデムでテストされていません。これは、モデムが現在このCIDをサポートしていないためです。

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

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

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

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

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

MBB ログをサポートするモデムの場合、MBIMLoggingLevelOem を除くすべての MBB ログ構成レベルが、すべての BSP バリアントに存在する必要があります。 言い換えると、IHV または OEM は、BSP の実稼働バージョンと R&D バージョンの両方で、PROD レベルまたは LAB レベルの MBB ログ記録をサポートする必要があります。 MBB ログ記録の LAB レベルは、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 価値
モデムファイル転送 GUID 0EBB1CEB-AF2D-484D-8DF3-53BC51FD162C

次のフロー図は、DSS のセットアップと破棄プロセスを示しています。

DSS モデム のログ記録のセットアップと破棄フローの図。

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

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

MBIM サービスと CID の値

サービス名 UUID(ユニバーサリー・ユニーク・アイデンティファイア) UUID 値
マイクロソフト基本IP接続拡張機能 UUID_BASIC_CONNECT_EXTENSIONS 3d01dcc5-fef5-4d05-9d3a-bef7058e9aaf

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

CID UUID(ユニバーサリー・ユニーク・アイデンティファイア) コマンド コード オン クエリ 通知
MBIM_CID_MODEM_LOGGING_CONFIG UUID_BASIC_CONNECT_EXTENSIONS 未定 Y Y Y

MBIM_CID_MODEM_LOGGING_CONFIG

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

パラメーター

オペレーション オン クエリ 通知
コマンド MBIMモデムロギング設定 該当なし 適用なし
[応答] 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 が含まれています。

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

上記のMBIM_MODEM_LOGGING_CONFIG構造体において、次のMBIM_LOGGING_LEVEL_CONFIG列挙体が使用されています。

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

オン

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 セッションが終了しました