Ich bin neu bei.net und ich möchte identifizieren, wenn Karte mit SCardGetStatusChange von Winscard erkannt oder entfernt wird. Aber es wird retcode = -2146435063 zurückgegeben, was bei der Konvertierung in Hex 0x80100009 = SCARD_E_UNKNOWN_READER ergibt. Ich meinen Code nur auf Basis von pinvoke.netUnbekannter Leser in SCardGetStatusChange Winscard
Hier Probe meines Codes
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
Und in meiner Form.
Public Function gAtr(ByVal hContext As IntPtr, ByVal reader As String) As String
Dim ret As Integer
Dim rs(0) As WinscardFun.SCARDREADER_STATE
Console.Write(reader)
'ReDim rs(0).rgbAtr(0 To 35)
'rs(0).dwEventState = &H0
'rs(0).rgbAtr = Nothing
'rs(0).cbAtr = 0
rs(0).szReader = reader ' "\\\\?PnP?\\Notification"
rs(0).dwCurrentState = SCARD_STATE_UNAWARE
ret = WinscardFun.SCardGetStatusChange(hContext, 100000000, rs, 1)
Console.Write("Ret=" + ret.ToString + vbCrLf)
Console.Write("Reader:" + rs(0).szReader + vbCrLf)
If ret = 0 And rs(0).cbAtr > 0 And rs(0).rgbAtr IsNot Nothing Then
test = "Success"
Else
test = "Fail"
End If
Return test
End Function
Der Ausgang ist
Ret = -2146435063 Reader: ACS ACR1222 3S PICC Reader PICC 0 Ausfallen
Sind Sie sicher, dass Sie den Treiber für den Kartenleser installiert haben? Haben Sie Ihren Kartenleser jemals erfolgreich über andere App-Tools auf Ihrem Computer verwendet? –
Ja, tatsächlich habe ich scardconnect und scardreaderlist erfolgreich benutzt. Daher bin ich sicher, dass der Leser richtig funktioniert. Ich möchte nur die scardgetstatus ändern, um zu erkennen, ob die Karte erkannt wurde oder nicht. – Anonymouse24
könnten Sie Ergebnis von SCardListReaders –