ISCardISO7816::WriteRecord 方法
[ WriteRecord 方法可用于“要求”部分中指定的操作系统。 它不适用于 Windows Server 2003 Service Pack 1 (SP1) 及更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 智能卡模块提供类似的功能。]
WriteRecord 方法 (启动下列操作之一的 APDU) 命令构造应用程序协议数据单元:
- 记录的写入一次。
- 卡中已存在的记录的数据字节的逻辑 OR,以及命令 APDU 中给定的记录的数据字节。
- 卡中已存在的记录的数据字节的逻辑 AND,以及命令 APDU 中给定的记录的数据字节。
如果数据编码字节中未给出任何指示,则应用逻辑 OR 行为。
注意
使用当前记录寻址时,命令在成功更新的记录上设置记录指针。
语法
HRESULT WriteRecord(
[in] BYTE byRecordId,
[in] BYTE byRefCtrl,
[in] LPBYTEBUFFER pData,
[in, out] LPSCARDCMD *ppCmd
);
parameters
-
byRecordId [in]
-
记录标识。 这是 P1 值:
P1 = '00' 指定当前记录。
P1 != '00'是指定记录的编号。
-
byRefCtrl [in]
-
引用控件 P2 的编码。
值 含义 - 当前 EF
位位置:00000---
当前选定的 EF。- 短 EF ID
位位置:xxxxx---
短 EF 标识符。- 第一条记录
位位置:-----000 - 上一条记录
位位置:-----001 - 下一条记录
位位置:-----010 - 上一条记录
位位置:-----011 - P1 中的记录 #
位位置:-----100 -
pData [in]
-
指向要写入的记录的指针。
-
ppCmd [in, out]
-
输入时,指向 ISCardCmd 接口对象的指针或 NULL。
返回时,会用此操作构造的 APDU 命令填充它。 如果 ppCmd 设置为 NULL,则会在内部创建智能 卡ISCardCmd 对象,并通过 ppCmd 指针返回。
返回值
方法返回以下可能值之一。
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
参数无效。 |
|
传入了错误的指针。 |
|
内存不足。 |
备注
仅当智能卡的安全状态满足正在处理的基本文件的安全属性时,才能执行封装的命令。
当命令包含有效的短基本标识符时,它会将文件设置为当前基本文件。 如果在发出此命令时当前选择了另一个基本文件,则可能会在不识别当前所选文件的情况下处理此命令。
如果封装的命令应用于线性固定或循环结构化基本文件,则记录长度与现有记录的长度不同时,它将中止。 如果它适用于线性变量结构化基本文件,则当记录长度与现有记录的长度不同时,可能会执行该操作。
如果 P2=xxxxx011 且基本文件是循环文件,则此命令的行为与使用 AppendRecord 构造的命令的行为相同。
无法写入没有记录结构的基本文件。 如果应用于没有记录结构的基本文件,则构造的命令会中止。
有关此接口提供的所有方法的列表,请参阅 ISCardISO7816。
除了上面列出的 COM 错误代码外,如果调用智能卡函数来完成请求,则此接口可能返回智能卡错误代码。 有关详细信息,请参阅 智能卡返回值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2003 [仅限桌面应用] |
客户端支持终止 |
Windows XP |
终止服务器支持 |
Windows Server 2003 |
标头 |
|
类型库 |
|
DLL |
|
IID |
IID_ISCardISO7816定义为 53B6AA68-3F56-11D0-916B-00AA00C18068 |
请参阅