я написал этот пост за просьбу помочь мне.
Мое требование - читать и писать на смарт-карту (sle4428), используя scard32.dll в контексте c #. Считыватель SCR 3310 SCM Microsystem
Прежде всего, у меня есть код vb.net, который корректно запускается, и я могу читать и записывать данные.
Проблема в том, что я пытаюсь сделать то же самое с помощью C #.
Моей первой попыткой было перевести собственный вызов "SCardComand" в c #, но не получилось.
Вторая попытка состояла в том, чтобы собрать dll из кода VB.net и использовать его в контексте c #, но все равно не получилось.
И если я пишу этот пост, потому что у меня больше нет идей.
следуйте, я предоставляю вам родной вызов в VB.net
<DllImport("SCARD32", EntryPoint:="SCardComand", SetLastError:=True, CallingConvention:=CallingConvention.Winapi, CharSet:=CharSet.Ansi, ExactSpelling:=True)> _
Public Shared Function SCardComand(ByRef handle As Integer,
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef cmd As String,
ByRef cmdLen As Integer,
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef dataIn As String,
ByRef dataInLen As Integer,
<MarshalAs(UnmanagedType.VBByRefStr)> ByRef dataOut As String,
ByRef dataOutLen As Integer) As Integer
End Function
и вот мой перевод на c #.
[DllImport("SCARD32.DLL")]
static extern UInt32 SCardComand(IntPtr handle,
[MarshalAs(UnmanagedType.LPTStr)] ref String cmd,
IntPtr cmdLen,
[MarshalAs(UnmanagedType.LPTStr)] ref String dataIn,
IntPtr dataInLen,
[MarshalAs(UnmanagedType.LPTStr)] out String dataOut,
IntPtr dataOutLen);
И для истины, если я выполню эту команду в c # int Ret = SCardComand(0, "Card,MemVerifyPin,FFFFF", 0,"",0, "", 0);
Получить 16384, что для меня ничего не значит.
Пожалуйста, если у кого-то есть представление о том, как действовать ...