ACS ACR83 PINeasy Smart Card Reader User Manual

Page 43

Advertising
background image

ACR83 – Reference Manual

[email protected]

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");

Advertising