SCardEndTransaction 函数 (winscard.h)

SCardEndTransaction 函数完成以前声明的事务,允许其他应用程序恢复与卡交互。

语法

LONG SCardEndTransaction(
  [in] SCARDHANDLE hCard,
  [in] DWORD       dwDisposition
);

参数

[in] hCard

从上一次调用 SCardConnect 获取的引用值。 此值也用于之前对 SCardBeginTransaction 的调用。

[in] dwDisposition

关闭时对连接的读取器中的卡执行的操作。

含义
SCARD_EJECT_CARD
弹出卡。
SCARD_LEAVE_CARD
请勿执行任何特殊操作。
SCARD_RESET_CARD
重置卡。
SCARD_UNPOWER_CARD
关闭卡。

返回值

如果函数成功,该函数将返回 SCARD_S_SUCCESS

如果函数失败,它将返回错误代码。 有关详细信息,请参阅 智能卡返回值。 可能存在错误代码。

返回代码/值 说明
SCARD_W_RESET_CARD
0x80100068L
事务已释放。 将来与卡通信都需要调用 SCardReconnect 函数。

Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 事务未释放。 应用程序必须立即调用 SCardDisconnectSCardReconnectSCardReleaseContext 函数,以避免现有事务阻止其他线程和进程与智能卡通信。

注解

SCardEndTransaction 函数是一种智能卡读取器访问函数。 有关其他访问函数的详细信息,请参阅 智能卡和读取器访问函数

示例

以下示例结束智能卡事务。 该示例假定 lReturn 是 LONG 类型的有效变量,hCard 是从上一次调用 SCardConnect 函数接收的有效句柄,并且 hCard 已传递到对 SCardBeginTransaction 函数的上一次调用。


lReturn = SCardEndTransaction(hCard, 
                              SCARD_LEAVE_CARD);
if ( SCARD_S_SUCCESS != lReturn )
    printf("Failed SCardEndTransaction\n");

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 winscard.h
Library Winscard.lib
DLL Winscard.dll

另请参阅

SCardBeginTransaction

SCardConnect