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) ,最多包含两个级别的子目录 (专用文件,或包含包含元素文件 (EFs) 的 DF) ,这些子目录包含各种类型的信息。 SIM 在 MF 下定义 DF,其中 DFTelecom 包含多种访问类型(如通用电话簿)共有的信息。 其他应用程序作为单独的树有效实现,每个树都根植于自己的应用程序目录文件 (ADF) 。 每个 ADF 由最大 128 位长的应用程序标识符标识。 关系图中 MF 下卡根 (EFDir 下的文件) 包含应用程序名称和相应的标识符。 在 MF 或 ADF) (树中,DF 和 EF 可能由文件 ID 的路径标识,其中文件 ID 为 16 位整数。
NDIS 接口扩展
以下 OID 已定义为支持 UICC 应用程序和文件系统访问。
- 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 Low-Level 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 是否支持 Set、Query 或 Event (通知) 请求。 有关其参数、数据结构和通知的详细信息,请参阅本主题中每个 CID 的各个部分。
CID | UUID | 命令代码 | 设置 | 查询 | 通知 |
---|---|---|---|---|---|
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 字段中返回所选应用程序。
参数
Operation | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | Empty | 不适用 |
响应 | 不适用 | 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 | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 AppIdSize 可能包含大于 16 的数字,但在这种情况下,databuffer 中只有前 16 个 (MBIM_MAXLENGTH_APPID) 字节。 对于 MBIMUiccAppTypeMf、MBIMUiccAppTypeMfSIM 或 MBIMUiccAppTypeMfRUIM 应用类型,此字段设置为零。 |
12 | AppNameOffset | OFFSET | databuffer 中应用程序名称的偏移量。 指定应用程序名称的 UTF-8 字符串。 此字段的长度由 AppNameLength 指定。 如果长度大于或等于 MBIM_MAXLENGTH_APPNAME 个字节,则此字段包含名称的第一个MBIM_MAXLENGTH_APPNAME - 1 个字节。 字符串始终以 null 结尾。 | |
16 | 4 | AppNameLength | 大小 (0..256) | 应用程序名称的长度(以字节为单位)。 AppNameLength 可能包含等于或大于 256 的数字,但在这些情况下,databuffer 中只有前 255 个 (MBIM_MAXLENGTH_APPNAME - 1) 个字节。 |
20 | 4 | NumPinKeyRefs | 大小 (0..8) | 应用程序 PIN 密钥引用的数量。 换句话说,PinKeyRef 中有效的元素数。 虚拟 R-UIM 上的应用程序没有 PIN 密钥引用。 |
24 | 4 | KeyRefOffset | OFFSET | DataBuffer 中 PinKeyRef 的偏移量。 PinKeyRef 是一个字节数组,指定应用程序的 PIN 密钥引用,用于不同级别的验证, (PIN1、PIN2 的密钥,可能还有通用 PIN) ,如 ETSI TS 102 221 技术规范表 9.3 和 9.4.2 部分所定义。 如果单一验证卡或 MBB 驱动程序和/或调制解调器不支持不同应用程序的不同应用程序密钥,PinKeyRef 字段的第一个字节必须0x01 (PIN1) ,第二个字节必须0x81 (PIN2) ,如 ETSI TS 102 221 第 9.5.1 节中所述。 |
28 | 4 | KeyRefSize | 大小 (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 文件的信息。
参数
Operation | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | MBIM_UICC_FILE_PATH | 不适用 |
响应 | 不适用 | MBIM_UICC_FILE_STATUS | 不适用 |
查询
MBIM_COMMAND_MSG的 InformationBuffer 将目标 EF 作为MBIM_UICC_FILE_PATH结构包含在内。
MBIM_UICC_FILE_PATH (版本 1)
Offset | 大小 | 字段 | 类型 | 说明 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后面的结构的版本号。 对于此结构的版本 1 ,此字段必须为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从此结构的开头到包含应用程序 ID 的缓冲区计算的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0) 。 |
12 | 4 | FilePathOffset | OFFSET | 从此结构的开头到包含文件路径的缓冲区计算的偏移量(以字节为单位)。 文件路径是 16 位文件 ID 的数组。 第一个 ID 必须是 0x7FFF 或 0x3F00。 如果第一个 ID 0x7FFF,则路径相对于 AppId 所取消的应用程序的 ADF。 否则,它是从 MF 开始的绝对路径。 |
16 | 4 | FilePathSize | SIZE (0..8) | 文件路径的大小(以字节为单位)。 |
20 | DataBuffer | DATABUFFER | 包含 AppId 和 FilePath 的数据缓冲区。 |
设置
不适用。
响应
InformationBuffer 中使用以下MBIM_UICC_FILE_STATUS结构。
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 发送特定命令来访问结构类型为 MBIMUiccFileStructureTransparent 或 MBIMUiccFileStructureBerTLV 的 UICC 二进制文件。
参数
Operation | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | 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 | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0) 。 |
12 | 4 | FilePathOffset | OFFSET | 从此结构的开头到包含文件路径的缓冲区计算的偏移量(以字节为单位)。 文件路径是 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 | 从此结构的开头到包含密码的缓冲区计算的偏移量(以字节为单位)。 这是本地 PIN (PIN2) ,用于操作需要本地 PIN 验证的情况。 |
32 | 4 | LocalPinSize | 大小 (0..16) | 密码的大小(以字节为单位)。 |
36 | 4 | BinaryDataOffset | OFFSET | 从此结构的开头到包含命令特定数据的缓冲区计算的偏移量(以字节为单位)。 二进制数据仅用于 SET 操作。 |
40 | 4 | BinaryDataSize | SIZE (0..32768) | 数据的大小(以字节为单位)。 |
44 | DataBuffer | DATABUFFER | 包含 AppId、FilePath、LocalPin 和 BinaryData 的数据缓冲区。 |
设置
不适用。
响应
InformationBuffer 中使用以下MBIM_UICC_RESPONSE结构。
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 | 从此结构的开头计算到包含响应数据的缓冲区的偏移量(以字节为单位)。 响应数据仅用于查询操作。 |
16 | 4 | ResponseDataSize | 大小 (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。
参数
Operation | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | 不适用 | 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 | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0) 。 |
12 | 4 | FilePathOffset | OFFSET | 从此结构的开头计算到包含文件路径的缓冲区的偏移量(以字节为单位)。 文件路径是 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 | 从此结构的开头到包含密码的缓冲区计算的偏移量(以字节为单位)。 锁密码是一个以 null 结尾的 UTF-8 字符串,其中包含十进制数字。 |
28 | 4 | LocalPinSize | 大小 (0..16) | 密码的大小(以字节为单位)。 |
32 | 4 | RecordDataOffset | OFFSET | 从此结构的开头到包含命令特定数据的缓冲区计算的偏移量(以字节为单位)。 记录数据仅用于 SET 操作。 |
36 | 4 | RecordDataSize | 大小 (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。 将一个应用程序 PIN (PIN1) 分配给 UICC 上的所有 ADF/DF 和文件。 但是,每个应用程序都可以将本地 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。 允许将空 PIN 与 MBIMPinOperationEnter 一起使用。 通过将 PinSize 设置为零来指定空 PIN。 在这种情况下,SET 命令类似于 QUERY,并返回引用的 PIN 的状态。 这与 ETSI TS 102 221 技术规范第 11.1.9 节中指定的 VERIFY 命令的行为完全一致。
参数
Operation | 设置 | 查询 | 通知 |
---|---|---|---|
命令 | MBIM_SET_PIN_EX | MBIM_PIN_APP | 不适用 |
响应 | MBIM_PIN_INFO_EX | MBIM_PIN_INFO_EX | 不适用 |
查询
InformationBuffer 中使用以下MBIM_PIN_APP结构。
MBIM_PIN_APP (版本 1)
Offset | 大小 | 字段 | 类型 | 说明 |
---|---|---|---|---|
0 | 4 | 版本 | UINT32 | 后面的结构的版本号。 对于此结构的版本 1 ,此字段必须设置为 1。 |
4 | 4 | AppIdOffset | OFFSET | 从此结构的开头到包含应用程序 ID 的缓冲区的偏移量(以字节为单位)。 |
8 | 4 | AppIdSize | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0) 。 |
12 | DataBuffer | DATABUFFER | ETSI TS 102 221 技术规范中定义的 AppId。 |
设置
InformationBuffer 中使用以下MBIM_SET_PIN_EX结构。
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 设置所需的 PIN 值。 此字段适用于 PinOperation 的所有值。 |
12 | 4 | PinSize | SIZE (0..32) | 用于 PIN 的大小(以字节为单位)。 |
16 | 4 | NewPinOffset | OFFSET | 从此结构的开头计算到 NewPin 字符串的偏移量(以字节为单位),该字符串表示 PinOperation 为 PINTypeMBIMPinTypePuk1 或 PinTypeMBIMPinTypePuk2 时要设置的新 PIN 值。 |
20 | 4 | NewPinSize | SIZE (0..32) | 用于 NewPin 的大小(以字节为单位)。 |
24 | 4 | AppIdOffset | OFFSET | 从此结构的开头到包含应用程序 ID 的缓冲区计算的偏移量(以字节为单位)。 |
28 | 4 | AppIdSize | 大小 (0..16) | ETSI TS 102 221 技术规范第 8.3 节中定义的应用程序 ID 的大小(以字节为单位)。 对于 2G 卡,此字段必须设置为零 (0) 。 |
32 | DataBuffer | DATABUFFER | 包含 Pin、NewPin 和 AppId 的数据缓冲区。 |
响应
InformationBuffer 中使用以下MBIM_PIN_INFO_EX结构。
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。 |