MB 多重 SIM 卡作業
桌面多數據機多重執行程式支援
傳統上,非手機 Windows 裝置尚未針對多 SIM 卡數據機進行設定,因為它們的實體空間比手機少。 這可讓他們同時真正利用多個作用中的無線電,而不是讓一個數據機具有多個 SIM 卡,就像手機一樣;不過,由於企業中的 eSIM 和案例增加,非手機裝置上的多 SIM 卡支援需求已增加。
大部分典型的多 SIM 卡裝置都有雙重 SIM 卡插槽,但僅限於一個主要 SIM 卡支援資料,而另一個則只支援語音功能。 這類限制不存在於非手機電腦模型中,因為所有 SIM 卡都用於資料連線。
雖然此規格中定義的架構理論上可以支援未系結的數據機和 SIM 卡數目,但Windows 10版本 1703 和更新版本僅支援雙 SIM/單一主動 (DSSA) 案例端對端。
NDIS 數據機介面規格
現有的介面和功能間距
可以支援具有多個獨立數據機的雙 SIM 卡/雙主動功能,其中每個數據機都是個別的裝置,且完全獨立運作。 不過,這不在這份檔的範圍之外,而是著重于 WWAN 迷你埠數據機,該數據機能夠將多個同時行動資料堆疊呈現給主機。 本節會定義各種物件,並建立與多重 SIM 功能相關的所有 MB 檔中所使用的術語。
硬體中的進展導致裝置可以同時向多個行動資料網路進行註冊。 在這類裝置中,假設是平行執行的「多個行動資料堆疊實例」,每個實例都能夠維護註冊、監視訊號強度、執行交接並接聽傳入的頁面。 此「行動資料堆疊」的每個實例都會稱為本檔其餘部分的執行 程式 。 例如,在能夠同時維護兩個網路註冊的裝置中,數據機硬體會被視為有兩個執行程式。
執行程式是硬體的邏輯標記法,事實上可能是一個多工處理的單一硬體處理器。 確切的硬體詳細資料會視為廠商實作詳細資料,而且不在此規格的範圍內。 對於 NDIS 迷你埠驅動程式,執行程式會公開為 WWAN 迷你埠介面卡的多個實例。 針對 MBIM 數據機,執行程式是由列舉複合裝置上的多個 MBIM 函式表示。
下列兩個影像說明雙 SIM 卡數據機的邏輯檢視。 每個都顯示執行程式和 UICC 的可能組合。
執行程式內的行動資料堆疊大部分視為獨立式,除非執行程式執行者執行流量 (語音和/或資料) 的雙重待命數據機實作,可能會防止另一個執行程式維持註冊。
下圖說明雙待命數據機的邏輯檢視。 執行程式 0 上的流量是通話,會導致執行程式 1 失去註冊。
NDIS 6.7 中的 Windows 桌面數據機介面模型無法容納這類架構,因為它是以數個隱含假設為基礎:
- 此模型假設數據機內有單一執行程式。
- 此模型假設有單一 UICC 記憶卡直接與數據機硬體相關聯。
- UICC 會被視為單一應用程式 SIM 卡。
相反地,Windows Mobile 上的 Microsoft Radio Interface Layer (RIL) 介面會明確公開這些假設的多重性。 Windows Mobile 中的行動寬頻介面會公開透過個別迷你埠獨立註冊的能力,並假設裝置的一些基本設定已經透過 RIL 介面完成。 為了提供對等的功能,Windows Desktop 必須提供機制來探索執行程式和位置數目、獨立存取執行程式、定義執行程式與位置之間的對應,以及定義每個執行程式將使用的對應 UICC 記憶卡內的應用程式。
如需行動資料架構的詳細資訊,以及Windows 10 行動裝置版與桌面之間的差異,請參閱行動資料架構和實作。
主要物件和作業
下圖顯示數據機的抽象模型。
每個數據機都是透過全域唯一識別碼來識別 (GUID) ,並包含一組或多個執行程式,每個執行程式都可以在行動資料網路上獨立註冊。 每個執行程式都有相關聯的執行程式索引,整數,從第一個執行程式開頭為 0。 此外,數據機也會公開一或多個可能包含 UICC 卡的插槽。 假設位置數目大於或等於執行程式數目。 每個位置都有相關聯的索引,從 0 開始,以及與插槽中電源狀態和插槽可用性狀態相關的目前狀態,如果有任何) ,則 (。
為了維持與現有數據機的相容性,每個執行程式都會以單一位置的 UICC 記憶卡所提供的資訊運作。 執行程式與位置之間的關聯是由位置對應所定義,其會將每個執行程式對應至一個位置。
位置可能包含 UICC 卡片;每個卡片都包含一或多個 UICC 應用程式,例如 USIM、CSIM、ISIM 或其他電話語音和非電話語音應用程式,例如 PKCS#15 或 NFC 安全元素的全域平臺應用程式。 這些個別 UICC 應用程式的定址和使用是本檔未來規格和範圍外的主題。
數據機的 Windows 桌面 NDIS 介面的特性是交換 OID 和 NDIS 通知。 在大部分情況下,這些 OID 會導向至個別執行程式;不過,幾個命令和通知的範圍是數據機。
針對非 Windows Mobile 作業系統,多執行程式數據機會顯示為具有多個實體 WWAN 迷你埠實例的一部裝置。 每個實體迷你埠實例都代表可執行程式,可維護註冊為 NDIS 實例。 您可以在執行時間建立其他虛擬實例,以管理內容特定的封包資料和裝置服務會話。 執行程式特定的命令和通知會透過代表該執行程式的 WWAN 迷你埠 NDIS 實體實例交換。 數據機特定命令 (換句話說,不是執行程式特定) 的命令,而且其對應的通知可能會傳送至任何實體迷你埠實例或來自任何實體迷你埠實例。
下圖顯示執行程式特定命令和通知的差異 (第一個圖表) ,其中命令和通知會經過並來自相同的執行程式,以及數據機特定命令和通知 (第二個圖表) ,其中命令可能會通過任何執行程式,並且來自任何執行程式。
發出至迷你埠實例的所有 OID 集合或查詢要求都會針對與迷你埠實例相關聯的數據機和執行程式執行。 同樣地,從迷你埠實例傳送的所有未請求通知和未經請求的裝置服務事件都適用于與迷你埠實例相關聯的數據機和執行程式。 例如,來自迷你埠的未經要求NDIS_STATUS_WWAN_REGISTER_STATE或NDIS_STATUS_WWAN_PACKET_SERVICE通知,表示相關聯數據機的註冊 (或封包服務狀態) ,且僅與其他數據機 () 或其他執行程式的狀態無關, (s) 。
當裝置中有多個數據機和/或多個執行程式時,與該數據機和執行程式組合相關聯的實體迷你埠介面卡會發出與特定數據機和執行程式組合相關的非內容特定未要求通知。
同樣地,如果裝置有多個數據機和/或多個執行程式,則與特定數據機和執行程式組合相關聯的實體迷你埠介面卡實例可以接收與該數據機和執行程式相關的非內容特定 OID 查詢要求。 接收這類查詢要求的配接器會根據 OID 定義來處理它。 如果是迷你埠驅動程式選擇的,此查詢要求可以與與該數據機和執行程式相關聯的任何介面卡實例中的其他任何同進程 OID 集或查詢要求同時處理。 與相同數據機和執行程式相關聯的迷你埠配接器的所有實例都會回報該行動數據機和執行程式 (相同的狀態資訊,例如無線電電源狀態、註冊狀態、封包服務狀態等 ) 。
對於具有多個數據機和/或多個執行程式的裝置,與數據機和執行程式組合相關聯的實體迷你埠介面卡實例可以接收非內容特定的 OID 集合要求。 迷你埠驅動程式應追蹤這類要求的進度。 如果任何介面卡中有一個這類設定要求正在進行中且尚未完成,則第二個這類設定要求嘗試會 (至與相同數據機和執行程式相關聯的任何介面卡實例,) 在先前的要求完成之後排入佇列並處理。
Windows 10桌面 WMBCLASS 驅動程式遵循上一段所述的規格來處理此設定的要求競爭條件,但如果數據機在數據機層發生競爭條件,數據機應該遵循相同的指引,在 MBIM 函式上排入衝突的全裝置命令,如果它仍在處理連結至相同基礎裝置的另一個函式。
設定和查詢要求的 OID
若要查詢數據機中 (執行程式) 和位置的裝置數目,以及可能同時作用中的執行程式數目,主機會使用 OID_WWAN_SYS_CAPS。
若要查詢執行程式的功能,主機會使用 OID_WWAN_DEVICE_CAPS_EX。
若要定義系結至每個執行程式或查詢目前對應的位置,主機會使用 OID_WWAN_DEVICE_SLOT_MAPPINGS。
若要查詢數據機上特定位置的狀態,主機會使用 OID_WWAN_SLOT_INFO_STATUS。
個別裝置和個別執行程式命令
除了將執行程式概念新增至 Windows 10 1703 版和更新版本中的非 Windows 行動裝置,OID 現在分成兩個類別:每部裝置 OID 和個別執行程式 OID。 下表說明哪些 OID 屬於哪個類別。
個別裝置或個別執行程式 | OID 名稱 |
---|---|
每部裝置 | OID_WWAN_DRIVER_CAPS |
OID_WWAN_ENUMERATE_DEVICE_SERVICE_COMMANDS | |
OID_WWAN_ENUMERATE_DEVICE_SERVICES | |
OID_WWAN_PRESHUTDOWN | |
OID_WWAN_VENDOR_SPECIFIC | |
OID_WWAN_SYS_CAPS | |
OID_WWAN_DEVICE_SLOT_MAPPINGS | |
個別執行程式 | OID_WWAN_AUTH_CHALLENGE |
OID_WWAN_CONNECT | |
OID_WWAN_DEVICE_CAPS | |
OID_WWAN_DEVICE_CAPS_EX | |
OID_WWAN_DEVICE_SERVICE_COMMAND | |
OID_WWAN_DEVICE_SERVICE_SESSION | |
OID_WWAN_DEVICE_SERVICE_SESSION_WRITE | |
OID_WWAN_DEVICE_SERVICES | |
OID_WWAN_HOME_PROVIDER | |
OID_WWAN_NETWORK_IDLE_HINT | |
OID_WWAN_PACKET_SERVICE | |
OID_WWAN_PIN | |
OID_WWAN_PIN_EX | |
OID_WWAN_PIN_LIST | |
OID_WWAN_PREFERRED_MULTICARRIER_PROVIDERS | |
OID_WWAN_PREFERRED_PROVIDERS | |
OID_WWAN_PROVISIONED_CONTEXTS | |
OID_WWAN_RADIO_STATE | |
OID_WWAN_READY_INFO | |
OID_WWAN_REGISTER_STATE | |
OID_WWAN_SERVICE_ACTI加值稅ION | |
OID_WWAN_SIGNAL_STATE | |
OID_WWAN_SMS_CONFIGURATION | |
OID_WWAN_SMS_DELETE | |
OID_WWAN_SMS_READ | |
OID_WWAN_SMS_SEND | |
OID_WWAN_SMS_STATUS | |
OID_WWAN_SUBSCRIBE_DEVICE_SERVICE_EVENTS | |
OID_WWAN_USSD | |
OID_WWAN_VISIBLE_PROVIDERS | |
OID_WWAN_SLOT_INFO_STATUS |
注意
OID_WWAN_RADIO_STATE也已更新Windows 10 1703 版。 如需詳細資訊,請參閱OID_WWAN_RADIO_STATE。
多 SIM 卡作業的 MBIM 介面更新
針對非 Windows Mobile 作業系統,多執行程式數據機會顯示為具有多個 MBIM 功能的一個 USB 複合裝置。 每個 MBIM 函式都代表可維護註冊的執行程式。 執行程式特定的命令和通知會透過代表該執行程式的 MBIM 函式來交換,而數據機特定命令 (換句話說,不是執行程式特定的) ,而且其對應的通知可能會傳送至或來自屬於相同基礎 USB 複合裝置的任何 MBIM 函式。
所有發出至 MBIM 函式的 CID 集合或查詢要求都會針對與迷你埠實例相關聯的數據機和執行程式執行;同樣地,從 MBIM 函式傳送的所有未請求通知都適用于與 MBIM 函式相關聯的數據機和執行程式。 同樣地,從迷你埠實例傳送的所有未請求裝置服務事件都適用于與 MBIM 函式相關聯的數據機和執行程式。 例如,來自 MBIM 函式的未經要求MBIM_CID_REGISTER_STATE或MBIM_CID_PACKET_SERVICE通知只會指出相關聯數據機/執行程式的註冊或封包服務狀態,而且與其他數據機 () 或其他執行程式的狀態無關, (s) 。
當裝置中有多個數據機和/或多個執行程式時,與特定數據機和執行程式組合相關的非內容特定未要求通知,應該從與上述數據機和執行程式相關聯的 MBIM 函式發出。
在具有多個數據機和/或多個執行程式的裝置中,與特定數據機和執行程式相關的非內容特定 CID 查詢要求可能會發出給與該數據機和執行程式組合相關聯的 MBIM 函式。 接收這類查詢要求的函式應該根據 CID 定義來處理它。 如果是的話,數據機韌體選擇這類查詢要求可能會與任何其他 CID 集同時處理,或由與該數據機和執行程式相關聯的任何 MBIM 函式處理查詢要求。 與相同數據機相關聯的所有 MBIM 函式,除了它們所代表的執行程式之外,應該報告該行動電話數據機的相同狀態資訊。
當裝置中有多個數據機和/或多個執行程式時,與該數據機和執行程式相關聯的 MBIM 函式可能會發出非執行程式特定的 CID 集合要求。 數據機應追蹤整體這類要求的進度。 如果任何配接器中有一個這類集合要求正在進行中,但尚未完成,則第二個這類設定要求嘗試會 (至與相同數據機和執行程式相關聯的任何配接器實例,) 在先前的要求完成之後排入佇列並處理。
下圖說明兩個不同的數據機中 WWANSVC 與 MBIM 函式之間的資訊流程。
本節包含所定義裝置服務的詳細全數據機和個別執行程式 CID 描述。 定義會參考回現有的公用 MBIM1.0 規格。 MBIM 相容的裝置會在CID_MBIM_DEVICE_SERVICES查詢時實作並報告下列裝置服務。 現有的已知服務定義于 USB NCM MBIM 1.0 規格的 10.1 節中。 Microsoft 會擴充此專案以定義下列服務。
服務名稱 = 基本連線延伸模組
UUID = UUID_BASIC_CONNECT_EXTENSIONS
UUID 值 = 3d01dcc5-fef5-4d05-0d3abef7058e9aaf
以下是針對 UUID_MS_BasicConnect定義的 CID:
CID | 命令碼 | 最低 OS 版本 |
---|---|---|
MBIM_CID_MS_SYS_CAPS | 5 | Windows 10 (版本 1703) |
MBIM_CID_MS_DEVICE_CAPS_V2 | 6 | Windows 10 (版本 1703) |
MBIM_CID_MS_DEVICE_SLOT_MAPPINGS | 7 | Windows 10 (版本 1703) |
MBIM_CID_MS_SLOT_INFO_STATUS | 8 | Windows 10 (版本 1703) |
下列 CID 區段中的所有位移都會從 InformationBuffer MBIM_COMMAND_MSG的開頭計算。
MBIM_CID_MS_SYS_CAPS
Description
此 CID 會擷取數據機的相關資訊。 這可以在公開為 USB 函式的任何 MB 實例上傳送。
查詢
MBIM_COMMAND_MSG上的 InformationBuffer 包含回應資料作為MBIM_MS_SYS_CAPS_INFO。
集合
不適用。
未經請求的事件
不適用。
參數
作業 | 集合 | 查詢 | 通知 |
---|---|---|---|
命令 | 不適用 | 不適用 | 不適用 |
回應 | 不適用 | MBIM_MS_SYS_CAPS_INFO | 不適用 |
資料結構
查詢
InformationBuffer 應為 Null,且 InformationBufferLength 應為零。
集合
不適用。
回應
下列MBIM_SYS_CAPS_INFO結構應該用於 InformationBuffer 中。
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | NumberOfExecutors | UINT32 | 此數據機所報告的 MBB 實例數目 |
4 | 4 | NumberOfSlots | UINT32 | 此數據機上可用的實體 UICC 插槽數目 |
8 | 4 | 並行 | UINT32 | 可能同時作用中的 MBB 實例數目 |
12 | 8 | ModemId | UINT64 | 每個數據機的唯一 64 位識別碼 |
NumberOfExecutors欄位代表數據機在其目前設定中支援的執行程式數目。 這會直接對應到數據機支援的「子電話」堆疊數目。
NumberofSlots欄位代表數據機上實際存在的插槽數目。 每個回報的位置都必須能夠接收 UICC 記憶卡, (插槽本身可以是異質混合,視需要為迷你 SIM、micro SIM、nano SIM 或任何 ETSI 所定義的標準) 。 插槽數目必須等於或大於支援的執行程式數目。 「大於」布建允許使用非電話語音 UICC,例如安全性、NFC 等。
[ 並行] 欄位代表 (MBB 實例) 執行程式數目,這些實例可能同時作用中。 此範圍必須是 1 ≤ Concurrency ≤ NumberOfExecutors。 例如,雙待命數據機的並行度為 1,而雙作用中數據機的並行度為 2
[數據機識別碼] 欄位代表指定數據機硬體的唯一 64 位識別碼。 IHV 可以實作自己的邏輯,為每個數據機產生唯一的 64 位值;例如,雜湊其中一個 IMEI 數位、隨機產生 64 位數位等等。產生 64 位識別碼之後,它應該會在重新開機和 SIM 卡移除/插入之間保存。
狀態碼
此 CID 使用一般狀態碼 (請參閱 公用 USB MBIM 標準) 第 9.4.5 節中的狀態碼使用。
MBIM_CID_MS_DEVICE_CAPS_V2
Description
此 CID 會擷取與執行程式相關的功能資訊。 由於此 CID 是MBIM_CID_DEVICE_CAPS的延伸模組,因此這裡只會顯示公用 USB MBIM 標準第 10.5.1 節中所述的MBIM_CID_DEVICE_CAPS變更。
此 CID 會繼續為僅限查詢,並且會傳回MBIM_MS_DEVICE_CAPS_INFO_V2結構,以回應 MBIM 服務MSUUID_BASIC_CONNECT和 CID MBIM_CID_MS_DEVICE_CAPS_V2 MBIM_COMMAND_MSG。
參數
作業 | 集合 | 查詢 | 通知 |
---|---|---|---|
命令 | 不適用 | 不適用 | 不適用 |
回應 | 不適用 | MBIM_MS_DEVICE_CAPS_INFO_V2 | 不適用 |
資料結構
查詢
與公用 USB MBIM 標準的第 10.5.1.4 節相同。
集合
不適用。
回應
下列MBIM_DEVICE_CAPS_INFO_V2結構應用於 InformationBuffer。 相較于公用 USB MBIM 標準第 10.5.1 節中所定義的MBIM_CID_DEVICE_CAPS結構,下列結構具有名為 DeviceIndex的新欄位。 除非這裡另有說明,否則公用 USB MBIM 標準表格 10-14 中的欄位描述適用于這裡。
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | DeviceType | MBIM_DEVICE_TYPE | |
4 | 4 | CellularClass | MBIM_CELLULAR_CLASS | |
8 | 4 | VoiceClass | MBIM_VOICE_CLASS | |
12 | 4 | SimClass | MBIM_SIM_CLASS | 對於支援此 CID 的 MBIM 數據機,SimClass 一律會回報為 MBIMSimClassSimRemovable。 |
16 | 4 | DataClass | MBIM_DATA_CLASS | |
20 | 4 | SmsCaps | MBIM_SMS_CAPS | |
24 | 4 | ControlCaps | MBIM_CTRL_CAPS | |
28 | 4 | MaxSessions | UINT32 | |
32 | 4 | CustomDataClassOffset | OFFSET | |
36 | 4 | CustomDataClassSize | SIZE (0..22) | |
40 | 4 | DeviceIdOffset | OFFSET | |
44 | 4 | DeviceIdSize | SIZE (0..26) | |
48 | 4 | FirmwareInfoOffset | OFFSET | |
52 | 4 | FirmwareInfoSize | SIZE (0..60) | |
56 | 4 | HardwareInfoOffset | OFFSET | |
60 | 4 | HardwareInfoSize | SIZE (0..60) | |
64 | 4 | ExecutorIndex | UINT32 | 執行程式索引。 其範圍從 0 到 n-1 ,其中 n 是 MBIM 數據機中包含的 MBB 實例數目。 其值一律為常數,且與列舉順序無關。 |
68 | DataBuffer | DATABUFFER | 包含 CustomDataClass、 DeviceId、 FirmwareInfo和 HardwareInfo 成員的資料緩衝區。 |
狀態碼
此 CID 使用一般狀態碼 (請參閱公用 USB MBIM 標準) 9.4.5 節中的使用狀態碼。
MBIM_CID_MS_DEVICE_SLOT_MAPPINGS
Description
這個 CID 會設定或傳回裝置位置對應, (換句話說,執行程式位置對應) 。
查詢
不會使用 MBIM_COMMAND_MSG 上的 InformationBuffer。 MBIM_MS_DEVICE_SLOT_MAPPING_INFO會在 MBIM_COMMAND_DONE 的 InformationBuffer 中傳回。
集合
MBIM_COMMAND_MSG的 InformationBuffer 包含MBIM_MS_DEVICE_SLOT_MAPPING_INFO。 MBIM_MS_DEVICE_SLOT_MAPPING_INFO會在 MBIM_COMMAND_DONE 的 InformationBuffer 中傳回。 不論 Set CID 是否成功或失敗,回應中包含的MBIM_MS_DEVICE_SLOT_MAPPING_INFO都代表目前的裝置位置對應。
未經請求的事件
不適用。
參數
作業 | 集合 | 查詢 | 通知 |
---|---|---|---|
命令 | MBIM_MS_DEVICE_SLOT_MAPPING_INFO | 不適用 | 不適用 |
回應 | MBIM_MS_DEVICE_SLOT_MAPPING_INFO | MBIM_MS_DEVICE_SLOT_MAPPING_INFO | 不適用 |
資料結構
查詢
InformationBuffer 應為 Null,且 InformationBufferLength 應為零。
集合
下列MBIM_MS_DEVICE_SLOT_MAPPING_INFO結構應該用於 InformationBuffer 中。
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | MapCount (MC) | UINT32 | 對應數目,一律等於裝置/執行程式的數目。 |
4 | 8 * MC | SlotMapList | OL_PAIR_LIST | 此清單的第 i 對,其中 (0 < = i < = (MC-1) ) 會記錄目前對應至 i-th device/executor 之位置的索引。 配對中的第一個元素是 4 位元組欄位,其中位移為 DataBuffer,從這個MBIM_MS_DEVICE_SLOT_MAPPINGS_INFO 結構的開頭 (位移 0) 到 UINT32。 配對的第二個專案是記錄元素的 4 位元組大小。 由於位置索引的類型為 UINT32,因此配對中的第二個專案一律為 4。 |
4 + (8 * MC) | 4 * MC | DataBuffer | DATABUFFER | 包含 SlotMapList的資料緩衝區。 因為位置的大小是 4 個位元組,而 MC 等於位置索引的數目,所以 DataBuffer 的總大小是 4 * MC。 |
回應
Set 中使用的MBIM_MS_DEVICE_SLOT_MAPPING_INFO也會用於 Response 的 InformationBuffer 中。
狀態碼
狀態碼 | Description |
---|---|
MBIM_STATUS_BUSY | 作業失敗,因為裝置忙碌中。 如果函式中沒有任何明確的資訊可清除此條件,主機可以使用函式的後續動作 (,例如通知或命令完成,) 作為重試失敗作業的提示。 |
MBIM_STATUS_FAILURE | 作業失敗 (泛型失敗) 。 |
MBIM_STATUS_VOICE_CALL_IN_PROGRESS | 作業失敗,因為語音通話正在進行中。 |
MBIM_STATUS_INVALID_PARAMETERS | 作業失敗,因為不正確參數 (例如位置編號超出對應) 的範圍或重複的值。 |
MBIM_CID_MS_SLOT_INFO_STATUS
Description
如果有任何) ,這個 CID 會擷取指定 UICC 位置的高階匯總狀態,以及其中 (的卡片。 當其中一個位置的狀態變更時,也可以用來傳遞未經請求的通知。
查詢
MBIM_COMMAND_MSG的 InformationBuffer 包含MBIM_MS_SLOT_INFO_REQ結構。 MBIM_COMMAND_DONE訊息的 InformationBuffer 包含MBIM_MS_SLOT_INFO結構。
集合
不適用。
未經請求的事件
事件資訊Buffer 包含MBIM_MS_SLOT_INFO結構。 函式會在複合位置/卡片狀態變更時傳送此事件。
參數
作業 | 集合 | 查詢 | 通知 |
---|---|---|---|
命令 | 不適用 | MBIM_MS_SLOT_INFO_REQ | 不適用 |
回應 | 不適用 | MBIM_MS_SLOT_INFO | MBIM_MS_SLOT_INFO |
資料結構
查詢
下列MBIM_MS_SLOT_INFO_REQ結構應用於 InformationBuffer。
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | SlotIndex | UINT32 | 要查詢的位置索引。 |
集合
不適用。
回應
下列MBIM_MS_SLOT_INFO結構應用於 InformationBuffer。
Offset | 大小 | 欄位 | 類型 | 描述 |
---|---|---|---|---|
0 | 4 | SlotIndex | UINT32 | 位置的索引。 |
4 | 4 | 狀態 | MBIM_MS_UICC_SLOT_STATE | 如果適用,插槽和卡片的狀態 () 。 |
下列MBIM_MS_UICCSLOT_STATE結構描述位置的可能狀態。
狀態 | 值 | Description |
---|---|---|
UICCSlotStateUnknown | 0 | 數據機仍在初始化過程中,因此 SIM 插槽狀態不具決定性。 |
UICCSlotStateOffEmpty | 1 | UICC 插槽已關閉電源,而且沒有卡片存在。 實作,無法判斷插槽中已關閉電源的卡片是否存在,會將其狀態回報為 UICCSlotStateOff。 |
UICCSlotStateOff | 2 | UICC 插槽已關閉電源。 |
UICCSlotStateEmpty | 3 | UICC 插槽是空的, (沒有卡片) 。 |
UICCSlotStateNotReady | 4 | UICC 插槽已佔用並開啟電源,但卡片內的卡片尚未就緒。 |
UICCSlotStateActive | 5 | UICC 插槽已佔用,且其內的卡片已就緒。 |
UICCSlotStateError | 6 | UICC 插槽已佔用並開啟電源,但卡片處於錯誤狀態,且無法在下次重設之前使用。 |
UICCSlotStateActiveEsim | 7 | 插槽中的卡片是具有使用中設定檔的 eSIM,且已準備好接受命令。 |
UICCSlotStateActiveEsimNoProfiles | 8 | 插槽中的卡片是沒有設定檔的 eSIM, (或沒有作用中的設定檔) 且已準備好接受命令。 |
多 sim 卡裝置的MBIM_MS_UICCSLOT_STATE轉換指引
符合正確的 UICC 位置狀態轉換可確保 OS 會正確處理所有變更,並向使用者顯示正確的快顯通知。
針對 SIM 插入快 顯通知,OS 預期選取內嵌插槽 (SIM2/Slot 1) ,並在實體插槽中插入 SIM 卡時發生下列狀態轉換, (SIM1/Slot 0) 。
在 SIM 卡插入之前,插槽 0 的可能值 | 在 SIM 卡插入之後的插槽 0 可能值 |
---|---|
UICCSlotStateEmpty | UICCSlotStateActive |
UICCSlotStateOffEmpty |
|
針對 SIM 移除 快顯通知,OS 預期在從實體插槽移除 SIM1/Slot 0 (SIM1/Slot 0) 時選取實體插槽 (SIM1/Slot) 0,並選取下列狀態轉換。
SIM 移除前的插槽 0 可能值 | SIM 移除之後的插槽 0 可能值 |
---|---|
UICCSlotStateActive | UICCSlotStateEmpty |
|
UICCSlotStateOffEmpty |
狀態碼
此 CID 使用一般狀態碼 (請參閱公用 USB MBIM 標準) 第 9.4.5 節中的狀態碼使用。
個別執行程式和個別數據機 MBIM CID 的非 NDIS 對應
大部分的 MBIM CID 對應或與 NDIS OID 相關,但 Windows WMB 類別驅動程式使用的幾個命令沒有 NDIS 對應專案。 本節清楚說明這些命令是每一數據機還是個別執行程式。
個別裝置或個別執行程式 | CID 名稱 |
---|---|
每部裝置 | CID_MBIM_MSEMERGENCYMODE |
CID_MBIM_MSHOSTSHUTDOWN | |
個別執行程式 | CID_MBIM_MSIPADDRESSINFO |
CID_MBIM_MSNETWORKIDLEHINT | |
CID_MBIM_MULTICARRIER_CURRENT_CID_LIST |
雙 SIM 卡單一作用中
雙 SIM 卡單一作用中 (DSSA) 是Windows 10中完全支援的多重 SIM 運算形式。 DSSA 允許搭配數據機使用兩張 SIM 卡,但限制在任何指定時間只能使用一張 SIM 卡。
架構/流程
位置交換器行為
如果裝置支援 DSSA,在某些情況下,會透過通知快顯通知自動或提示使用者執行位置交換器。
全新體驗 (OOBE)
- 在 OOBE 期間,WwanSvc 可能會根據實體位置的狀態執行位置重新對應。 如果實體位置是空的,則會選取內嵌位置。 如果實體插槽有 SIM 卡,則會選取實體插槽。
SIM 卡移除
- 如果 SIM 卡已從實體位置中移除,而實體插槽是目前選取的位置,則會顯示快顯通知,詢問使用者是否要切換至內嵌位置。
- 如果使用者選取 [是],則會切換位置。
SIM 插入
- 如果透過 regkey 啟用自動切換:
- 如果在內嵌選取的插槽時,SIM 卡會插入實體位置,則此位置會自動切換至實體位置,並顯示快顯通知使用者有關切換的資訊。
- 快顯通知具有開啟設定頁面的按鈕。
- 如果透過 regkey 停用自動切換
- 如果在選取的插槽內嵌時將 SIM 卡插入實體位置,則會顯示快顯通知,詢問使用者是否要切換至實體位置。
- 如果使用者選取 [是],則會切換位置。
使用此登錄機碼來設定自動切換。 它預設不存在。
位置: HKLM\Software\Microsoft\Cellular\MVSettings\DeviceSpecific\CellUX
關鍵: EnableAutoSlotSwitch
類型: REG_DWORD
值: 1 |0 (預設值,已停用)
硬體實驗室套件 (HLK) 測試
請參閱 安裝 HLK 的步驟。
在 HLK Studio 中,連線到行動數據機驅動程式並執行測試: Win6_4.MB。Gsm。Data.TestSlot。 此測試包含下列四項測試:
測試名稱 | 描述 |
---|---|
QuerySlotMapping | 此測試會驗證測試可以成功查詢 devcie 位置對應。 |
SetSlotMapping | 此測試會驗證測試可以成功設定裝置位置對應。 |
QuerySlotInfo | 此測試會驗證測試可以成功查詢裝置位置資訊。 |
ValidateSlotInfoState | 此測試會根據 ReadyInfoState 驗證 UICC 位置狀態。 |
或者,您可以透過netsh-mbn和netsh-mbn-test-installation來執行TestSlot HLK 測試清單。
netsh mbn test feature=dssa testpath="C:\data\test\bin" taefpath="C:\data\test\bin" param="AccessString=internet"
此檔案顯示 HLK 測試結果應該已在執行 'netsh mbn test' 命令的目錄中產生: TestSlot.htm
。
Log Analysis
- 您可以使用下列指示收集及解碼記錄: MB 收集記錄
- 在TextAnalysisTool中開啟 .txt 檔案
- 載入 DSSA 篩選準則
以下是查詢和設定位置對應的範例記錄:
1619 [5]6C6C.0824::01/09/2020-10:57:17.118 [WwanDimCommon]QUERY OID_WWAN_DEVICE_CAPS_EX (e01012e), RequestId 11, Status 340001
1673 [5]6C6C.0824::01/09/2020-10:57:17.118 [WwanDimCommon]QUERY OID_WWAN_SYS_CAPS (e01012d), RequestId 21, Status 340001
2488 [5]6C6C.2738::01/09/2020-10:57:17.120 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_DEVICE_CAPS_EX (0x4004103f)
2520 [5]6C6C.2738::01/09/2020-10:57:17.120 [WwanDimCommon] SSERVICE_CAPS_MULTI_SIM : Supported
2669 [2]6C6C.2738::01/09/2020-10:57:17.121 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SYS_CAPS_INFO (0x4004102c)
2679 [2]6C6C.2738::01/09/2020-10:57:17.121 [WwanDimCommon] NumberOfExecutors 0x1
2680 [2]6C6C.2738::01/09/2020-10:57:17.121 [WwanDimCommon] NumberOfSlots 0x2
3497 [5]6C6C.0824::01/09/2020-10:57:17.125 [WwanDimCommon]QUERY OID_WWAN_SLOT_INFO_STATUS (e010130), RequestId 42, Status 340001
3502 [5]6C6C.0824::01/09/2020-10:57:17.125 [WwanDimCommon] Slot Index : 0
3531 [5]6C6C.0824::01/09/2020-10:57:17.126 [WwanDimCommon]QUERY OID_WWAN_SLOT_INFO_STATUS (e010130), RequestId 32, Status 340001
3536 [5]6C6C.0824::01/09/2020-10:57:17.126 [WwanDimCommon] Slot Index : 1
6356 [4]6C6C.2738::01/09/2020-10:57:17.133 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
6890 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
6912 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
6926 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
6934 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] SlotIndex : 0x0
6935 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] SlotState : WwanUiccSlotStateActive (0x5)
6955 [4]6C6C.2738::01/09/2020-10:57:17.134 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
7060 [7]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
7100 [6]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
7108 [6]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] SlotIndex : 0x1
7109 [6]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] SlotState : WwanUiccSlotStateActiveEsimNoProfile (0x8)
7140 [6]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
7177 [6]6C6C.2738::01/09/2020-10:57:17.135 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
8424 [4]6C6C.2738::01/09/2020-10:57:17.137 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
10616 [6]6C6C.2738::01/09/2020-10:57:17.145 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
12731 [4]6C6C.2738::01/09/2020-10:57:17.149 [WwanDimCommon]QUERY OID_WWAN_SYS_SLOTMAPPINGS (e01012f), RequestId 1e1, Status 340001
12991 [2]6C6C.2738::01/09/2020-10:57:17.150 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_DEVICE_SLOT_MAPPING_INFO (0x4004102d)
13003 [2]6C6C.2738::01/09/2020-10:57:17.150 [WwanDimCommon] Executor Index 0 is mapped to Uicc Slot Index 0
123489 [4]6C6C.2738::01/09/2020-10:57:24.048 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
128251 [2]6C6C.2738::01/09/2020-10:57:24.064 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
128317 [2]6C6C.2738::01/09/2020-10:57:24.064 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
128407 [7]6C6C.2738::01/09/2020-10:57:24.064 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
128445 [7]6C6C.2738::01/09/2020-10:57:24.065 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
129265 [5]6C6C.2738::01/09/2020-10:57:24.067 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
129292 [5]6C6C.2738::01/09/2020-10:57:24.067 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
130122 [7]6C6C.2738::01/09/2020-10:57:24.069 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
155583 [2]6C6C.2738::01/09/2020-10:57:26.637 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
159010 [7]6C6C.2738::01/09/2020-10:57:26.644 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
159034 [7]6C6C.2738::01/09/2020-10:57:26.644 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
161963 [7]6C6C.2738::01/09/2020-10:57:26.655 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
161986 [7]6C6C.2738::01/09/2020-10:57:26.655 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
162110 [2]6C6C.2738::01/09/2020-10:57:26.655 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
162355 [4]6C6C.2738::01/09/2020-10:57:26.656 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
162381 [6]6C6C.2738::01/09/2020-10:57:26.656 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
162441 [4]6C6C.2738::01/09/2020-10:57:26.656 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
194294 [6]6C6C.2738::01/09/2020-10:57:28.722 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200029 [0]6C6C.2738::01/09/2020-10:57:28.738 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200131 [4]6C6C.2738::01/09/2020-10:57:28.738 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200354 [7]6C6C.2738::01/09/2020-10:57:28.739 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200671 [6]6C6C.2738::01/09/2020-10:57:28.739 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200729 [7]6C6C.2738::01/09/2020-10:57:28.739 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
200864 [1]6C6C.2738::01/09/2020-10:57:28.740 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
201464 [0]6C6C.2738::01/09/2020-10:57:28.741 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
265128 [1]6C6C.2218::01/09/2020-10:57:32.150 [WwanDimCommon]SET OID_WWAN_SYS_SLOTMAPPINGS (e01012f), RequestId a6, Len 10, Status 340001
265133 [1]6C6C.2218::01/09/2020-10:57:32.150 [WwanDimCommon] SlotMapListHeader.ElementType : 0xe
265134 [1]6C6C.2218::01/09/2020-10:57:32.150 [WwanDimCommon] SlotMapListHeader.ElementCount : 0x1
265135 [1]6C6C.2218::01/09/2020-10:57:32.150 [WwanDimCommon] Executor Index 0 is mapped to Uicc Slot Index 1
265523 [6]6C6C.2738::01/09/2020-10:57:32.152 [WwanDimCommon] ReadyState : WwanReadyStateOff (0x0)
270760 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_DEVICE_SLOT_MAPPING_INFO (0x4004102d)
270770 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] Executor Index 0 is mapped to Uicc Slot Index 1
270799 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
270807 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] SlotIndex : 0x0
270808 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] SlotState : WwanUiccSlotStateEmpty (0x3)
270827 [5]6C6C.2738::01/09/2020-10:57:32.171 [WwanDimCommon] ReadyState : WwanReadyStateFailure (0x4)
271044 [5]6C6C.2738::01/09/2020-10:57:32.172 [WwanDimCommon] ReadyState : WwanReadyStateFailure (0x4)
271089 [5]6C6C.2738::01/09/2020-10:57:32.172 [WwanDimCommon] ReadyState : WwanReadyStateFailure (0x4)
271130 [5]6C6C.2738::01/09/2020-10:57:32.172 [WwanDimCommon] ReadyState : WwanReadyStateSimNotInserted (0x2)
274729 [7]6C6C.2738::01/09/2020-10:57:32.188 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
283027 [6]6C6C.2738::01/09/2020-10:57:32.211 [WwanDimCommon] ReadyState : WwanReadyStateSimNotInserted (0x2)
323130 [5]6C6C.2738::01/09/2020-10:57:32.352 [WwanDimCommon] ReadyState : WwanReadyStateNoEsimProfile (0x7)
403200 [0]6C6C.2738::01/09/2020-10:57:33.748 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
403208 [0]6C6C.2738::01/09/2020-10:57:33.748 [WwanDimCommon] SlotIndex : 0x0
403209 [0]6C6C.2738::01/09/2020-10:57:33.748 [WwanDimCommon] SlotState : WwanUiccSlotStateActive (0x5)
407008 [5]6C6C.33A8::01/09/2020-10:57:40.355 [WwanDimCommon]SET OID_WWAN_SYS_SLOTMAPPINGS (e01012f), RequestId 18f, Len 10, Status 340001
407015 [5]6C6C.33A8::01/09/2020-10:57:40.355 [WwanDimCommon] SlotMapListHeader.ElementType : 0xe
407017 [5]6C6C.33A8::01/09/2020-10:57:40.355 [WwanDimCommon] SlotMapListHeader.ElementCount : 0x1
407018 [5]6C6C.33A8::01/09/2020-10:57:40.355 [WwanDimCommon] Executor Index 0 is mapped to Uicc Slot Index 0
407079 [4]6C6C.2738::01/09/2020-10:57:40.355 [WwanDimCommon] ReadyState : WwanReadyStateOff (0x0)
409570 [2]6C6C.2738::01/09/2020-10:57:40.371 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_DEVICE_SLOT_MAPPING_INFO (0x4004102d)
409580 [2]6C6C.2738::01/09/2020-10:57:40.371 [WwanDimCommon] Executor Index 0 is mapped to Uicc Slot Index 0
409591 [5]6C6C.2738::01/09/2020-10:57:40.371 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
409600 [5]6C6C.2738::01/09/2020-10:57:40.371 [WwanDimCommon] SlotIndex : 0x1
409601 [5]6C6C.2738::01/09/2020-10:57:40.371 [WwanDimCommon] SlotState : WwanUiccSlotStateEmpty (0x3)
411302 [7]6C6C.2738::01/09/2020-10:57:40.385 [WwanDimCommon] ReadyState : WwanReadyStateSimNotInserted (0x2)
416851 [4]6C6C.2738::01/09/2020-10:57:40.510 [WwanDimCommon] StatusCode : NDIS_STATUS_WWAN_SLOT_INFO (0x4004102e)
416859 [4]6C6C.2738::01/09/2020-10:57:40.510 [WwanDimCommon] SlotIndex : 0x1
416860 [4]6C6C.2738::01/09/2020-10:57:40.510 [WwanDimCommon] SlotState : WwanUiccSlotStateActiveEsimNoProfile (0x8)
418613 [0]6C6C.2738::01/09/2020-10:57:42.632 [WwanDimCommon] ReadyState : WwanReadyStateOff (0x0)
434410 [4]6C6C.2738::01/09/2020-10:57:44.558 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
443914 [7]6C6C.2738::01/09/2020-10:57:44.593 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)
529138 [4]6C6C.2738::01/09/2020-10:57:45.270 [WwanDimCommon] ReadyState : WwanReadyStateInitialized (0x1)