2010-10-13 95 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