Hallo,
ich bekomm aus der Funktion SCardListReadersA keinen String heraus.
SmartCard-Leser ist angeschlossen und der Rückgabewert Size = 54 bei mir stimmt schon mal.
Könnte mir jemand weiterhelfen?
Delphi-Quellcode:
type
SCARDCONTEXT = ULONG_PTR; // Cardinal
PSCARDCONTEXT = ^SCARDCONTEXT;
LPSCARDCONTEXT = ^SCARDCONTEXT;
function SCardListReadersA(hContext: SCARDCONTEXT; mszGroups: LPCSTR; out mszReaders: LPSTR; out pcchReaders: LPDWORD): ULONG; stdcall; external 'Winscard.dll';
...
procedure TForm1.Button1Click(Sender: TObject);
var ret, Size: Cardinal;
mszReaders: PAnsiChar;
pcchReaders: PDWORD;
Readers: String;
begin
ret:=SCardListReadersA(0, 0, mszReaders, pcchReaders);
Size:=DWORD(pcchReaders);
SetString(Readers, mszReaders, Size);
Memo1.Lines.Add('Ret: '+IntToStr(ret));
Memo1.Lines.Add('Size: '+IntToStr(Size));
Memo1.Lines.Add('Readers: '+Readers);
end;
OS: Win7 x64
Die Funktion sollte alle angeschlossenen SmartCard-Leser auflisten (z.B. von Chipdrive (SCM Microsystems)).