2017-02-25 39 views
1

我正在使用PCSC-lite v1.6.4開發基於智能卡的應用程序。 我需要一種方法來檢測一旦從讀卡器中取出智能卡,然後檢測插入到讀卡器中,以便智能卡將被迫再次完成特定過程。使用PCSC在C中檢測智能卡的移除和插入

如果可能,是否有任何基於中斷/事件的方式而不是簡單的輪詢?

回答

2

WinSCard庫中有SCardGetStatusChange

阻止執行,直到一組特定閱讀器中的卡的當前可用性發生變化。

由於PCSC Lite是WinSCard庫的重新實現,因此您還可以在PCSC Lite(here)中使用它。你可以找到幾個examples

+0

感謝您的示例鏈接。這給了我一個很好的起點。但是狀態改變後收到的dwEventState沒有什麼問題。無論何時智能卡狀態改變,其第三個字節都會一直增加。可以嗎?它可以溢出到實際狀態字節中嗎? – mk09

+0

在示例鏈接中,代碼使用500ms超時。這裏更適合使用INFINITE(-1)值作爲超時值,因爲它會節省很多CPU時間? – mk09

+0

是的,你可以使用INFINITE作爲參數。那麼這個函數永遠不會超時。你確定每當智能卡狀態改變時'dwEventState'都會增加一個?也許你看到的是'SCARD_STATE_CHANGED'切換([SCARD_READERSTATE結構](https://msdn.microsoft.com/en-us/library/windows/desktop/aa379808%28v=vs.85%29.aspx))。 – arminb