[Pcsclite-cvs-commit] r4341 - /trunk/Drivers/ccid/examples/scardcontrol.c

rousseau at users.alioth.debian.org rousseau at users.alioth.debian.org
Tue Jul 21 17:54:48 UTC 2009


Author: rousseau
Date: Tue Jul 21 17:54:47 2009
New Revision: 4341

URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=4341
Log:
send a "secoder info" command if the reader supports
FEATURE_MCT_READERDIRECT

Modified:
    trunk/Drivers/ccid/examples/scardcontrol.c

Modified: trunk/Drivers/ccid/examples/scardcontrol.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/Drivers/ccid/examples/scardcontrol.c?rev=4341&op=diff
==============================================================================
--- trunk/Drivers/ccid/examples/scardcontrol.c (original)
+++ trunk/Drivers/ccid/examples/scardcontrol.c Tue Jul 21 17:54:47 2009
@@ -81,8 +81,8 @@
 	DWORD send_length, length;
 	DWORD verify_ioctl = 0;
 	DWORD modify_ioctl = 0;
-	DWORD pin_properties = 0;
-	DWORD mct_readerdirect = 0;
+	DWORD pin_properties_ioctl = 0;
+	DWORD mct_readerdirect_ioctl = 0;
 	SCARD_IO_REQUEST pioRecvPci;
  	SCARD_IO_REQUEST pioSendPci;
 	PCSC_TLV_STRUCTURE *pcsc_tlv;
@@ -95,6 +95,7 @@
 #ifdef MODIFY_PIN
 	PIN_MODIFY_STRUCTURE *pin_modify;
 #endif
+	char secoder_info[] = { 0x20, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 };
 
 	printf("SCardControl sample code\n");
 	printf("V 1.3 © 2004-2009, Ludovic Rousseau <ludovic.rousseau at free.fr>\n");
@@ -237,15 +238,29 @@
 				break;
 			case FEATURE_IFD_PIN_PROPERTIES:
 				printf("Reader supports FEATURE_IFD_PIN_PROPERTIES\n");
-				pin_properties = ntohl(pcsc_tlv[i].value);
+				pin_properties_ioctl = ntohl(pcsc_tlv[i].value);
 				break;
 			case FEATURE_MCT_READERDIRECT:
 				printf("Reader supports FEATURE_MCT_READERDIRECT\n");
-				mct_readerdirect = ntohl(pcsc_tlv[i].value);
+				mct_readerdirect_ioctl = ntohl(pcsc_tlv[i].value);
 				break;
 			default:
 				printf("Can't parse tag: 0x%02X\n", pcsc_tlv[i].tag);
 		}
+	}
+	printf("\n");
+
+	if (mct_readerdirect_ioctl)
+	{
+		rv = SCardControl(hCard, mct_readerdirect_ioctl, secoder_info,
+			sizeof(secoder_info), bRecvBuffer, sizeof(bRecvBuffer), &length);
+		PCSC_ERROR_CONT(rv, "SCardControl(MCT_READERDIRECT)")
+
+		printf("MCT_READERDIRECT (%ld): ", length);
+		for (i=0; i<length; i++)
+			printf("%02X ", bRecvBuffer[i]);
+		printf("\n");
+
 	}
 
 	if (0 == verify_ioctl)




More information about the Pcsclite-cvs-commit mailing list