Hallo zusammen,
wer kann mir unter VB.NET bei einem Stückchen Programm helfen, mit dem ich eine per USB-Kartenleser eingelegt Smartcard abfragen möchte?
Hierfür wird die API WinSCard.dll benötigt. Die Kartenleser erkennen funktioniert schon, nur habe ich Probleme auszulesen, in welchem Kartenleser überhaupt eine Smartkard eingelegt ist. Hierfür soll die Funktion "SCardListCards" dienen. Jedoch scheine ich bei der Deklaration einen Fehler drin zu haben, den ich nicht finde. Wäre super, wenn da mal jemand einen Blick draufwerfen könnte. Ich laufe nämlich immer auf den Fehler "PInvokeStackImbalance wurde erkannt : Ein Aufruf an die PInvoke-Funktion "SCardListCards" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen."
Danke schonmal
Hier noch der entsprechende Code-Ausschnitt:
wer kann mir unter VB.NET bei einem Stückchen Programm helfen, mit dem ich eine per USB-Kartenleser eingelegt Smartcard abfragen möchte?
Hierfür wird die API WinSCard.dll benötigt. Die Kartenleser erkennen funktioniert schon, nur habe ich Probleme auszulesen, in welchem Kartenleser überhaupt eine Smartkard eingelegt ist. Hierfür soll die Funktion "SCardListCards" dienen. Jedoch scheine ich bei der Deklaration einen Fehler drin zu haben, den ich nicht finde. Wäre super, wenn da mal jemand einen Blick draufwerfen könnte. Ich laufe nämlich immer auf den Fehler "PInvokeStackImbalance wurde erkannt : Ein Aufruf an die PInvoke-Funktion "SCardListCards" hat das Gleichgewicht des Stapels gestört. Wahrscheinlich stimmt die verwaltete PInvoke-Signatur nicht mit der nicht verwalteten Zielsignatur überein. Überprüfen Sie, ob die Aufrufkonvention und die Parameter der PInvoke-Signatur mit der nicht verwalteten Zielsignatur übereinstimmen."
Danke schonmal
Hier noch der entsprechende Code-Ausschnitt:
Code:
Declare Function SCardListCards Lib "winscard.dll" Alias "SCardListCardsA" ( _ ByRef hContext As Long, _ ByRef pbAtr As Byte, _ ByRef rgquidInterfaces As Long, _ ByVal cguidInterfaceCount As Long, _ ByVal mszCards As String, _ ByRef pcchCards As Long) As Long Dim lretxy As Long Dim karten As String = Nothing Dim wert As Long = -1 ' !!! Hier tritt immer der Fehler auf !!! lretxy = SCardListCards(Nothing, Nothing, Nothing, Nothing, karten, wert)
Comment