1

我正在尝试在我的 WCF 项目中使用 winscard.dll 的连接功能连接到智能卡。Wcf 服务,正在与安装在 Windows Server 8.1 上的远程机器一起发布

ScardConnect 函数返回值 6。

public int Connect()
                {
                    int returnCode = -2;
                    string[] tempStr = new string[3];

                    returnCode = ModWinsCard.SCardEstablishContext(ModWinsCard.SCARD_SCOPE_USER,
 0, 0, ref hContext);

                    if (returnCode == ModWinsCard.SCARD_S_SUCCESS)
                    {
                        returnCode = ModWinsCard.SCardConnect(hContext, "ACS ACR1281 1S Dual Reader PICC 0", ModWinsCard.SCARD_SHARE_SHARED, ModWinsCard.SCARD_PROTOCOL_T0 | ModWinsCard.SCARD_PROTOCOL_T1, ref hCard, ref pdwActiveProtocol);

                        if (returnCode == ModWinsCard.SCARD_S_SUCCESS)
                            return 1;
                        else
                            return returnCode;
                    }
                    else
                        return returnCode;
                }


  Interface (IService1)

[OperationContract] [FaultContract(typeof(Service1))] int Connect(int hContext, string szReaderName, ref int phCard, ref int ActiveProtocol);

ScardConnect 功能

[DllImport("winscard.dll")]
    public static extern int SCardConnect(int hContext, string szReaderName, int dwShareMode, int dwPrefProtocol, ref int phCard, ref int ActiveProtocol);

返回代码“6”是什么意思。

注意:Wcf 项目构建操作:x86 客户端项目构建操作:x86

4

1 回答 1

2

检查“hContext”的值。阅读器名称可能有错误。所以我建议您首先调用SCardListReaders函数来获取确切的阅读器名称。

于 2015-11-03T05:10:50.490 回答