我正在更新智能卡应用程序(使用winscard.dll的Windows2)以在Windows7上运行。对于32位,只需进行较小的更改。在64位下,似乎有一个调用SCardConnectA的挂起-它坐着不返回。停止智能卡服务/移除智能卡将允许应用程序完成。
.net应用程序使用互操作,因此为了排除这种情况,我尝试从C++动态链接库调用scardconnectA,结果相同。这发生在TODOS和Gemalto设备上。到目前为止,在应用程序中,它已经清楚地设置并与阅读器进行了交谈,并确定了卡的存在。
对如何调查有什么建议吗?这里有没有可以应用的超时值?
谢谢,
戴维·米切尔
发布于 2010-11-03 21:51:54
我现在有了一个解决方案(很抱歉花了几天时间才把它放在这里)。
在64位Windows7中似乎有行为变化。应用程序中有一个没有EndTransaction的BeginTransaction,这似乎是导致挂起的原因。出于某种原因,32位Windows原谅了这一点。
再次感谢所有留言的人。
戴维·米切尔
发布于 2010-10-19 23:50:04
您必须与各自的制造商合作,才能找到解决方案。您没有发布任何代码片段来验证您是否做错了什么,我怀疑您是否在本机程序中仔细检查了该行为。有几种方法可以笨拙地处理这些论点。像其他人一样,使用Unicode版本的可能性很小。
这是一种困难的支持请求,您正在与微软和卡供应商这两方合作,他们很容易相互指责。快速解决方法的唯一希望是通过将目标平台设置为x86来强制应用程序在32位模式下运行。
发布于 2010-10-20 07:29:39
大多数读卡器都包含64位驱动程序和32位驱动程序的单独安装程序-金雅拓肯定是这样做的(参见http://support.gemalto.com/?id=46查看针对不同架构的多个读卡器安装程序的示例页面)。
您是否仔细检查以确保在64位操作系统下使用64位驱动程序?
https://stackoverflow.com/questions/3969201
复制相似问题