MB UICC 应用程序和文件系统访问权限
概述
本主题指定了移动宽带接口模型 (MBIM) 接口的扩展,以便允许访问 UICC 智能卡应用程序和文件系统。 MBIM 的这一扩展可对 UICC 的 ETSI TS 102 221 技术规范兼容的应用程序和文件系统进行逻辑访问,并受 Windows 10 版本 1903 及更高版本的支持。
UICC 访问和安全性
UICC 提供文件系统,并支持一系列可同时运行的应用程序。 其中包括用于 UMTS 的 USIM、用于 CDMA 的 CSIM 和用于 IMS 的 ISIM。 SIM 是 UICC 的一个旧部分,可作为这些应用程序 (GSM) 之一进行建模。
ETSI TS 102 221 技术规范第 8.1 节中的下图显示了一个卡应用程序结构的示例。
UICC 文件系统可被视为一个目录树。 旧 SIM 树植根于主文件 (MF),包含多达两级的子目录(专用文件或 DF),其中的元素文件 (EF) 保存着各种类型的信息。 SIM 在 MF 下定义了 DF,其中一个 DFTelecom 包含多种接入类型的通用信息,如公用电话簿。 其他应用程序实际上是作为单独的树来实现的,而每个树都根植于自己的应用程序目录文件 (ADF) 中。 每个 ADF 都由一个应用程序标识符进行标识,该标识符的长度可达 128 位。 卡根目录下的文件(图中 MF 下的 EFDir)包含应用程序名称和相应的标识符。 在树(MF 或 ADF)中,DF 和 EF 可以通过文件 ID 的路径来标识,其中文件 ID 是一个 16 位整数。
NDIS 接口扩展
为支持 UICC 应用程序和文件系统访问定义了以下 OID。
- OID_WWAN_UICC_APP_LIST
- OID_WWAN_UICC_FILE_STATUS
- OID_WWAN_UICC_ACCESS_BINARY
- OID_WWAN_UICC_ACCESS_RECORD
- OID_WWAN_PIN_EX2
MBIM 服务和 CID 值
服务名称 | UUID | UUID 值 |
---|---|---|
Microsoft 低级别 UICC 访问 | UUID_MS_UICC_LOW_LEVEL | C2F6588E-F037-4BC9-8665-F4D44BD09367 |
Microsoft 基本 IP 连接扩展 | UUID_BASIC_CONNECT_EXTENSIONS | 3D01DCC5-FEF5-4D05-9D3A-BEF7058E9AAF |
下表指定了每个 CID 的 UUID 和命令代码,以及 CID 是否支持设置、查询或事件(通知)请求。 有关参数、数据结构和通知的详细信息,请参阅本主题中每个 CID 的各个部分。
CID | UUID | 命令代码 | 设置 | 查询 | Notify |
---|---|---|---|---|---|
MBIM_CID_MS_UICC_APP_LIST | UUID_MS_UICC_LOW_LEVEL | 7 | N | Y | N |
MBIM_CID_MS_UICC_FILE_STATUS | UUID_MS_UICC_LOW_LEVEL | 8 | N | Y | N |
MBIM_CID_MS_UICC_ACCESS_BINARY | UUID_MS_UICC_LOW_LEVEL | 9 | Y | Y | N |
MBIM_CID_MS_UICC_ACCESS_RECORD | UUID_MS_UICC_LOW_LEVEL | 10 | Y | Y | N |
MBIM_CID_MS_PIN_EX | UUID_BASIC_CONNECT_EXTENSIONS | 14 | Y | Y | N |
MBIM_CID_MS_UICC_APP_LIST
此 CID 可检索 UICC 中的应用程序列表及其相关信息。 当调制解调器中的 UICC 已完全初始化并准备好向移动运营商注册时,必须选择一个 UICC 应用程序进行注册,并使用此 CID 进行的查询应在 MBIM_UICC_APP_LIST 结构的 ActiveAppIndex 字段中返回所选的应用程序。
参数
操作 | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | 空 | 不适用 |
响应 | 不适用 | MBIM_UICC_APP_LIST | 不适用 |
查询
MBIM_COMMAND_MSG 的 InformationBuffer 为空。
设置
不适用。
响应
MBIM_COMMAND_DONE 中的 InformationBuffer 包含以下 MBIM_UICC_APP_LIST 结构。
MBIM_UICC_APP_LIST(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于此结构的版本 1,此字段必须设置为 1。 |
4 | 4 | AppCount | UINT32 | 此响应中返回的 UICC 应用程序 MBIM_UICC_APP_INFO 结构的数量。 |
8 | 4 | ActiveAppIndex | UINT32(0..NumApp - 1) | 调制解调器在移动网络注册时选择的应用程序索引。 此字段必须介于 0 和 AppCount - 1 之间。 它将索引到此响应返回的应用程序数组。 如果未选择注册任何应用程序,则此字段包含 0xFFFFFFFF。 |
12 | 4 | AppListSize | UINT32 | 应用列表数据的大小,以字节为单位。 |
8*AppCount | AppList | OL_PAIR_LIST | 数据对的第一个元素是一个 4 字节字段,其中包含 DataBuffer 中应用程序信息的偏移量。 数据对的第二个元素是一个 4 字节字段,其中包含应用程序信息的大小。 | |
AppListSize | DataBuffer | DATABUFFER | 一个包含 AppCount * MBIM_UICC_APP_INFO 结构的数组。 |
MBIM_UICC_APP_INFO
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | AppType | MBIM_UICC_APP_TYPE | UICC 应用程序的类型。 |
4 | 4 | AppIdOffset | OFFSET | 数据库缓冲区中应用程序 ID 的偏移量。 只有第一个 AppIdSize 字节有意义。 如果应用程序 ID 长于 MBIM_MAXLENGTH_APPID 字节,那么 AppIdSize 将指定实际长度,但该字段中只有第一个 MBIM_MAXLENGTH_APPID 字节。 此字段仅在 AppType 不是 MBIMUiccAppTypeMf、MBIMUiccAppTypeMfSIM 或 MBIMUiccAppTypeMfRUIM 时有效。 |
8 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 AppIdSize 可能包含一个大于 16 的数字,但在这种情况下,数据库缓冲区中只有前 16 个 (MBIM_MAXLENGTH_APPID) 字节。 对于 MBIMUiccAppTypeMf、MBIMUiccAppTypeMfSIM 或 MBIMUiccAppTypeMfRUIM 应用类型,此字段设置为 0。 |
12 | AppNameOffset | OFFSET | 数据库缓冲区中应用程序名称的偏移量。 一个指定应用程序名称的 UTF-8 字符串。 此字段的长度由 AppNameLength 指定。 如果长度大于或等于 MBIM_MAXLENGTH_APPNAME 字节,则此字段包含名称的第一个 MBIM_MAXLENGTH_APPNAME - 1 字节。 字符串始终以 NULL 结束。 | |
16 | 4 | AppNameLength | SIZE (0..256) | 应用程序名称的长度(以字节为单位)。 AppNameLength 可能包含一个等于或大于 256 的数字,但在这种情况下,数据库缓冲区中只有前 255 个 (MBIM_MAXLENGTH_APPNAME - 1) 字节。 |
20 | 4 | NumPinKeyRefs | SIZE (0..8) | 应用程序 PIN 密钥的引用次数。 换句话说,PinKeyRef 中有效元素的数量。 虚拟 R-UIM 上的应用程序没有 PIN 密钥引用。 |
24 | 4 | KeyRefOffset | OFFSET | DataBuffer 中 PinKeyRef 的偏移量。 根据 ETSI TS 102 221 技术规范表 9.3 和第 9.4.2 节的定义,PinKeyRef 是一个字节数组,用于指定不同验证级别的应用程序 PIN 密钥参考(PIN1、PIN2 和通用 PIN 的密钥)。 如 ETSI TS 102 221 第 9.5.1 节所述,在单验证卡或 MBB 驱动器和/或调制解调器不支持不同应用使用不同应用密钥的情况下,PinKeyRef 字段的第一个字节必须为 0x01 (PIN1),第二个字节必须为 0x81 (PIN2)。 |
28 | 4 | KeyRefSize | SIZE (0..8) | PinKeyRef 的大小。 |
32 | DataBuffer | DATABUFFER | 包含单验证卡的 AppId、AppName 和 PinKeyRef 的数据缓冲区,或者不支持针对不同应用程序使用不同应用程序密钥的 MBB 驱动程序和/或调制解调器,此字段必须为 0x01。 |
MBIM_UICC_APP_TYPE
类型 | 值 | 说明 |
---|---|---|
MBIMUiccAppTypeUnknown | 0 | 未知类型。 |
MBIMUiccAppTypeMf | 1 | 根植于 MF 的旧 SIM 目录。 |
MBIMUiccAppTypeMfSIM | 2 | 根植于 DF_GSM 的旧 SIM 目录。 |
MBIMUiccAppTypeMfRUIM | 3 | 根植于 DF_CDMA 的旧 SIM 目录。 |
MBIMUiccAppTypeUSIM | 4 | USIM 应用程序。 |
MBIMUiccAppTypeCSIM | 5 | CSIM 应用程序。 |
MBIMUiccAppTypeISIM | 6 | ISIM 应用程序。 |
常量
为 MBIM_CID_MS_UICC_APP_INFO 定义了以下常量。
const int MBIM_MAXLENGTH_APPID = 32
const int MBIM_MAXLENGTH_APPNAME = 256
const int MBIM_MAXNUM_PINREF = 8
未经请求的事件
不适用。
状态代码
适用的状态代码如下:
状态代码 | 说明 |
---|---|
MBIM_STATUS_SUCCESS | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_BUSY | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_FAILURE | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_NO_DEVICE_SUPPORT | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_SIM_NOT_INSERTED | 由于 UICC 缺失,无法执行 UICC 操作。 |
MBIM_STATUS_BAD_SIM | 由于 UICC 处于错误状态,无法执行 UICC 操作。 |
MBIM_STATUS_NOT_INITIALIZED | 由于 UICC 尚未完全初始化,因此无法执行 UICC 操作。 |
MBIM_CID_MS_UICC_FILE_STATUS
此 CID 可检索指定 UICC 文件的相关信息。
参数
操作 | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | MBIM_UICC_FILE_PATH | 不适用 |
响应 | 不适用 | MBIM_UICC_FILE_STATUS | 不适用 |
查询
MBIM_COMMAND_MSG 的 InformationBuffer 包含作为 MBIM_UICC_FILE_PATH 结构的目标 EF。
MBIM_UICC_FILE_PATH(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于本结构的版本 1,此字段必须为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0)。 |
12 | 4 | FilePathOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的文件路径的偏移量(以字节为单位)。 文件路径是一个由 16 位文件 ID 组成的数组。 第一个 ID 必须是 0x7FFF 或 0x3F00。 如果第一个 ID 是 0x7FFF,则路径相对于 AppId 所指定应用程序的 ADF。 否则,它就是一个从 MF 开始的绝对路径。 |
16 | 4 | FilePathSize | SIZE (0..8) | 文件路径的大小(以字节为单位)。 |
20 | DataBuffer | DATABUFFER | 包含 AppId 和 FilePath 的数据缓冲区。 |
设置
不适用。
响应
以下 MBIM_UICC_FILE_STATUS 结构用于 InformationBuffer。
MBIM_UICC_FILE_STATUS(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于本结构的版本 1,此字段必须为 1。 |
4 | 4 | StatusWord1 | UINT32(0..256) | 特定于 UICC 命令的返回参数。 |
8 | 4 | StatusWord2 | UINT32(0..256) | 特定于 UICC 命令的返回参数。 |
12 | 4 | FileAccessibility | MBIM_UICC_FILE_ACCESSIBILITY | UICC 文件的可访问性。 |
16 | 4 | FileType | MBIM_UICC_FILE_TYPE | UICC 文件类型。 |
20 | 4 | FileStructure | MBIM_UICC_FILE_STRUCTURE | UICC 文件结构。 |
24 | 4 | ItemCount | UINT32 | UICC 文件中的项目数。 对于透明文件和 TLV 文件,这被设置为 1。 |
28 | 4 | 大小 | UINT32 | 每个项目的大小(以字节为单位)。 对于透明或 TLV 文件,这是整个 EF 的大小。 对于基于记录的文件,这表示记录总数。 |
32 | 16 | FileLockStatus | MBIM_PIN_TYPE_EX[4] | 一个 MBIM_PIN_TYPE_EX 类型的数组,用于描述该文件上每种操作(依次为 READ、UPDATE、ACTIVATE 和 DEACTIVATE)的访问条件。 |
MBIM_UICC_FILE_ACCESSIBILITY
MBIM_UICC_FILE_ACCESSIBILITY 枚举用于前面的 MBIM_UICC_FILE_STATUS 结构。
类型 | 值 | 说明 |
---|---|---|
MBIMUiccFileAccessibilityUnknown | 0 | 文件共享性未知。 |
MBIMUiccFileAccessibilityNotShareable | 1 | 不可共享的文件。 |
MBIMUiccFileAccessibilityShareable | 2 | 可共享的文件。 |
MBIM_UICC_FILE_TYPE
MBIM_UICC_FILE_TYPE 枚举用于前面的 MBIM_UICC_FILE_STATUS 结构。
类型 | 值 | 说明 |
---|---|---|
MBIMUiccFileTypeUnknown | 0 | 文件类型未知。 |
MBIMUiccFileTypeWorkingEf | 1 | 工作 EF。 |
MBIMUiccFileTypeInternalEf | 2 | 内部 EF。 |
MBIMUiccFileTypeDfOrAdf | 3 | 专用文件,是其他节点的父节点的目录。 这可能是 DF 或 ADF。 |
MBIM_UICC_FILE_STRUCTURE
MBIM_UICC_FILE_STRUCTURE 枚举用于前面的 MBIM_UICC_FILE_STATUS 结构。
类型 | 值 | 说明 |
---|---|---|
MBIMUiccFileStructureUnknown | 0 | 未知的文件结构。 |
MBIMUiccFileStructureTransparent | 1 | 长度可变的单条记录。 |
MBIMUiccFileStructureCyclic | 2 | 一组循环记录,每条记录长度相同。 |
MBIMUiccFileStructureLinear | 3 | 一组线性记录,每条记录长度相同。 |
MBIMUiccFileStructureBerTLV | 4 | 可通过标签访问的一组数据值。 |
MBIM_PIN_TYPE_EX
MBIM_PIN_TYPE_EX 枚举用于前面的 MBIM_UICC_FILE_STATUS 结构。
类型 | 值 | 说明 |
---|---|---|
MBIMPinTypeNone | 0 | 没有 PIN 待输入。 |
MBIMPinTypeCustom | 1 | PIN 类型是自定义类型,并非本枚举中列出的其他 PIN 类型。 |
MBIMPinTypePin1 | 2 | PIN1 密钥。 |
MBIMPinTypePin2 | 3 | PIN2 密钥。 |
MBIMPinTypeDeviceSimPin | 4 | 设备到 SIM 密钥。 |
MBIMPinTypeDeviceFirstSimPin | 5 | 设备到第一个 SIM 密钥。 |
MBIMPinTypeNetworkPin | 6 | 网络个性化密钥。 |
MBIMPinTypeNetworkSubsetPin | 7 | 网络子集个性化密钥。 |
MBIMPinTypeServiceProviderPin | 8 | 服务提供商 (SP) 个性化密钥。 |
MBIMPinTypeCorporatePin | 9 | 企业个性化钥匙。 |
MBIMPinTypeSubsidyLock | 10 | 补贴解锁密钥。 |
MBIMPinTypePuk1 | 11 | 个人身份识别号码 1 解锁密钥 (PUK1)。 |
MBIMPinTypePuk2 | 12 | 个人身份识别号码 2 解锁密钥 (PUK2)。 |
MBIMPinTypeDeviceFirstSimPuk | 13 | 设备的第一个 SIM PIN 解锁密钥。 |
MBIMPinTypeNetworkPuk | 14 | 网络个性化解锁钥匙。 |
MBIMPinTypeNetworkSubsetPuk | 15 | 网络子集个性化解锁密钥。 |
MBIMPinTypeServiceProviderPuk | 16 | 服务提供商 (SP) 个性化解锁密钥。 |
MBIMPinTypeCorporatePuk | 17 | 企业个性化解锁密钥。 |
MBIMPinTypeNev | 18 | NEV 密钥。 |
MBIMPinTypeAdm | 19 | 管理密钥。 |
未经请求的事件
不适用。
状态代码
适用的状态代码如下:
状态代码 | 说明 |
---|---|
MBIM_STATUS_BUSY | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_FAILURE | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_SIM_NOT_INSERTED | 由于 UICC 缺失,无法执行 UICC 操作。 |
MBIM_STATUS_BAD_SIM | 由于 UICC 处于错误状态,无法执行 UICC 操作。 |
MBIM_STATUS_SHAREABILITY_CONDITION_ERROR | 无法选择文件,因为该文件不可共享,且当前正被其他应用程序访问。 SIM 返回的状态字为 6985。 |
MBIM_CID_MS_UICC_ACCESS_BINARY
此 CID 发送访问 UICC 二进制文件的特定命令,其结构类型为 MBIMUiccFileStructureTransparent 或 MBIMUiccFileStructureBerTLV。
参数
操作 | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | MBIM_UICC_ACCESS_BINARY | 不适用 |
响应 | 不适用 | MBIM_UICC_RESPONSE | 不适用 |
查询
读取二进制文件。 MBIM_COMMAND_MSG 的 InformationBuffer 包含一个 MBIM_UICC_ACCESS_BINARY 结构。 MBIM_COMMAND_DONE 的 InformationBuffer 中会返回一个 MBIM_UICC_RESPONSE 结构。
MBIM_UICC_ACCESS_BINARY(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于此结构的版本 1,此字段必须设置为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从本结构的开头到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0)。 |
12 | 4 | FilePathOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的文件路径的偏移量(以字节为单位)。 文件路径是一个由 16 位文件 ID 组成的数组。 第一个 ID 必须是 0x7FFF 或 0x3F00。 如果第一个 ID 是 0x7FFF,则路径相对于 AppId 所指定应用程序的 ADF。 否则,它就是一个从 MF 开始的绝对路径。 |
16 | 4 | FilePathSize | SIZE | 文件路径的大小(以字节为单位)。 |
20 | 4 | FileOffset | UINT32 | 读取文件时使用的偏移量。 此字段可以大于 256,它结合了 ETSI TS 102 221 技术规范中定义的高偏移量和低偏移量。 |
24 | 4 | NumberOfBytes | UINT32 | 要读取的字节数。 例如,客户端驱动程序可以使用此函数来读取大于 256 字节的透明(二进制)文件,尽管根据 ETSI TS 102 221 技术规范,单个 UICC 操作可读取或写入的最大数据量为 256 字节。 函数将负责将其拆分为多个 APTU,并将结果以单个响应的形式发回。 |
28 | 4 | LocalPinOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的密码的偏移量(以字节为单位)。 这是本地 PIN (PIN2),用于需要本地 PIN 码验证的操作。 |
32 | 4 | LocalPinSize | SIZE (0..16) | 密码的大小(字节为单位)。 |
36 | 4 | BinaryDataOffset | OFFSET | 从本结构的开头计算到包含命令特定数据的缓冲区的偏移量(以字节为单位)。 二进制数据只用于 SET 操作。 |
40 | 4 | BinaryDataSize | SIZE (0..32768) | 数据的大小(以字节为单位)。 |
44 | DataBuffer | DATABUFFER | 包含 AppId、FilePath、LocalPin 和 BinaryData 的数据缓冲区。 |
设置
不适用。
响应
以下 MBIM_UICC_RESPONSE 结构用于 InformationBuffer。
MBIM_UICC_RESPONSE(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于本结构的版本 1,此字段必须为 1。 |
4 | 4 | StatusWord1 | UINT32(0..256) | 特定于 UICC 命令的返回参数。 |
8 | 4 | StatusWord2 | UINT32(0..256) | 特定于 UICC 命令的返回参数。 |
12 | 4 | ResponseDataOffset | OFFSET | 从本结构的开头计算到包含响应数据的缓冲区的偏移量(以字节为单位)。 响应数据只用于 QUERY 操作。 |
16 | 4 | ResponseDataSize | SIZE (0..32768) | 数据的大小(以字节为单位)。 |
20 | DataBuffer | DATABUFFER | 包含 ResponseData 的数据缓冲区。 |
未经请求的事件
不适用。
状态代码
适用的状态代码如下:
状态代码 | 说明 |
---|---|
MBIM_STATUS_BUSY | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_FAILURE | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_SIM_NOT_INSERTED | 由于 UICC 缺失,无法执行 UICC 操作。 |
MBIM_STATUS_BAD_SIM | 由于 UICC 处于错误状态,无法执行 UICC 操作。 |
MBIM_STATUS_SHAREABILITY_CONDITION_ERROR | 无法选择文件,因为该文件不可共享,且当前正被其他应用程序访问。 SIM 返回的状态字为 6985。 |
MBIM_STATUS_PIN_FAILURE | 由于 PIN 错误,操作失败。 |
MBIM_CID_MS_UICC_ACCESS_RECORD
此 CID 发送访问 UICC 线性固定文件或循环文件的特定命令,其结构类型为 MBIMUiccFileStructureCyclic 或 MBIMUIccFileStructureLinear。
参数
操作 | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | MBIM_UICC_ACCESS_RECORD | 不适用 |
响应 | 不适用 | MBIM_UICC_RESPONSE | 不适用 |
查询
读取记录内容。 MBIM_COMMAND_MSG 的 InformationBuffer 包含以下 MBIM_UICC_ACCESS_RECORD 结构。 MBIM_UICC_RESPONSE 将在 MBIM_COMMAND_DONE 的 InformationBuffer 中返回。
MBIM_UICC_ACCESS_RECORD(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于此结构的版本 1,此字段必须设置为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从本结构的开头到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0)。 |
12 | 4 | FilePathOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的文件路径的偏移量(以字节为单位)。 文件路径是一个由 16 位文件 ID 组成的数组。 第一个 ID 必须是 0x7FFF 或 0x3F00。 如果第一个 ID 是 0x7FFF,则路径相对于 AppId 所指定应用程序的 ADF。 否则,它就是一个从 MF 开始的绝对路径。 |
16 | 4 | FilePathSize | SIZE | 文件路径的大小(以字节为单位)。 |
20 | 4 | RecordNumber | UINT32(0..256) | 记录编号。 这表示任何时候的绝对记录索引。 不支持相对记录访问,因为调制解调器可以对一个文件执行多次访问(NEXT、PREVIOUS)。 |
24 | 4 | LocalPinOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的密码的偏移量(以字节为单位)。 锁密码是一个 null 结尾的 UTF-8 字符串,其中包含了十进制数字。 |
28 | 4 | LocalPinSize | SIZE (0..16) | 密码的大小(字节为单位)。 |
32 | 4 | RecordDataOffset | OFFSET | 从本结构的开头计算到包含命令特定数据的缓冲区的偏移量(以字节为单位)。 记录数据仅用于 SET 操作。 |
36 | 4 | RecordDataSize | SIZE (0..256) | 数据的大小(以字节为单位)。 |
40 | DataBuffer | DATABUFFER | 包含 AppId、FilePath、LocalPin 和 RecordData 的数据缓冲区。 |
设置
不适用。
响应
在 InformationBuffer 中使用了 MBIM_UICC_RESPONSE 结构。
未经请求的事件
不适用。
状态代码
适用的状态代码如下:
状态代码 | 说明 |
---|---|
MBIM_STATUS_BUSY | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_FAILURE | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_SIM_NOT_INSERTED | 由于 UICC 缺失,无法执行 UICC 操作。 |
MBIM_STATUS_BAD_SIM | 由于 UICC 处于错误状态,无法执行 UICC 操作。 |
MBIM_STATUS_SHAREABILITY_CONDITION_ERROR | 无法选择文件,因为该文件不可共享,且当前正被其他应用程序访问。 SIM 返回的状态字为 6985。 |
MBIM_STATUS_PIN_FAILURE | 由于 PIN 错误,操作失败。 |
MBIM_CID_MS_PIN_EX
此 CID 用于执行 ETSI TS 102 221 技术规范第 9 节中定义的所有 PIN 安全操作。 此 CID 类似于 MBIM_CID_MS_PIN,但对其进行了扩展,以支持多应用 UICC 卡。 仅支持单一验证功能 UICC。 不支持支持一个以上应用程序 PIN 的具有多重验证功能的 UICC。 为 UICC 上的所有 ADF/DF 和文件分配一个应用程序 PIN (PIN1)。 但是,每个应用程序都可以指定一个本地 PIN (PIN2) 作为第 2 级用户验证要求,因此每个访问命令都需要额外的验证。 此方案是 MBIM_CID_MS_PIN_EX 支持的方案。
与 MBIM_CID_MS_PIN 一样,如果使用 MBIM_CID_MS_PIN_EX,设备一次只能报告一个 PIN。 如果启用了多个 PIN,并且还启用了报告多个 PIN 的功能,那么函数必须先报告 PIN1。 例如,如果补贴锁报告已启用,且 SIM 的 PIN1 已启用,那么只有在成功验证 PIN1 后,才能在随后的查询请求中报告补贴锁 PIN。 允许与 MBIMPinOperationEnter 一起使用空 PIN。 通过将 PinSize 设置为零,可以指定一个空的 PIN。 在这种情况下,SET 命令与 QUERY 类似,会返回所引用 PIN 的状态。 这与 ETSI TS 102 221 技术规范第 11.1.9 节中规定的 VERIFY 命令行为完全一致。
参数
操作 | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | MBIM_SET_PIN_EX | MBIM_PIN_APP | 不适用 |
响应 | MBIM_PIN_INFO_EX | MBIM_PIN_INFO_EX | 不适用 |
查询
以下 MBIM_PIN_APP 结构用于 InformationBuffer。
MBIM_PIN_APP(版本 1)
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后续结构的版本号。 对于此结构的版本 1,此字段必须设置为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从本结构的开头到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0)。 |
12 | DataBuffer | DATABUFFER | ETSI TS 102 221 技术规范中定义的 AppId。 |
设置
以下 MBIM_SET_PIN_EX 结构用于 InformationBuffer。
MBIM_SET_PIN_EX
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | PinType | MBIM_PIN_TYPE_EX | PIN 类型。 请参阅本主题中的 MBIM_PIN_TYPE_EX 表。 |
4 | 4 | PinOperation | MBIM_PIN_OPERATION | PIN 操作。 请参阅 MBIM 1.0。 |
8 | 4 | PinOffset | OFFSET | 从此结构的开头计算到字符串 PIN 的偏移量(以字节为单位),该字符串表示执行操作所需的 PIN 值,或启用或禁用 PIN 设置所需的 PIN 值。 此字段适用于 PinOperation 的所有值。 |
12 | 4 | PinSize | SIZE (0..32) | 用于 PIN 的大小(以字节为单位)。 |
16 | 4 | NewPinOffset | OFFSET | PINTypeMBIMPinTypePuk1 或 PINTypeMBIMPinTypePuk2 的 PinOperation 为 MBIMPinOperationChange 或 MBIMPinOperationEnter 时,从该结构开始计算到 NewPin 字符串的偏移量(以字节为单位),该字符串表示要设置的新 PIN 值。 |
20 | 4 | NewPinSize | SIZE (0..32) | 用于 NewPin 的大小(以字节为单位)。 |
24 | 4 | AppIdOffset | OFFSET | 从本结构的开头计算到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
28 | 4 | AppIdSize | SIZE (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0)。 |
32 | DataBuffer | DATABUFFER | 包含 Pin、NewPin 和 AppId 的数据缓冲区。 |
响应
以下 MBIM_PIN_INFO_EX 结构用于 InformationBuffer。
Offset | 大小 | 字段 | 类型 | 描述 |
---|---|---|---|---|
0 | 4 | PinType | MBIM_PIN_TYPE_EX | PIN 类型。 请参阅本主题中的 MBIM_PIN_TYPE_EX 表。 |
4 | 4 | PinState | MBIM_PIN_STATE | PIN 状态。 请参阅 MBIM 1.0。 |
8 | 4 | RemainingAttempts | UINT32 | 任何与 PIN 有关的操作(如输入、启用或禁用)的剩余尝试次数。 不支持此信息的设备必须将此成员设置为 0xFFFFFFFF。 |
未经请求的事件
不适用。
状态代码
适用的状态代码如下:
状态代码 | 说明 |
---|---|
MBIM_STATUS_BUSY | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_FAILURE | 为所有命令定义的 MBIM 基本状态。 |
MBIM_STATUS_SIM_NOT_INSERTED | 由于 UICC 缺失,无法执行 UICC 操作。 |
MBIM_STATUS_BAD_SIM | 由于 UICC 处于错误状态,无法执行 UICC 操作。 |
MBIM_STATUS_PIN_DISABLED | 由于 PIN 已禁用,操作失败。 |
MBIM_STATUS_PIN_REQUIRED | 由于必须输入 PIN 才能继续,因此操作失败。 |
MBIM_STATUS_NO_DEVICE_SUPPORT | 由于设备不支持相应 PIN 类型上的 SET,因此操作失败。 |