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 应用程序结构的关系图。

UICC 文件系统可视为目录树林。 旧版 SIM 树根植于主文件 (MF) ,最多包含两个级别的子目录 (专用文件,或包含包含元素文件 (EFs) 的 DF) ,这些子目录包含各种类型的信息。 SIM 在 MF 下定义 DF,其中 DFTelecom 包含多种访问类型(如通用电话簿)共有的信息。 其他应用程序作为单独的树有效实现,每个树都根植于自己的应用程序目录文件 (ADF) 。 每个 ADF 由最大 128 位长的应用程序标识符标识。 关系图中 MF 下卡根 (EFDir 下的文件) 包含应用程序名称和相应的标识符。 在 MF 或 ADF) (树中,DF 和 EF 可能由文件 ID 的路径标识,其中文件 ID 为 16 位整数。

NDIS 接口扩展

以下 OID 已定义为支持 UICC 应用程序和文件系统访问。

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) 调制解调器选择用于向移动网络注册的应用程序的索引。 此字段必须介于 0AppCount - 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 必须是 0x7FFF0x3F00。 如果第一个 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 发送特定命令来访问结构类型为 MBIMUiccFileStructureTransparentMBIMUiccFileStructureBerTLV 的 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 必须是 0x7FFF0x3F00。 如果第一个 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 线性固定或循环文件,其结构类型为 MBIMUiccFileStructureCyclicMBIMUIccFileStructureLinear

参数

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 必须是 0x7FFF0x3F00。 如果第一个 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。