ISCardISO7816:: UpdateRecord 方法

[UpdateRecord 方法可用于在 "要求" 部分中指定的操作系统。 它不可用于 Windows Server 2003 Service Pack 1 (SP1) 和更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 智能卡模块提供了类似的功能。]

UpdateRecord 方法构造一个 应用程序协议数据单元 (apdu) 命令,该命令使用 apdu 命令中给定的位来更新特定记录。

备注

使用 current record 寻址时,该命令将对已成功更新的记录设置记录指针。

语法

HRESULT UpdateRecord(
  [in]      BYTE         byRecordId,
  [in]      BYTE         byRefCtrl,
  [in]      LPBYTEBUFFER pData,
  [in, out] LPSCARDCMD   *ppCmd
);

parameters

byRecordId [中]

P1 值:

P1 = 00 指定当前记录

P1! = "00" 是指定记录的编号

byRefCtrl [中]

参考控制 P2 的编码:

含义
当前 EF
位位置: part-r-00000---
当前选择的 EF。
短 EF ID
位位置: xxxxx---
Short EF 标识符。
第一条记录
位位置:-----000
最后一条记录
位位置:-----001
下一条记录
位位置:-----010
上一个记录
位位置:-----011
#P1 中的记录
位位置:-----100

pData [中]

指向要更新的记录的指针。

ppCmd [in、out]

输入时,指向 ISCardCmd 接口对象或 NULL 的指针。

返回时,将使用此操作构造的 APDU 命令来填充它。 如果 ppCmd 设置为 NULL,则将在内部创建 智能卡 ISCardCmd 对象,并通过 ppCmd 指针返回该对象。

返回值

该方法返回以下可能的值之一。

返回代码 说明
S _ 正常
操作已成功完成。
E _ INVALIDARG
参数无效。
E _ 指针
传入了错误的指针。
E _ OUTOFMEMORY
内存不足。

备注

仅当 智能卡 的安全状态满足正在处理的基本文件的安全属性时,才能执行封装的命令。

如果命令包含有效的简短基本标识符,则会将该文件设置为当前基本文件。 如果在发出此命令时当前选择了其他基本文件,则可以在不识别当前所选文件的情况下处理此命令。

如果构造的命令适用于线性固定或循环结构化的基本文件,则该命令将在记录长度不同于现有记录的长度时中止。

如果该命令适用于线性变量结构化的基本文件,则当记录长度不同于现有记录的长度时,可能会执行该命令。

应用于循环文件 (P2 = xxxxx011) 的命令的 "previous" 选项与 AppendRecord构造的命令具有相同的行为。

无法读取没有记录结构的基本文件。 如果应用到不包含记录结构的基本文件,则构造的命令将中止。

有关此接口提供的所有方法的列表,请参阅 ISCardISO7816

除了上面列出的 COM 错误代码以外,如果调用智能卡函数来完成请求,则此接口可能会返回智能卡错误代码。 有关详细信息,请参阅 智能卡返回值

要求

要求
最低受支持的客户端
Windows[仅限 XP 桌面应用]
最低受支持的服务器
Windows[仅限 Server 2003 桌面应用]
客户端支持结束
Windows XP
服务器支持结束
Windows Server 2003
标头
Scardssp
类型库
Scardsrv
DLL
Scardssp.dll
IID
IID _ ISCardISO7816 定义为53B6AA68-3F56-11D0-916B-00AA00C18068

另请参阅

AppendRecord

ISCardISO7816

ReadRecord

WriteRecord