我正在编写一个必须处理智能卡读卡器的Windows服务。
通常,当我尝试连接到插入的智能卡时,SCardConnect()
会失败并显示SCARD_E_SHARING_VIOLATION
,这基本上意味着:
由于其他未完成的连接,无法访问智能卡。
足够公平。
我想至少有一个其他进程试图同时访问Smart。但有没有办法确定它是哪个过程?
答案 0 :(得分:3)
如果您访问智能卡读卡器,我会尝试使用Process Explorer查看您的应用程序打开的文件句柄。要执行此操作,您应选择您的过程并按 Ctrl-H (菜单“查看”/“低窗格视图”/“Handes”)。在您知道智能卡读卡器的设备名称后,如果收到SCARD_E_SHARING_VIOLATION
错误,您将能够找到使用该设备的其他进程。您应该只使用 Ctrl-F (菜单“查找”/“查找句柄或DLL ...”)来查找文件句柄。