Vb.net SCardGetStatusChange Winscard中的未知读取器

Vb.net SCardGetStatusChange Winscard中的未知读取器,vb.net,smartcard,contactless-smartcard,winscard,Vb.net,Smartcard,Contactless Smartcard,Winscard,我是.net新手,我想确定是否使用winscard的SCardGetStatusChange检测到或删除了该卡。但它返回retcode=-2146435063,当转换为十六进制时,将得到0x8010009=SCARD\u E\u UNKNOWN\u READER。我只是根据 这是我的代码示例 Public Structure SCARDREADER_STATE Public szReader As String Public pvUserData As IntPtr Pu

我是.net新手,我想确定是否使用winscard的SCardGetStatusChange检测到或删除了该卡。但它返回retcode=-2146435063,当转换为十六进制时,将得到0x8010009=SCARD\u E\u UNKNOWN\u READER。我只是根据

这是我的代码示例

Public Structure SCARDREADER_STATE
    Public szReader As String
    Public pvUserData As IntPtr
    Public dwCurrentState As Integer
    Public dwEventState As Integer
    Public cbAtr As Integer
    Public rgbAtr() As Byte
End Structure

<DllImport(winscarddll, CharSet:=CharSet.Ansi, EntryPoint:="SCardGetStatusChangeA")>
Public Shared Function SCardGetStatusChange(ByVal hContext As IntPtr, ByVal dwTime As Integer, ByRef rgReaderState As SCARDREADER_STATE(), ByVal cReaders As Integer) As Integer
End Function
输出是

Ret=-2146435063 读卡器:ACS ACR1222 3S PICC读卡器PICC 0 失败


供未来研究人员/开发人员使用

在SCardGetStatusChange中,我刚刚将ScarderState()更改为ScarderDater

<DllImport(winscarddll, EntryPoint:="SCardGetStatusChangeA", CharSet:=CharSet.Ansi)>
Public Shared Function SCardGetStatusChange(ByVal hContext As IntPtr, ByVal dwTime As Integer, ByRef rgReaderState As SCARDREADER_STATE, ByVal cReaders As Integer) As Integer
End Function

公共共享函数SCardGetStatusChange(ByVal hContext作为IntPtr,ByVal dwTime作为Integer,ByRef rgReaderState作为scarder_STATE,ByVal cReaders作为Integer)作为Integer
端函数
然后在rgbAtr的初始化中添加了


希望这会有所帮助。

您确定已安装读卡器驱动程序吗?你曾经通过机器上的其他应用程序工具成功地使用过你的读卡器吗?是的,事实上我成功地使用了scardconnect和ScarderList。因此,我确信读者工作正常。我只想使用scardgetstatuschange来确定是否检测到卡。您能否提供ScardListReaders的结果?您使用的读卡器名称不正确。在C或C#等语言中,而不是在VB中,可以将反斜杠加倍。NET@WallSkyBlue我正在使用ACR1222L,结果是:ACS ACR1222 3S PICC阅读器PICC 0 ACS ACR1222 3S PICC阅读器SAM 0 ACS ACR1222 3S PICC阅读器SAM 1 ACS ACR1222 3S PICC阅读器SAM 2
<DllImport(winscarddll, EntryPoint:="SCardGetStatusChangeA", CharSet:=CharSet.Ansi)>
Public Shared Function SCardGetStatusChange(ByVal hContext As IntPtr, ByVal dwTime As Integer, ByRef rgReaderState As SCARDREADER_STATE, ByVal cReaders As Integer) As Integer
End Function