MB 無線状態
概要
このトピックでは、MB デバイスの無線電源状態の設定と読み取りに使用される操作について説明します。 これらの状態は、ソフトウェア (機内モード) またはハードウェア (適切なスイッチが存在する場合) を使用して制御できます。 このトピックでは、無線電源の状態を制御する方法、無線電源状態の機能をテストする方法、および無線電源状態の問題を調査する方法について説明します。
用語
システム無線状態 - システム無線状態はシステム全体の状態です。 機内モード状態を示す最も明白な指標です。 システム無線状態は、無線管理サービス (RmSvc) で管理されます。
無線マネージャー - RmSvc は、WlanRadioManager、BlueTooth、WwanRadioManager など、システム内のいくつかの RadioManager (MediaManager) を反復処理します。 WwanRadioManager(.lib) は、RmSvc.dll でホストされ、無線論理の wwan 側を管理します。 WwanRadioManager は、WWAN サービス (WwanSvc) RPC を使用して次の処理を行います。
- 携帯ネットワーク無線に対してクエリを実行して設定します。
- 機内モードの前後のフローを制御します。
無線インスタンス - 各 RadioManager には、複数の無線インスタンスを含めることができます。 たとえば、システムに携帯ネットワーク モデムが 2 つある場合、WwanRadioManager には 2 つの無線インスタンスを設定できます。 各無線インスタンスは抽象オブジェクトであり、1 つのハードウェア無線モジュールにマップする必要があります。 ほとんどの場合、各無線インスタンスは 1 つの携帯ネットワーク モデムにマップされます。
関連するサービスとドライバー
RmSvc.dll - 機内モードなど、システム全体の無線イベントを管理します。 また、WwanRadioManager を含むすべての無線マネージャーもホストします。
WwanSvc.dll - 携帯ネットワーク モデムは WwanSvc で管理されます。 そのため、コマンド (OID/CID) は WwanSvc 経由で発行されます。 RmSvc またはその他のコンポーネント (UI) からの外部要求は、WwanSvc RPC を介して携帯ネットワークの無線状態に対してクエリを実行するか、携帯ネットワークの無線状態を設定します。
MbbCx.sys - 特に D0 と Dx の移行間でデバイスの電源状態を管理するカーネルモード ドライバー。 一部のシステム セットアップでは、デバイスは Dx 状態への移行が許可され、必要な場合にのみ D0 への回復ができます。 MbbCx.sys は、D0 と Dx 以前の無線状態回復について論理と制御を管理します。
アーキテクチャ/フロー
WwanSvc からモデム ハードウェアへの無線制御
WwanSvc API 経由の SET 無線
デバイスの到着時の初期無線状態
MBIM_CID_RADIO_STATE
上の図に示されているように、機内モード操作で使用される CID は MBIM_CID_RADIO_STATE です。 この CID は、MB デバイスの無線電源状態に関する情報を設定または返します。
クエリ
MBIM_COMMAND_MSG の InformationBuffer は使用されません。 MBIM_RADIO_STATE_INFO は、MBIM_COMMAND_DONE の InformationBuffer で返されます。
Set
MBIM_COMMAND_MSG の InformationBuffer には、MBIM_SET_RADIO_STATE が含まれています。 MBIM_RADIO_STATE_INFO は、MBIM_COMMAND_DONE の InformationBuffer で返されます。
要求されていないイベント
Event InformationBuffer には、MBIM_RADIO_STATE_INFO 構造体が含まれています。
パラメーター
Set | クエリ | 通知 | |
---|---|---|---|
コマンド | MBIM_SET_RADIO_STATE | Empty | 該当なし |
回答 | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO | MBIM_RADIO_STATE_INFO |
データ構造
Set
オフセット | サイズ | フィールド | タイプ | 説明 |
---|---|---|---|---|
0 | 4 | RadioState | MBIM_RADIO_SWITCH_STATE | ソフトウェアで制御される無線状態を設定します。 次の表を参照してください。 |
MBIM_RADIO_SWITCH_STATE
型 | 値 |
---|---|
MBIMRadioOff | 0 |
MBIMRadioOn | 1 |
クエリ
InformationBuffer は null になり、InformationBufferLength は 0 になります。
回答
MBIM_RADIO_STATE_INFO
オフセット | サイズ | フィールド | タイプ | 説明 |
---|---|---|---|---|
0 | 4 | HwRadioState | MBIM_RADIO_SWITCH_STATE | W_DISABLE スイッチの状態。 デバイスが W_DISABLE スイッチを備えていない場合、この関数はこのフィールドに MBIMRadioOn を返す必要があります。 |
4 | 4 | SwRadioState | MBIM_RADIO_SWITCH_STATE | ソフトウェアで構成された無線状態。 |
通知
上記の MBIM_RADIO_STATE_INFO の表を参照してください。
状態コード
この CID では、汎用状態コードのみが使用されます。
テスト
携帯ネットワーク無線テスト
関数名 | 説明 |
---|---|
CellularRadioWinrtTest::VerifyCellularModemExistence | winrt api が携帯ネットワーク モデムと無線状態についてクエリを実行できることをアサートします |
CellularRadioWinrtTest::VerifyCellularRadioToggle | winrt api が各 wwan アダプターで無線状態を切り替えられることをアサートします |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOnAfterAPM | 機内モードを終了すると携帯ネットワークの無線状態が "オン" に回復することをアサートします |
CellularRadioRecoveryTest::VerifyCellularRadioRecoveryToOffAfterAPM | 機内モードを終了しても、携帯ネットワークの無線状態が "オフ" のままであることをアサートします |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossSvcRestart | 携帯ネットワークの無線状態は、WwanSvc 再起動全体で一貫性を保つことをアサートします |
CellularRadioRecoveryTest::VerifyCellularRadioAcrossDevNodePnp | 携帯ネットワークの無線状態がデバイスの到着/削除の間、常に一貫していることをアサートします |
CellularRadioTest.dll には、これらのテストが含まれています。
Hardware Lab Kit (HLK) テスト
「HLK のインストール手順」を参照してください。
HLK では、Studio はデバイスの携帯ネットワーク モデム ドライバーに接続して、次のテストを実行します。
または、netsh-mbn と netsh-mbn-test-installation で TestRadioStateHardware と TestRadioStateSoftware の HLK テストリストを実行することもできます。
netsh mbn test feature=radio testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"
HLK のテスト結果を示す 2 つのファイルは、'netsh mbn test' コマンドの実行元となったディレクトリ (TestRadioStateSoftware.htm
と TestRadioStateHardware.htm
) に生成されているはずです。
ログの収集とデコードは、MB 収集ログの手順で実行できます。
ログの分析
トレースのフィルター処理に役立つキーワード/regexp
OID_WWAN_RADIO_STATE
CWwanRadioInstance::OnSysRadioChange
CUIRadioManager::_SetSysRadio の入力
CUIRadioManager::_SetSysRadio の終了
CWwanRadioInstance::_SetSoftwareRadioState
[WwanRadioManager]
PostD0Entry: previousPowerState
CWwanRadioManager::OnSystemRadioStateChange(.)+sysradiostate
RMAPI(.)+OnSystemRadioStateChange
RMAPI(.)+OnSystemRadioStateChange
Wwan-svc(.)+radio
mbbcx(.)+radio
調査のヒント
- これがグローバル (システム全体) またはローカル (携帯ネットワークのみ) の無線の問題であるかどうかを特定します。
- デバイスの電源状態 (D0-Dx) と無線状態を区別します。 これらは異なる概念ですが、相関性は高いです。
- 必要な ETW プロバイダーがログに含まれていることを確認します。
- シナリオを使用して領域を絞り込みます。 例:
- 機内モードに関連している場合は、RmSvc と WwanRadioManager に焦点を当てます。
- D0<->Dx、休止状態、またはスリープ状態への移行に関連している場合は、MBBCx に焦点を当てます。
- UI の表示または状態の非同期に関連している場合は、WwanSvc から始めます。
WinRT API
Windows.Devices.Radios
Windows.Devices.Radios は、すべての無線マネージャーと無線インスタンスを管理する無線管理サービスで所有されています。 WWAN 側では、RadioKind は RadioKind::MobileBroadband です。
- GetRadiosAsync( )
- SetStateAsync( )
Windows.Networking.NetworkOperators
Windows.Networking.NetworkOperators ドキュメント ページ
無線管理のこの名前空間に役立つ唯一のユーティリティは、MobileBroadbandDeviceInformation.CurrentRadioState です。