第1个回答 2011-10-26
我最近也在做PCSC,一起研究吧,这个pvInBuffer 大小没有规定的把?它是发给reader的escape command,而不是卡类型
给这个你看看:
#include <winscard.h>
#define IOCTL_CSB6_PCSC_ESCAPE SCARD_CTL_CODE(2048)
// Use ScardListReaders to get reader_name
LONG csb6_control(const char *reader_name,
const BYTE in_buffer[],
DWORD in_length,
BYTE out_buffer[],
DWORD max_out_length,
DWORD *got_out_length)
{
SCARDCONTEXT hContext;
SCARDHANDLE hCard;
LONG rc;
DWORD dwProtocol;
rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM,
NULL,
NULL,
&hContext);
if (rc != SCARD_S_SUCCESS)
return rc;
rc = SCardConnect(hContext,
reader_name,
SCARD_SHARE_DIRECT,
0,
&hCard,
&dwProtocol);
if (rc != SCARD_S_SUCCESS)
{
SCardReleaseContext(hContext);
return rc;
}
rc = SCardControl(hCard,
IOCTL_CSB6_PCSC_ESCAPE,
in_buffer,
in_length,
out_buffer,
max_out_length,
got_out_length);
SCardDisconnect(hCard, SCARD_LEAVE_CARD);
SCardReleaseContext(hContext);
return rc;
}