我正在更新智能卡应用程序(.net 2使用winscard.dll)以在Windows 7上运行。只需要对32位进行微小更改。在64位下,似乎有一个挂起呼叫SCardConnectA - 它坐着并且没有返回。停止智能卡服务/删除卡允许应用程序完成。
.net应用程序使用互操作来排除这一点,我尝试从C ++ Dll调用scardconnectA并获得相同的结果。这发生在TODOS和金雅拓设备上。到目前为止,在应用程序中它已经清楚地设置并与读者交谈并确定存在卡。
有关如何调查的任何建议?我可以在这里申请超时值吗?
谢谢,
Davy Mitchell
答案 0 :(得分:1)
您必须与相应的制造商合作才能找到解决方案。你没有发布任何片段来验证你做错了什么,我怀疑你是否已经仔细检查了原生程序中的行为。有几种方法可以弄乱这些论点。像其他人一样使用Unicode版本将是一个遥远的机会。
这是一种困难的支持请求,您正在与微软和卡供应商这两方合作,他们可能会互相指责。您对快速解决方法的唯一真正希望是通过将目标平台设置为x86来强制您的应用程序以32位模式运行。
答案 1 :(得分:1)
大多数读卡器都包含64位驱动程序和32位驱动程序的单独安装程序 - 金雅拓肯定会这样做(请参阅http://support.gemalto.com/?id=46以获取针对不同体系结构的多个读取器安装程序的示例页面。)
您是否仔细检查以确保在64位操作系统下使用64位驱动程序?
答案 2 :(得分:1)
答案 3 :(得分:0)
我现在有了一个解决方案(道歉需要花几天时间才能到达这里)。
在64位Windows 7中出现行为更改。在应用程序中有一个没有EndTransaction的BeginTransaction,这似乎导致了挂起。出于某种原因,32位Windows原谅了这一点。
再次感谢所有留言的人。
Davy Mitchell