首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除读取器时pkcs11Interop与WaitForSlotEvent的问题

删除读取器时pkcs11Interop与WaitForSlotEvent的问题
EN

Stack Overflow用户
提问于 2021-02-23 13:21:30
回答 1查看 213关注 0票数 1

我按照以下方式设置了pkcs11Interop库

代码语言:javascript
复制
Pkcs11Library = PkcsFactories.Pkcs11LibraryFactory.LoadPkcs11Library(PkcsFactories, pkcs11LibraryPath, AppType.MultiThreaded)

然后我立即使用WPF DispatcherTimer,其中包含WaitForSlotEvent。

代码语言:javascript
复制
        Private Sub CardInsertedTimer_Tick(sender As Object, e As EventArgs)
            Dim eventHappened As Boolean
                Dim id As ULong

                Pkcs11Library.WaitForSlotEvent(WaitType.NonBlocking, eventHappened, id)

            If eventHappened Then
                Debug.Print("CardInsertedEvent - Event - Event: " + eventHappened.ToString + "  ID: " + id.ToString)
            End If
        End Sub

我希望这里不会有什么意外。如果删除插槽(这是一个USB智能卡读取器),那么我将得到一个C_WaitForSlotEvent返回的CKR_DEVICE_ERROR。

  • DispatcherTimer适合WaitForSlotEvent吗?
  • 我应该怎么做才能避免C_WaitForSlotEvent CKR_DEVICE_ERROR?
  • pkcs11Interop是否处理插槽的添加和删除(即。( SmartCard阅读器)?
  • 如果pkcs11Interop不处理添加和删除插槽的操作,那么轮询是唯一的方法,最佳的轮询方式是什么?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-23 14:25:44

>是WaitForSlotEvent?的DispatcherTimer吗?

总体来说应该没问题。您还可以考虑在从单独线程调用的阻塞模式中使用WaitForSlotEvent

>我该怎么办才能避免C_WaitForSlotEvent CKR_DEVICE_ERROR?

您需要询问非托管PKCS#11库的供应商。

AFAIK C_WaitForSlotEvent是为令牌/卡相关事件而设计的,而不是用于与时隙/读取器相关的事件。PKCS#11规范指出,当您添加或删除插槽/读取器时,可能需要重新加载PKCS#11库,甚至重新启动OS:

在某些平台上,或者在更早的PKCS11兼容库中,可能需要成功地调用C_Initialize或重新启动整个系统。

> pkcs11Interop是否处理插槽的添加和删除(即。( SmartCard阅读器)?

Pkcs11Interop只允许您访问PKCS#11规范中描述的非托管函数C_WaitForSlotEvent

>如果pkcs11Interop不处理添加和删除插槽是轮询的唯一方法,那么最好的轮询方式是什么?

见第一个问题的答案。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66333956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档