首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SmartCard和winscard.dll不能连接吗?

SmartCard和winscard.dll不能连接吗?
EN

Stack Overflow用户
提问于 2018-08-31 18:24:40
回答 1查看 1K关注 0票数 0

我需要读一张证件身份证。

我在ASP.NET中使用ASP.NET中的execute方法:

代码语言:javascript
复制
SCardConnect() 

此函数返回以下错误:

代码语言:javascript
复制
retCode = -2146434970

不支持此代码号。

请参见后面支持的错误列表。

方法ConnectCard和参数值,然后发送:

代码语言:javascript
复制
hContext = -855572480
readername = "ACS ACR1281 1S Dual Reader ICC 0"
Card.SCARD_SHARE_SHARED = 2
Card.SCARD_PROTOCOL_T0 = 1
Card.SCARD_PROTOCOL_T1 = 2
hCard = 0
Protocol = 0



public bool connectCard()
    {
        connActive = true;
        retCode = Card.SCardConnect(hContext, readername, Card.SCARD_SHARE_SHARED,
                  Card.SCARD_PROTOCOL_T0 | Card.SCARD_PROTOCOL_T1, ref hCard, ref Protocol);

        if (retCode != Card.SCARD_S_SUCCESS)
        {

            MessageBox.Show(Card.GetScardErrMsg(retCode), "Card not available", MessageBoxButtons.OK, MessageBoxIcon.Error);
            connActive = false;
            return false;
        }
        return true;
    }

错误码:

代码语言:javascript
复制
/*===========================================================
'   Error Codes
'===========================================================*/
public const int SCARD_F_INTERNAL_ERROR = -2146435071;
public const int SCARD_E_CANCELLED = -2146435070;
public const int SCARD_E_INVALID_HANDLE = -2146435069;
public const int SCARD_E_INVALID_PARAMETER = -2146435068;
public const int SCARD_E_INVALID_TARGET = -2146435067;
public const int SCARD_E_NO_MEMORY = -2146435066;
public const int SCARD_F_WAITED_TOO_LONG = -2146435065;
public const int SCARD_E_INSUFFICIENT_BUFFER = -2146435064;
public const int SCARD_E_UNKNOWN_READER = -2146435063;
public const int SCARD_E_TIMEOUT = -2146435062;
public const int SCARD_E_SHARING_VIOLATION = -2146435061;
public const int SCARD_E_NO_SMARTCARD = -2146435060;
public const int SCARD_E_UNKNOWN_CARD = -2146435059;
public const int SCARD_E_CANT_DISPOSE = -2146435058;
public const int SCARD_E_PROTO_MISMATCH = -2146435057;
public const int SCARD_E_NOT_READY = -2146435056;
public const int SCARD_E_INVALID_VALUE = -2146435055;
public const int SCARD_E_SYSTEM_CANCELLED = -2146435054;
public const int SCARD_F_COMM_ERROR = -2146435053;
public const int SCARD_F_UNKNOWN_ERROR = -2146435052;
public const int SCARD_E_INVALID_ATR = -2146435051;
public const int SCARD_E_NOT_TRANSACTED = -2146435050;
public const int SCARD_E_READER_UNAVAILABLE = -2146435049;
public const int SCARD_P_SHUTDOWN = -2146435048;
public const int SCARD_E_PCI_TOO_SMALL = -2146435047;
public const int SCARD_E_READER_UNSUPPORTED = -2146435046;
public const int SCARD_E_DUPLICATE_READER = -2146435045;
public const int SCARD_E_CARD_UNSUPPORTED = -2146435044;
public const int SCARD_E_NO_SERVICE = -2146435043;
public const int SCARD_E_SERVICE_STOPPED = -2146435042;
public const int SCARD_W_UNSUPPORTED_CARD = -2146435041;
public const int SCARD_W_UNRESPONSIVE_CARD = -2146435040;
public const int SCARD_W_UNPOWERED_CARD = -2146435039;
public const int SCARD_W_RESET_CARD = -2146435038;
public const int SCARD_W_REMOVED_CARD = -2146435037;
EN

回答 1

Stack Overflow用户

发布于 2018-08-31 23:14:57

我建议转换错误代码整数(偶然的C#?)一个没有符号的号码。这些更广泛的使用和更好的搜索。

PCSC-石文档将代码0x80100066声明为卡片没有响应。这似乎适合你的问题,因此想法是,首先尝试另一张卡,然后交换阅读器。

更新:后来我注意到,您的错误代码列表对于某些代码似乎是不同的,因为它列出了不应答卡的不同号码,分析这些差异可能也有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52120938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档