Delphi PCSCConnector和Windows 7

Delphi PCSCConnector和Windows 7,delphi,windows-7,smartcard,pcsc,Delphi,Windows 7,Smartcard,Pcsc,我正在使用上次更新(2004年4月)中的PCSCConnector。 所有这些都可以在Windows XP中正常工作,但在Windows 7中出现了一些问题 当我在DelphiIDE中按CTRL+F2时(终止),我的软件已经打开了一个卡连接,那么任何软件(包括我自己的)都无法打开到卡的新连接。我需要物理上重新连接卡(在我的情况下是USB),以便能够创建到卡的新连接 我尝试将scardStabilisContext中的dwScope更改为SCARD\u SCOPE\u系统(从SCARD\u SCO

我正在使用上次更新(2004年4月)中的
PCSCConnector
。 所有这些都可以在Windows XP中正常工作,但在Windows 7中出现了一些问题

当我在DelphiIDE中按CTRL+F2时(终止),我的软件已经打开了一个卡连接,那么任何软件(包括我自己的)都无法打开到卡的新连接。我需要物理上重新连接卡(在我的情况下是USB),以便能够创建到卡的新连接

我尝试将
scardStabilisContext
中的
dwScope
更改为
SCARD\u SCOPE\u系统
(从
SCARD\u SCOPE\u USER
)和
scardDisposition
中的
dwDisposition
更改为
SCARD\u LEAVE\u CARD
(从
SCARD\u RESET\u CARD\u
),但问题仍然存在。

当您使用Ctrl+F2键时,这是一个强制终止。没有任何代码有机会正确清理、关闭或释放任何东西——它只是关闭了。您对库的退出代码所做的任何更改都不会有帮助,因为它永远没有机会运行。您已通过强制终止应用程序阻止了这种情况的发生


解决方案:除了失控的代码外,不要对任何东西使用Ctrl+F2,否则无法停止任何其他方式。按正常方式关闭应用程序,这样它就有机会清理并调用
finalization
code等等。

是,但智能卡可以使用专用连接或不使用专用连接进行连接
SCARD\u SCOPE\u用户
可能不需要独占连接。当然,一个好的操作系统应该使智能卡再次可用。但要么是操作系统在这方面存在缺陷,要么是上下文没有丢失,独占连接仍然存在。终结无法解决问题,在Windows XP中Ctrl+F2通常可以感知到。我特别说过“如果您强制应用程序不正确关闭,则终结不起作用”。请再读一遍我写的东西。如果使用Ctrl+F2,则无法正常关闭。如果您想让它正常关闭,请不要使用Ctrl+F2来关闭它。很抱歉,在应用程序终止时释放资源是不科学的。此外,您所说的“强制终止”是讨论的结束,而不是在XP上。我不确定仅仅关注这个术语就足以回答我的问题,我当然想知道是什么导致了这个问题。也就是说,Windows的智能卡处理在每次迭代中都会发生变化,而且这个问题是相当本地化的,因此我们可能永远不会知道。无论您选择如何思考,Ctrl+F2都是一个强制终止。导致这种情况的原因是您的应用程序被不当终止。我不知道还能用什么词来表达。如果你想要整洁的收口,就要整洁地收口。如果你选择用锤子打它,如果它坏了,不要感到惊讶。如果你决定停车是为了把车开到树上,而不是像设计的那样使用刹车,你应该预料到一些意想不到的事情会发生。我不确定忽视答案是否会对你有所帮助,但我放弃了。:-)祝你好运。你的用户会这么做吗?我使用PCSCConnector(尽管经过多年的改进。提示:试着让它更符合实际规格),并且我没有卡被锁定的任何问题。如果通过USB集成,您似乎没有标准的智能卡。我想通常你有一个读卡器和一张卡片,两者都有连接。