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