ACS ACR83 PINeasy Smart Card Reader User Manual
Page 43

ACR83 – Reference Manual
Version 1.05
www.acs.com.hk
Page 43 of 49
BYTE abData[1];
} PIN_MODIFY_STRUCTURE, *PPIN_MODIFY_STRUCTURE;
typedef struct _PIN_PROPERTIES_STRUCTURE {
USHORT wLcdLayout;
BYTE bEntryValidationCondition;
BYTE bTimeOut2;
} PIN_PROPERTIES_STRUCTURE, *PPIN_PROPERTIES_STRUCTURE;
typedef struct _READ_KEY_OPTION {
BYTE bTimeOut;
WORD wPINMaxExtraDigit;
BYTE bKeyReturnCondition;
BYTE bEchoLCDStartPosition;
BYTE bEchoLCDMode;
} READ_KEY_OPTION;
#pragma pack(pop)
int main(int argc, char *argv[])
{
SCARDCONTEXT hSCardContext;
LONG lReturn;
lReturn = SCardEstablishContext(SCARD_SCOPE_USER, NULL, NULL,
&hSCardContext);
if (lReturn != SCARD_S_SUCCESS)
{
printf("Error: SCardEstablishContext failed with error 0x%08x\n",
lReturn);
return 1;
}
char **readerName = NULL;
int numReaders = 0;
int i;
LPTSTR pmszReaders = NULL;
LPTSTR pReader;
DWORD cch = SCARD_AUTOALLOCATE;
lReturn = SCardListReaders(hSCardContext, NULL, (LPTSTR) &pmszReaders,
&cch);
if (lReturn == SCARD_S_SUCCESS)
{
pReader = pmszReaders;
while (*pReader != '\0')
{
printf("Reader: %s\n", pReader);
// Advance to the next value
pReader = pReader + strlen(pReader) + 1;
numReaders++;
}
// Allocate reader name
readerName = new char*[numReaders];
if (readerName == NULL)
{
printf("Error: not enough memory\n");