PCSC那事儿(二十六--SCardReconnect)

SCardReconnect API在共享访问模式下用于处理因卡片重置导致的通讯问题。当一个应用重置读卡器后,其他应用需要使用SCardReconnect重新建立连接,以避免SCARD_W_RESET_CARD错误。在SCardReconnect过程中,可能会遇到SCARD_E_SHARING_VIOLATION,这通常是因为其他共享应用进入了SCardBeginTransaction。本文详细解释了SCardReconnect的工作原理和应用场景。
摘要由CSDN通过智能技术生成

 

SCardReconnect

 

SCardReconnect 定义在 winscard_clnt.c

实现如下:

等等,

问:前面提过的 API SCardConnect ,这次 SCardReconnect 做什么?

为什么需要这个 API

答案是,

在共享访问模式下,其中一个应用 reset 了读卡器中的卡。这样另外一个不同的应用再发出

与读卡器中的卡通讯的命令就会返回 SCARD_W_RESET_CARD 错误。这个错误不是真正的错误,仅仅提示后面这个应用需要 SCardReconnect 这个读卡器。

 

  906 LONG SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,

  907         DWORD dwPreferredProtocols, DWORD dwInitialization,

  908         LPDWORD pdwActiveProtocol)

  909 {

  910         LONG rv;

  911         reconnect_struct scReconnectStruct;

  912         sharedSegmentMsg msgStruct;

  913         int i;

  914         DWORD dwContextIndex, dwChannelIndex;

  915

 

  916         PROFILE_START

  917

  918         if (pdwActiveProtocol == NULL)

  919                 return SCARD_E_INVALID_PARAMETER;

  920

  921         rv = SCardCheckDaemonAvailability();

  922          if (rv != SCARD_S_SUCCESS)

  923                 return rv;

  924

  925         /*

  926          * Make sure this handle has been opened

  927          */

  928         rv = SCardGetIndicesFromHandle(hCard, &dwContextIndex, &dwChannelIndex);

  929          if (rv == -1)

  930                 return SCARD_E_INVALID_HANDLE;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值