ISCardISO7816::ManageChannel 方法

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

ManageChannel 方法 (打开和关闭逻辑通道的 APDU) 命令构造应用程序协议数据单元

open 函数打开除基本通道以外的新逻辑通道。 为卡分配逻辑通道编号或要提供给卡的逻辑通道号提供了选项。

close 函数显式关闭基本通道以外的逻辑通道。 成功关闭后,逻辑通道应可供重复使用。

语法

HRESULT ManageChannel(
  [in]      BYTE       byChannelState,
  [in]      BYTE       byChannel,
  [in, out] LPSCARDCMD *ppCmd
);

parameters

byChannelState [in]

P1 的 b8 位用于指示 open 函数或 close 函数;如果 b8 为 0,则 MANAGE CHANNEL 应打开一个逻辑通道;如果 b8 为 1,则 MANAGE CHANNEL 应关闭逻辑通道:

P1 = '00' 打开

P1 = '80' 关闭

其他值为 RFU

byChannel [in]

对于 (P1 = '00') 的 open 函数,P2 的位 b1 和 b2 用于以类字节中的相同方式对逻辑通道号进行编码,P2 的其他位为 RFU。

当 P2 的 b1 和 b2 为 NULL 时,卡将分配一个逻辑通道号,该编号将以数据字段的位 b1 和 b2 为单位返回。

当 P2 的 b1 和/或 b2 不是 NULL 时,它们会编码除基本通道以外的逻辑通道号:然后,卡将打开外部分配的逻辑通道号。

ppCmd [in, out]

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

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

返回值

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

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

 

备注

从基本逻辑通道成功执行打开函数时,应隐式选择 MF 作为当前 DF,新逻辑通道的安全状态应与 ATR 后的基本逻辑通道相同。 新逻辑通道的安全状态应独立于任何其他逻辑通道的安全状态。

从逻辑通道(不是基本通道)成功执行打开函数时,将选择发出命令的逻辑通道的当前 DF 作为当前 DF。 此外,新逻辑通道的安全状态应与从中执行打开函数的逻辑通道的安全状态相同。

成功关闭函数后,与此逻辑通道相关的安全状态将丢失。

有关此接口提供的所有方法的列表,请参阅 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

另请参阅

ISCardISO7816