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