scd: pinpad fix for PC/SC on Windows.
authorNIIBE Yutaka <gniibe@fsij.org>
Tue, 29 Oct 2013 00:07:05 +0000 (09:07 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Tue, 29 Oct 2013 00:07:05 +0000 (09:07 +0900)
* scd/apdu.c (SCARD_CTL_CODE): Fix for Windows.

scd/apdu.c

index 0351e00..e0127d8 100644 (file)
@@ -246,7 +246,13 @@ static char (* DLSTDCALL CT_close) (unsigned short ctn);
 
 /* Fix pcsc-lite ABI incompatibilty.  */
 #ifndef SCARD_CTL_CODE
-# define SCARD_CTL_CODE(code) (0x42000000 + (code))
+#ifdef _WIN32
+#include <winioctl.h>
+#define SCARD_CTL_CODE(code) CTL_CODE(FILE_DEVICE_SMARTCARD, (code), \
+                                     METHOD_BUFFERED, FILE_ANY_ACCESS)
+#else
+#define SCARD_CTL_CODE(code) (0x42000000 + (code))
+#endif
 #endif
 
 #define CM_IOCTL_GET_FEATURE_REQUEST     SCARD_CTL_CODE(3400)
@@ -349,6 +355,7 @@ long (* DLSTDCALL pcsc_control) (long card,
 
 
 /*  Prototypes.  */
+static int pcsc_vendor_specific_init (int slot);
 static int pcsc_get_status (int slot, unsigned int *status);
 static int reset_pcsc_reader (int slot);
 static int apdu_get_status_internal (int slot, int hang, int no_atr_reset,