2010-10-13 92 views
2

我在写一个必须处理智能卡读卡器的Windows服务。列出使用智能卡读卡器的进程

很多时候,当我尝试连接到插入智能卡,SCardConnect()失败SCARD_E_SHARING_VIOLATION这基本上意味着:

智能卡不能因为其他未完成的连接进行访问。

不够公平。

我想至少有一个其他进程试图同时访问智能。但是有没有办法确定它是哪个进程?

+0

我们已经注意到运行HP Protect Tools的惠普机器上存在这个问题,并且尚未能解决这个问题(缺少卸载HP保护工具) - 您使用的是HP吗? – Damien 2010-10-19 17:09:47

回答

3

在你的地方,我会尝试用Process Explorer查看打开的文件句柄,如果你访问智能卡阅读器,你的应用程序。要做到这一点,你应该选择你的过程,并按Ctrl-H(菜单“视图”/“低窗格视图”/“汉斯”)。在知道智能卡读卡器的设备名称后,如果收到SCARD_E_SHARING_VIOLATION错误,您将能够找出使用设备的其他进程。您应该只使用Ctrl-F(菜单“查找”/“查找句柄或DLL ...”)来查找文件句柄。

+0

@ereOn,你在哪里可以找到它是哪个句柄? – John 2016-07-11 16:08:23

+0

@Abatonime:你能更清楚地提出你的问题吗?你有什么问题?您需要将哪种打开的资源(句柄)定位? – Oleg 2016-07-11 16:19:23

+0

我和OP有完全相同的问题。我按照你的指示,但我无法找到Process Explorer中的句柄。我问OP是否能够找到它。 – John 2016-07-11 18:36:27