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),包含多达两级的子目录(专用文件或 DF),其中的元素文件 (EF) 保存着各种类型的信息。 SIM 在 MF 下定义了 DF,其中一个 DFTelecom 包含多种接入类型的通用信息,如公用电话簿。 其他应用程序实际上是作为单独的树来实现的,而每个树都根植于自己的应用程序目录文件 (ADF) 中。 每个 ADF 都由一个应用程序标识符进行标识,该标识符的长度可达 128 位。 卡根目录下的文件(图中 MF 下的 EFDir)包含应用程序名称和相应的标识符。 在树(MF 或 ADF)中,DF 和 EF 可以通过文件 ID 的路径来标识,其中文件 ID 是一个 16 位整数。

NDIS 接口扩展

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

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) 调制解调器在移动网络注册时选择的应用程序索引。 此字段必须介于 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 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 必须是 0x7FFF0x3F00。 如果第一个 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 二进制文件的特定命令,其结构类型为 MBIMUiccFileStructureTransparentMBIMUiccFileStructureBerTLV

参数

操作 设置 查询 通知
命令 不适用 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 必须是 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 从本结构的开头计算到包含应用程序 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 线性固定文件或循环文件的特定命令,其结构类型为 MBIMUiccFileStructureCyclicMBIMUIccFileStructureLinear

参数

操作 设置 查询 通知
命令 不适用 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 必须是 0x7FFF0x3F00。 如果第一个 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,因此操作失败。