[Pcsclite-cvs-commit] PCSC/doc/example pcsc_demo.c,1.16,1.17
rousseau@haydn.debian.org
rousseau@haydn.debian.org
Update of /cvsroot/pcsclite/PCSC/doc/example
In directory haydn:/tmp/cvs-serv17655
Modified Files:
pcsc_demo.c
Log Message:
add SCardTransmit() code sample
Index: pcsc_demo.c
===================================================================
RCS file: /cvsroot/pcsclite/PCSC/doc/example/pcsc_demo.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- pcsc_demo.c 10 Jun 2004 14:57:47 -0000 1.16
+++ pcsc_demo.c 2 Aug 2004 20:43:15 -0000 1.17
@@ -63,6 +63,10 @@
char pbReader[MAX_READERNAME] = "";
int reader_nb;
int i;
+ SCARD_IO_REQUEST pioRecvPci;
+ BYTE pbRecvBuffer[10];
+ BYTE pbSendBuffer[] = { 0xC0, 0xA4, 0x00, 0x00, 0x02, 0x3F, 0x00 };
+ DWORD dwSendLength, dwRecvLength;
printf("PC/SC sample code\n");
printf("V 1.1 2003-2004, Ludovic Rousseau <ludovic.rousseau@free.fr>\n");
@@ -166,9 +170,34 @@
printf("\n");
PCSC_ERROR(rv, "SCardStatus")
+ /* exchange APDU */
+ dwSendLength = sizeof(pbSendBuffer);
+ dwRecvLength = sizeof(pbRecvBuffer);
+ rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+ &pioRecvPci, pbRecvBuffer, &dwRecvLength);
+ PCSC_ERROR(rv, "SCardTransmit")
+
+ /* card disconnect */
+ rv = SCardDisconnect(hCard, SCARD_LEAVE_CARD);
+ PCSC_ERROR(rv, "SCardDisconnect")
+
+ /* connect to a card */
+ dwActiveProtocol = -1;
+ rv = SCardConnect(hContext, readers[reader_nb], SCARD_SHARE_EXCLUSIVE,
+ SCARD_PROTOCOL_T0, &hCard, &dwActiveProtocol);
+ printf(" Protocol: %ld\n", dwActiveProtocol);
+ PCSC_ERROR(rv, "SCardConnect")
+
+ /* exchange APDU */
+ dwSendLength = sizeof(pbSendBuffer);
+ dwRecvLength = sizeof(pbRecvBuffer);
+ rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+ &pioRecvPci, pbRecvBuffer, &dwRecvLength);
+ PCSC_ERROR(rv, "SCardTransmit")
+
/* card reconnect */
rv = SCardReconnect(hCard, SCARD_SHARE_EXCLUSIVE,
- SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, SCARD_UNPOWER_CARD,
+ SCARD_PROTOCOL_T0 | SCARD_PROTOCOL_T1, SCARD_LEAVE_CARD,
&dwActiveProtocol);
PCSC_ERROR(rv, "SCardReconnect")
@@ -185,6 +214,13 @@
printf(" %02X", pbAtr[i]);
printf("\n");
PCSC_ERROR(rv, "SCardStatus")
+
+ /* exchange APDU */
+ dwSendLength = sizeof(pbSendBuffer);
+ dwRecvLength = sizeof(pbRecvBuffer);
+ rv = SCardTransmit(hCard, SCARD_PCI_T0, pbSendBuffer, dwSendLength,
+ &pioRecvPci, pbRecvBuffer, &dwRecvLength);
+ PCSC_ERROR(rv, "SCardTransmit")
/* card disconnect */
rv = SCardDisconnect(hCard, SCARD_UNPOWER_CARD);