pcsc-lite  1.7.4
pcsclite.h
Go to the documentation of this file.
00001 /*
00002  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
00003  *
00004  * Copyright (C) 1999-2004
00005  *  David Corcoran <corcoran@linuxnet.com>
00006  * Copyright (C) 2002-2011
00007  *  Ludovic Rousseau <ludovic.rousseau@free.fr>
00008  * Copyright (C) 2005
00009  *  Martin Paljak <martin@paljak.pri.ee>
00010  *
00011  * $Id: pcsclite.h.in 5736 2011-05-12 08:43:33Z rousseau $
00012  */
00013 
00021 #ifndef __pcsclite_h__
00022 #define __pcsclite_h__
00023 
00024 #include <wintypes.h>
00025 
00026 #ifdef __cplusplus
00027 extern "C"
00028 {
00029 #endif
00030 
00031 typedef LONG SCARDCONTEXT; 
00032 typedef SCARDCONTEXT *PSCARDCONTEXT;
00033 typedef SCARDCONTEXT *LPSCARDCONTEXT;
00034 typedef LONG SCARDHANDLE; 
00035 typedef SCARDHANDLE *PSCARDHANDLE;
00036 typedef SCARDHANDLE *LPSCARDHANDLE;
00037 
00038 #define MAX_ATR_SIZE            33  
00040 /* Set structure elements aligment on bytes
00041  * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */
00042 #ifdef __APPLE__
00043 #pragma pack(1)
00044 #endif
00045 
00046 typedef struct
00047 {
00048     const char *szReader;
00049     void *pvUserData;
00050     DWORD dwCurrentState;
00051     DWORD dwEventState;
00052     DWORD cbAtr;
00053     unsigned char rgbAtr[MAX_ATR_SIZE];
00054 }
00055 SCARD_READERSTATE, *LPSCARD_READERSTATE;
00056 
00058 typedef struct
00059 {
00060     unsigned long dwProtocol;   
00061     unsigned long cbPciLength;  
00062 }
00063 SCARD_IO_REQUEST, *PSCARD_IO_REQUEST, *LPSCARD_IO_REQUEST;
00064 
00065 typedef const SCARD_IO_REQUEST *LPCSCARD_IO_REQUEST;
00066 
00067 extern const SCARD_IO_REQUEST g_rgSCardT0Pci, g_rgSCardT1Pci, g_rgSCardRawPci;
00068 
00069 /* restore default structure elements alignment */
00070 #ifdef __APPLE__
00071 #pragma pack()
00072 #endif
00073 
00074 #define SCARD_PCI_T0    (&g_rgSCardT0Pci) 
00075 #define SCARD_PCI_T1    (&g_rgSCardT1Pci) 
00076 #define SCARD_PCI_RAW   (&g_rgSCardRawPci) 
00080 #define SCARD_S_SUCCESS         ((LONG)0x00000000) 
00081 #define SCARD_F_INTERNAL_ERROR      ((LONG)0x80100001) 
00082 #define SCARD_E_CANCELLED       ((LONG)0x80100002) 
00083 #define SCARD_E_INVALID_HANDLE      ((LONG)0x80100003) 
00084 #define SCARD_E_INVALID_PARAMETER   ((LONG)0x80100004) 
00085 #define SCARD_E_INVALID_TARGET      ((LONG)0x80100005) 
00086 #define SCARD_E_NO_MEMORY       ((LONG)0x80100006) 
00087 #define SCARD_F_WAITED_TOO_LONG     ((LONG)0x80100007) 
00088 #define SCARD_E_INSUFFICIENT_BUFFER ((LONG)0x80100008) 
00089 #define SCARD_E_UNKNOWN_READER      ((LONG)0x80100009) 
00090 #define SCARD_E_TIMEOUT         ((LONG)0x8010000A) 
00091 #define SCARD_E_SHARING_VIOLATION   ((LONG)0x8010000B) 
00092 #define SCARD_E_NO_SMARTCARD        ((LONG)0x8010000C) 
00093 #define SCARD_E_UNKNOWN_CARD        ((LONG)0x8010000D) 
00094 #define SCARD_E_CANT_DISPOSE        ((LONG)0x8010000E) 
00095 #define SCARD_E_PROTO_MISMATCH      ((LONG)0x8010000F) 
00096 #define SCARD_E_NOT_READY       ((LONG)0x80100010) 
00097 #define SCARD_E_INVALID_VALUE       ((LONG)0x80100011) 
00098 #define SCARD_E_SYSTEM_CANCELLED    ((LONG)0x80100012) 
00099 #define SCARD_F_COMM_ERROR      ((LONG)0x80100013) 
00100 #define SCARD_F_UNKNOWN_ERROR       ((LONG)0x80100014) 
00101 #define SCARD_E_INVALID_ATR     ((LONG)0x80100015) 
00102 #define SCARD_E_NOT_TRANSACTED      ((LONG)0x80100016) 
00103 #define SCARD_E_READER_UNAVAILABLE  ((LONG)0x80100017) 
00104 #define SCARD_P_SHUTDOWN        ((LONG)0x80100018) 
00105 #define SCARD_E_PCI_TOO_SMALL       ((LONG)0x80100019) 
00106 #define SCARD_E_READER_UNSUPPORTED  ((LONG)0x8010001A) 
00107 #define SCARD_E_DUPLICATE_READER    ((LONG)0x8010001B) 
00108 #define SCARD_E_CARD_UNSUPPORTED    ((LONG)0x8010001C) 
00109 #define SCARD_E_NO_SERVICE      ((LONG)0x8010001D) 
00110 #define SCARD_E_SERVICE_STOPPED     ((LONG)0x8010001E) 
00111 #define SCARD_E_UNEXPECTED      ((LONG)0x8010001F) 
00112 #define SCARD_E_UNSUPPORTED_FEATURE ((LONG)0x8010001F) 
00113 #define SCARD_E_ICC_INSTALLATION    ((LONG)0x80100020) 
00114 #define SCARD_E_ICC_CREATEORDER     ((LONG)0x80100021) 
00115 /* #define SCARD_E_UNSUPPORTED_FEATURE  ((LONG)0x80100022) / **< This smart card does not support the requested feature. */
00116 #define SCARD_E_DIR_NOT_FOUND       ((LONG)0x80100023) 
00117 #define SCARD_E_FILE_NOT_FOUND      ((LONG)0x80100024) 
00118 #define SCARD_E_NO_DIR          ((LONG)0x80100025) 
00119 #define SCARD_E_NO_FILE         ((LONG)0x80100026) 
00120 #define SCARD_E_NO_ACCESS       ((LONG)0x80100027) 
00121 #define SCARD_E_WRITE_TOO_MANY      ((LONG)0x80100028) 
00122 #define SCARD_E_BAD_SEEK        ((LONG)0x80100029) 
00123 #define SCARD_E_INVALID_CHV     ((LONG)0x8010002A) 
00124 #define SCARD_E_UNKNOWN_RES_MNG     ((LONG)0x8010002B) 
00125 #define SCARD_E_NO_SUCH_CERTIFICATE ((LONG)0x8010002C) 
00126 #define SCARD_E_CERTIFICATE_UNAVAILABLE ((LONG)0x8010002D) 
00127 #define SCARD_E_NO_READERS_AVAILABLE    ((LONG)0x8010002E) 
00128 #define SCARD_E_COMM_DATA_LOST      ((LONG)0x8010002F) 
00129 #define SCARD_E_NO_KEY_CONTAINER    ((LONG)0x80100030) 
00130 #define SCARD_E_SERVER_TOO_BUSY     ((LONG)0x80100031) 
00132 #define SCARD_W_UNSUPPORTED_CARD    ((LONG)0x80100065) 
00133 #define SCARD_W_UNRESPONSIVE_CARD   ((LONG)0x80100066) 
00134 #define SCARD_W_UNPOWERED_CARD      ((LONG)0x80100067) 
00135 #define SCARD_W_RESET_CARD      ((LONG)0x80100068) 
00136 #define SCARD_W_REMOVED_CARD        ((LONG)0x80100069) 
00138 #define SCARD_W_SECURITY_VIOLATION  ((LONG)0x8010006A) 
00139 #define SCARD_W_WRONG_CHV       ((LONG)0x8010006B) 
00140 #define SCARD_W_CHV_BLOCKED     ((LONG)0x8010006C) 
00141 #define SCARD_W_EOF         ((LONG)0x8010006D) 
00142 #define SCARD_W_CANCELLED_BY_USER   ((LONG)0x8010006E) 
00143 #define SCARD_W_CARD_NOT_AUTHENTICATED  ((LONG)0x8010006F) 
00145 #define SCARD_AUTOALLOCATE (DWORD)(-1)  
00146 #define SCARD_SCOPE_USER        0x0000  
00147 #define SCARD_SCOPE_TERMINAL        0x0001  
00148 #define SCARD_SCOPE_SYSTEM      0x0002  
00150 #define SCARD_PROTOCOL_UNDEFINED    0x0000  
00151 #define SCARD_PROTOCOL_UNSET SCARD_PROTOCOL_UNDEFINED   /* backward compat */
00152 #define SCARD_PROTOCOL_T0       0x0001  
00153 #define SCARD_PROTOCOL_T1       0x0002  
00154 #define SCARD_PROTOCOL_RAW      0x0004  
00155 #define SCARD_PROTOCOL_T15      0x0008  
00157 #define SCARD_PROTOCOL_ANY      (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1)   
00159 #define SCARD_SHARE_EXCLUSIVE       0x0001  
00160 #define SCARD_SHARE_SHARED      0x0002  
00161 #define SCARD_SHARE_DIRECT      0x0003  
00163 #define SCARD_LEAVE_CARD        0x0000  
00164 #define SCARD_RESET_CARD        0x0001  
00165 #define SCARD_UNPOWER_CARD      0x0002  
00166 #define SCARD_EJECT_CARD        0x0003  
00168 #define SCARD_UNKNOWN           0x0001  
00169 #define SCARD_ABSENT            0x0002  
00170 #define SCARD_PRESENT           0x0004  
00171 #define SCARD_SWALLOWED         0x0008  
00172 #define SCARD_POWERED           0x0010  
00173 #define SCARD_NEGOTIABLE        0x0020  
00174 #define SCARD_SPECIFIC          0x0040  
00176 #define SCARD_STATE_UNAWARE     0x0000  
00177 #define SCARD_STATE_IGNORE      0x0001  
00178 #define SCARD_STATE_CHANGED     0x0002  
00179 #define SCARD_STATE_UNKNOWN     0x0004  
00180 #define SCARD_STATE_UNAVAILABLE     0x0008  
00181 #define SCARD_STATE_EMPTY       0x0010  
00182 #define SCARD_STATE_PRESENT     0x0020  
00183 #define SCARD_STATE_ATRMATCH        0x0040  
00184 #define SCARD_STATE_EXCLUSIVE       0x0080  
00185 #define SCARD_STATE_INUSE       0x0100  
00186 #define SCARD_STATE_MUTE        0x0200  
00187 #define SCARD_STATE_UNPOWERED       0x0400  
00189 #ifndef INFINITE
00190 #define INFINITE            0xFFFFFFFF  
00191 #endif
00192 
00193 #define PCSCLITE_VERSION_NUMBER     "1.7.4" 
00195 #define PCSCLITE_MAX_READERS_CONTEXTS           16
00196 
00197 #define MAX_READERNAME          100
00198 
00199 #ifndef SCARD_ATR_LENGTH
00200 #define SCARD_ATR_LENGTH        MAX_ATR_SIZE    
00201 #endif
00202 
00203 /*
00204  * The message and buffer sizes must be multiples of 16.
00205  * The max message size must be at least large enough
00206  * to accomodate the transmit_struct
00207  */
00208 #define MAX_BUFFER_SIZE         264 
00209 #define MAX_BUFFER_SIZE_EXTENDED    (4 + 3 + (1<<16) + 3)   
00211 /*
00212  * Gets a stringified error response
00213  */
00214 char *pcsc_stringify_error(const LONG);
00215 
00216 #ifdef __cplusplus
00217 }
00218 #endif
00219 
00220 #endif