Announcement

Collapse
No announcement yet.

Smartcard abfragen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Smartcard abfragen

    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:
    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)

  • #2
    Wieso eine Bufferlänge von -1? Versuch mal SCARD_AUTOALLOCATE zusetzen und diesen dann auch freigeben -> siehe Doku
    Christian

    Comment


    • #3
      Originally posted by Christian Marquardt View Post
      Wieso eine Bufferlänge von -1? Versuch mal SCARD_AUTOALLOCATE zusetzen und diesen dann auch freigeben -> siehe Doku
      Wie meinst du das? Laut der Definitionen, die ich gefunden habe, wird SCARD_AUTOALLOCATE auch nur als Konstante mit -1 deklariert.

      Comment

      Working...
      X