ISCardISO7816::SelectFile 方法
[ SelectFile 方法可用于“要求”部分中指定的操作系统。 它不适用于 Windows Server 2003 Service Pack 1 (SP1) 及更高版本、Windows Vista、Windows Server 2008 和操作系统的后续版本。 智能卡模块提供类似的功能。]
SelectFile 方法 (APDU) 命令构造应用程序协议数据单元,该命令在逻辑通道中设置当前基本文件。 后续命令可以通过逻辑通道隐式引用当前文件。
在卡文件存储中选择 (DF) 目录(可能是文件存储的根 (MF) )使其成为当前 DF。 进行此类选择后,可以通过该逻辑通道引用隐式当前基本文件。
选择基本文件会将所选文件及其父文件设置为当前文件。
重置答案后,将通过基本逻辑通道隐式选择 MF,除非在历史字节或初始数据字符串中以不同方式指定。
语法
HRESULT SelectFile(
[in] BYTE byP1,
[in] BYTE byP2,
[in] LPBYTEBUFFER pData,
[in] LONG lBytesToRead,
[in, out] LPSCARDCMD *ppCmd
);
parameters
-
byP1 [in]
-
选择控件。
P1 (word) 中的上字节: 8 7 6 5 4 3 2 1 含义 - 000000xx
选择文件 ID - 00000000
EF、DF 或 MF - 00000001
子 DF - 00000010
DF 下的 EF - 00000011
当前 DF 的父 DF 当 P1=00 时,卡知道,要么是因为文件 ID 的特定编码,要么是因为命令的执行上下文(如果要选择的文件是 MF、DF 或 EF)。
当 P1-P2=0000 时,如果提供了文件 ID,则它在以下环境中应是唯一的:
- 当前 DF 的直接子级
- 父 DF
- 父 DF 的直接子级
如果 P1-P2=0000,并且数据字段为空或等于 3F00,则选择 MF。
当 P1=04 时,数据字段为 DF 名称,可能右截。
如果受支持,具有相同数据字段的连续此类命令应选择名称与数据字段匹配的DF, (即,从命令数据字段) 开始。 如果卡接受包含空数据字段的命令,则可以连续选择所有或部分 DF。
-
byP2 [in]
-
选择控件。
-
pData [in]
-
操作数据(如果需要);else, NULL。 在此参数中传递的数据类型包括:
- 文件 ID
- 来自 MF 的路径
- 来自当前 DF 的路径
- DF 名称
-
lBytesToRead [in]
-
空 (,即响应中预期数据的 0) 或最大长度。
-
ppCmd [in, out]
-
输入时,指向 ISCardCmd 接口对象的指针或 NULL。
返回时,会用此操作构造的 APDU 命令填充该命令。 如果 ppCmd 设置为 NULL,则会在内部创建智能 卡ISCardCmd 对象,并通过 ppCmd 指针返回。
返回值
方法返回以下可能值之一。
返回代码 | 说明 |
---|---|
|
操作已成功完成。 |
|
参数无效。 |
|
传入了错误的指针。 |
|
内存不足。 |
备注
除非另行指定,否则封装命令的正确执行会根据以下规则修改安全状态:
- 更改当前基本文件或没有当前基本文件时,特定于以前的当前基本文件的安全状态将丢失。
- 当当前文件存储目录 (DF) 是以前的当前 DF 的后代或与以前的当前 DF 相同时,特定于以前的当前 DF 的安全状态将丢失。 维护以前和新当前 DF 的所有共同上级共有的安全状态。
有关此接口提供的所有方法的列表,请参阅 ISCardISO7816。
除了上面列出的 COM 错误代码之外,如果调用智能卡函数来完成请求,则此接口可能返回智能卡错误代码。 有关详细信息,请参阅 智能卡返回值。
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows XP [仅限桌面应用] |
最低受支持的服务器 |
Windows Server 2003 [仅限桌面应用] |
终止客户端支持 |
Windows XP |
终止服务器支持 |
Windows Server 2003 |
标头 |
|
类型库 |
|
DLL |
|
IID |
IID_ISCardISO7816定义为 53B6AA68-3F56-11D0-916B-00AA00C18068 |
另请参阅