代码之家  ›  专栏  ›  技术社区  ›  daftspaniel

在Win 7 64位上挂上scardconnecta

  •  0
  • daftspaniel  · 技术社区  · 14 年前

    我正在更新智能卡应用程序(.NET 2使用winscard.dll)以在Windows 7上运行。对于32位,只需要进行细微的更改。在64位下,似乎有一个挂起的呼叫scardconnecta-它坐着不回来。停止智能卡服务/取出智能卡允许应用程序完成。

    .NET应用程序使用互操作来排除这一点,我已经尝试从C++ DLL调用SCADCONTALTA,结果相同。这发生在Todos和Gemalto设备上。到目前为止,在应用程序中,它已经清楚地设置并与读卡器进行了交谈,并确定了卡的存在。

    关于如何调查有什么建议吗?这里有我可以应用的超时值吗?

    谢谢,

    戴维米切尔

    4 回复  |  直到 14 年前
        1
  •  1
  •   Hans Passant    14 年前

    您必须与各自的制造商合作才能找到解决方案。您没有发布任何代码片段来验证您是否做错了什么,我怀疑您是否在本机程序中对行为进行了双重检查。有几种方法可以摸索这些论点。像其他人一样,使用Unicode版本的可能性很小。

    这是一种困难的支持请求,您正在与双方合作,微软和卡供应商,他们有可能互相指指点点。对于快速解决方案,您唯一真正希望的是通过将目标平台设置为x86,强制您的应用程序以32位模式运行。

        2
  •  1
  •   Damien    14 年前

    大多数读卡器都包含一个单独的64位驱动程序和32位驱动程序的安装程序-Gemalto肯定会这样做(请参见 http://support.gemalto.com/?id=46 例如一个具有多个读卡器安装程序的示例页面,用于不同的体系结构)。

    是否再次检查以确保在64位操作系统下使用64位驱动程序?

        3
  •  1
  •   Martin Paljak    14 年前
    • 为什么使用scardconnecta而不是scardconnect?
    • 挂起的scardconnect可能意味着有另一个应用程序正在处理该卡,您确定不是这样吗?
        4
  •  0
  •   daftspaniel    14 年前

    我现在有了一个解决办法(很抱歉花了几天时间把它弄到这里)。

    在64位Windows7中出现行为改变。应用程序中有一个没有EndTransaction的BeginTransaction,这似乎导致了挂起。出于某种原因,32位Windows可以原谅这一点。

    再次感谢所有留言的人。

    戴维米切尔

    推荐文章