MB プロトコル構成オプション (PCO) 操作
概要
プロトコル構成オプション (PCO) の目的は、パケット データ プロトコル (PDP) コンテキストのアクティブ化に関連付けられている外部ネットワーク プロトコル オプションを転送することです。 PCO 値の Windows NDIS 定義は、将来モデムとネットワークから完全な PCO 値を受け取るために、一般的に汎用的なものになっています。 ただし、Windows 10 バージョン 1709 以降、一部のモデムは演算子固有の PCO 要素のみを OS に渡すことができます。 このトピックでは、現在の演算子固有の PCO 実装に関する動作を定義します。
フロー
PCO 値がホストに渡されるシナリオは次のように 3 つあります。
- アクティブ化された接続に新しい PCO 値が到達した場合
- アプリまたはサービスがモデムからの最新の PCO 値に対してクエリを実行する場合
- 接続が初めてブリッジまたはアクティブ化され、PCO 値がモデムに既に存在する場合
最初のシナリオでは、モデムは、新しい PCO 値がネットワークから受信されるたびに、対応する PDN を表す適切な NDIS ポート番号を使用して、新しい PCO 値変更を示す NDIS_STATUS_WWAN_PCO_STATUS 通知を OS に送信する必要があります。 バッテリを不必要に消耗しないようにするには、「選択的中断とコネクト スタンバイによるモデムの動作」で説明されているように、モデムはノイズの多い通知を回避する必要があります。
2 番目のシナリオでは、アプリまたはサービスが、アクティブ化された PDN 接続でモデムからの PCO 値に対してクエリを実行する場合、ホストは、最新のキャッシュされた PCO 値を読み取るために、モデムに OID_WWAN_PCO のクエリ要求を送信します。
3 番目のシナリオでは、ホストで接続がアクティブ化またはブリッジされた場合に、ホストが要求したアクティブ化またはブリッジされた接続の PCO 値がモデムに既に存在している場合、モデムは NDIS_STATUS_WWAN_PCO_STATUS 通知を送信する必要があります。 通知は、PDN の対応する NDIS ポート番号から渡す必要があります。
このシナリオ フローを次の図で示します。
選択的中断とコネクト スタンバイによるモデムの動作
選択的中断が有効になっている場合、モデムはネットワークから PCO データ構造を受信するたびに OS に通知できます。 ただし、モデムでは、不要なデバイス ウェイクアップを回避する必要があります。 回避しないと、ネットワークからのノイズの多い PCO 通知によってデバイスが頻繁に起動し、不必要にバッテリが消耗してしまいます。
コネクト スタンバイが有効になっている場合、モデムはネットワークから PCO データ構造を受信しても OS に通知しません。その理由は、デバイスが起動されるだけでなく、必要のない OS の起動も発生するためです。 代わりに、モデムはデータ構造からの最新の PCO 要素をすべてキャッシュし、OS がコネクト スタンバイを終了したら OS に通知する必要があります。 MBIM モデムの場合は、すべての PCO データ構造をキャッシュし、ホストがサブスクライブした後にのみ PCO 通知を OS に送信する必要があります。 これが行われるのは、コネクト スタンバイから抜け出した後にシステム電源がフルパワーに戻ったときで、その際には MBIM_CID_DEVICE_SERVICE_SUBSCRIBE_LIST CID が使用されます。
PCO 値に基づいたモデムのリセット
ネットワークから受信した PCO 値に基づいて、モデムは次のシナリオでリセットされます。
- ユーザーは、ネットワークから PCO = 5 を受信した後、自己アクティブ化を完了しました。 新しい PCO 値 (3、0、または通信事業者アプリで認識できるもの) は OS に送信され、OS から通信事業者に渡されます。
- ユーザーは、PCO = 3 を受信した後、さらにクレジットをアカウントに追加しました。 新しい PCO 値 (0、または通信事業者アプリで認識できるもの) は OS に送信され、OS から通信事業者に渡されます。
ホストはリセット中のモデムを認識しないため、ホストからのアクティブ化された接続は非アクティブ化されず、モデムはリセット後にそれらの PDN との接続を自動的に再確立する必要があります。 接続を確立し、ネットワークから新しい着信 PCO 値を受信すると、モデムは要求されていない NDIS_STATUS_WWAN_PCO_STATUS 通知をホストに提供します。
次の図は、これらのシナリオのいずれかが発生した場合のモデムのリセット フローを示します。なお、MO の例として Verison Wireless を使用しています。
モデムへの NDIS インターフェイス
事業者ネットワークから受信したモデムの PCO 値の状況とペイロードに対するクエリの実行については、OID_WWAN_PCO を参照してください。 OID_WWAN_PCO は、NDIS_WWAN_PCO_STATUS 構造体を使用します。この構造体には、ネットワークからの PCO 情報ペイロードを表す WWAN_PCO_VALUE 構造体が含まれています。
モデムの現在の PCO 状態を OS に通知するためにモデム ミニポート ドライバーによって送信される状態通知については、NDIS_STATUS_WWAN_PCO_STATUS を参照してください。
モデムの MB CID
サービス = MBB_UUID_BASIC_CONNECT_EXT_CONSTANT
サービス UUID = 3d01dcc5-fef5-4d05-0d3a-bef7058e9aaf
次の CID が PCO に定義されています。
CID | コマンド コード | Minimum OS Version |
---|---|---|
MBIM_CID_PCO | 9 | Windows 10 Version 1709 |
MBIM_CID_PCO
このコマンドを使用して、通信事業者ネットワークからモデムにキャッシュされた PCO データに対するクエリを実行します。
クエリ
InformationBuffer には、関連するフィールドが SessionId のみの MBIM_PCO_VALUE が含まれています。 SessionId は将来使用するために予約されており、Windows 10 バージョン 1709 では常に 0 になります。 クエリの SessionId は、関数によって返される IP データ ストリームの PCO 値を示します。
Set
該当なし。
要求されていないイベント
要求されていないイベントには MBIM_PCO_VALUE が含まれており、アクティブ化された接続に新しい PCO 値が到達すると送信されます。
パラメーター
操作 | Set | クエリ | 通知 |
---|---|---|---|
コマンド | 適用なし | MBIM_PCO_VALUE | 適用なし |
回答 | 適用なし | MBIM_PCO_VALUE | MBIM_PCO_VALUE |
データ構造
MBIM_PCO_TYPE
Type | 値 | 説明 |
---|---|---|
MBIMPcoTypeComplete | 0 | 完全な PCO 構造体がネットワークから受信したとおりに渡されることを指定し、ヘッダーは、3GPP TS24.008 仕様で定義されている PCO 構造体のオクテット 3 のプロトコルを現実的に反映します。 |
MBIMPcoTypePartial | 1 | モデムがネットワークから受信した PCO 構造体のサブセットのみを渡すことを指定します。 ヘッダーは、3GPP TS24.008 仕様で定義されている PCO 構造体と一致しますが、オクテット 3 の "構成プロトコル" は無効の場合があります。 |
MBIM-PCO-TYPE
オフセット | サイズ | フィールド | タイプ | 説明 |
---|---|---|---|---|
0 | 4 | SessionId | UINT32 | クエリの SessionId は、関数によって返される IP データ ストリームの PCO 値を示します。 |
4 | 4 | PcoDataSize | UINT32 | PcoData の長さ (0 から 256 まで)。 クエリでは、この値は 0 になります。 |
8 | 4 | PcoDataType | UINT32 | PCO データ型。 詳細については、MBIM_PCO_TYPE を参照してください。 |
12 | PcoDataBuffer | DATABUFFER | 3GPP TS24.008 仕様の PCO 構造体。 |
状態コード
この CID では、汎用状態コードのみが使用されます。
Hardware Lab Kit (HLK) テスト
「HLK のインストール手順」を参照してください。
HLK では、Studio はデバイスの携帯ネットワーク モデム ドライバーに接続して、テスト (TestPowerStates) を実行します。