ACS ACR83 PINeasy Smart Card Reader User Manual
Page 44

ACR83 – Reference Manual
Version 1.05
www.acs.com.hk
Page 44 of 49
exit(1);
}
i = 0;
pReader = pmszReaders;
while (*pReader != '\0')
{
readerName[i] = new char[strlen(pReader) + 1];
if (readerName[i] == NULL)
{
printf("Error: not enough memory\n");
exit(1);
}
strcpy(readerName[i], pReader);
i++;
// Advance to the next value
pReader = pReader + strlen(pReader) + 1;
}
// Free the memory
SCardFreeMemory(hSCardContext, pmszReaders);
}
if (numReaders == 0)
{
printf("Error: cannot find reader in the system\n");
return 1;
}
SCARDHANDLE hCard;
DWORD dwAP;
const int BUFFER_SIZE = 300;
BYTE bSendBuffer[BUFFER_SIZE];
DWORD dwSendBufferLen;
BYTE bRecvBuffer[BUFFER_SIZE];
DWORD dwRecvBufferLen;
BYTE bOutputBuffer[100];
DWORD dwNumBytesReturned;
DWORD featureControlCodes[FEATURE_SIZE];
DWORD controlCode;
// Connect to the first reader
printf("Connecting to %s...\n", readerName[0]);
lReturn = SCardConnect(hSCardContext, readerName[0],
SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, &hCard, &dwAP);
if (lReturn != SCARD_S_SUCCESS)
printf("Error: SCardConnect failed with error 0x%08x\n", lReturn);
else
{
// Get feature request
printf("Getting feature request...\n");
dwRecvBufferLen = sizeof(bRecvBuffer);
lReturn = SCardControl(hCard, CM_IOCTL_GET_FEATURE_REQUEST,
NULL, 0,
bRecvBuffer, dwRecvBufferLen, &dwRecvBufferLen);