ISCardISO7816::ReadRecord 方法

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

ReadRecord 方法 (APDU) 命令构造应用程序协议数据单元,该命令读取指定记录的内容或基本文件的一条记录的开头部分。

语法

HRESULT ReadRecord(
  [in]      BYTE       byRecordId,
  [in]      BYTE       byRefCtrl,
  [in]      LONG       lBytesToRead,
  [in, out] LPSCARDCMD *ppCmd
);

parameters

byRecordId [in]

要读取的第一条记录的记录编号或 ID (00 表示当前记录) 。

byRefCtrl [in]

引用控件的编码。

含义
当前 EF
位位置:00000---
当前选定的 EF。
短 EF ID
位位置:xxxxx---
短 EF 标识符。
RFU
位位置:11111---
记录#
位位置:-----1xx
使用 P1 中的记录编号。
读取记录
位位置:-----100
读取记录 P1。
最多到最后一个
位位置:-----101
读取从 P1 到最后一个的所有记录。
最多 P1
位位置:-----110
读取从最后一个到 P1 的所有记录。
RFU
位位置:-----111
记录 ID
位位置:-----0xx
使用 P1 中的记录编号。
首次出现
位位置:-----000
读取第一个匹配项。
上次发生时间
位位置:-----001
读取最后一个匹配项。
下一次发生
位位置:-----010
阅读下一个匹配项。
上一篇
位位置:-----011
读取上一个匹配项。
机密
位位置:---xxxxx

 

lBytesToRead [in]

要从透明 EF 读取的字节数。

如果 Le 字段仅包含零,则根据 P2 的 b3b2b1 和短长度限制 256 或扩展长度限制 65536 内,命令应完全读取单个请求的记录或请求的记录序列。

ppCmd [in, out]

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

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

返回值

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

返回代码 说明
S_OK
操作已成功完成。
E_INVALIDARG
参数无效。
E_POINTER
传入了错误的指针。
E_OUTOFMEMORY
内存不足。

 

备注

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

如果在发出此命令时当前选择了另一个基本文件,则可能在未标识当前所选文件的情况下对其进行处理。

当命令包含有效的短基本标识符时,它会将文件设置为当前基本文件。

无法读取没有记录结构的基本文件。 如果应用于没有记录结构的基本文件,封装的命令将中止。

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

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

要求

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

请参阅

AppendRecord

ISCardISO7816

UpdateRecord

WriteRecord