pcsc-lite  1.8.8
pcsclite.h
Go to the documentation of this file.
1 /*
2  * MUSCLE SmartCard Development ( http://www.linuxnet.com )
3  *
4  * Copyright (C) 1999-2004
5  * David Corcoran <corcoran@linuxnet.com>
6  * Copyright (C) 2002-2011
7  * Ludovic Rousseau <ludovic.rousseau@free.fr>
8  * Copyright (C) 2005
9  * Martin Paljak <martin@paljak.pri.ee>
10  *
11  * $Id: pcsclite.h.in 6355 2012-06-25 13:22:27Z rousseau $
12  */
13 
21 #ifndef __pcsclite_h__
22 #define __pcsclite_h__
23 
24 #include <wintypes.h>
25 
26 #ifdef __cplusplus
27 extern "C"
28 {
29 #endif
30 
31 typedef LONG SCARDCONTEXT;
32 typedef SCARDCONTEXT *PSCARDCONTEXT;
33 typedef SCARDCONTEXT *LPSCARDCONTEXT;
34 typedef LONG SCARDHANDLE;
35 typedef SCARDHANDLE *PSCARDHANDLE;
36 typedef SCARDHANDLE *LPSCARDHANDLE;
37 
38 #define MAX_ATR_SIZE 33
40 /* Set structure elements aligment on bytes
41  * http://gcc.gnu.org/onlinedocs/gcc/Structure_002dPacking-Pragmas.html */
42 #ifdef __APPLE__
43 #pragma pack(1)
44 #endif
45 
46 typedef struct
47 {
48  const char *szReader;
49  void *pvUserData;
50  DWORD dwCurrentState;
51  DWORD dwEventState;
52  DWORD cbAtr;
53  unsigned char rgbAtr[MAX_ATR_SIZE];
54 }
56 
58 typedef struct
59 {
60  unsigned long dwProtocol;
61  unsigned long cbPciLength;
62 }
64 
66 
68 
69 /* restore default structure elements alignment */
70 #ifdef __APPLE__
71 #pragma pack()
72 #endif
73 
74 #define SCARD_PCI_T0 (&g_rgSCardT0Pci)
75 #define SCARD_PCI_T1 (&g_rgSCardT1Pci)
76 #define SCARD_PCI_RAW (&g_rgSCardRawPci)
80 #define SCARD_S_SUCCESS ((LONG)0x00000000)
81 #define SCARD_F_INTERNAL_ERROR ((LONG)0x80100001)
82 #define SCARD_E_CANCELLED ((LONG)0x80100002)
83 #define SCARD_E_INVALID_HANDLE ((LONG)0x80100003)
84 #define SCARD_E_INVALID_PARAMETER ((LONG)0x80100004)
85 #define SCARD_E_INVALID_TARGET ((LONG)0x80100005)
86 #define SCARD_E_NO_MEMORY ((LONG)0x80100006)
87 #define SCARD_F_WAITED_TOO_LONG ((LONG)0x80100007)
88 #define SCARD_E_INSUFFICIENT_BUFFER ((LONG)0x80100008)
89 #define SCARD_E_UNKNOWN_READER ((LONG)0x80100009)
90 #define SCARD_E_TIMEOUT ((LONG)0x8010000A)
91 #define SCARD_E_SHARING_VIOLATION ((LONG)0x8010000B)
92 #define SCARD_E_NO_SMARTCARD ((LONG)0x8010000C)
93 #define SCARD_E_UNKNOWN_CARD ((LONG)0x8010000D)
94 #define SCARD_E_CANT_DISPOSE ((LONG)0x8010000E)
95 #define SCARD_E_PROTO_MISMATCH ((LONG)0x8010000F)
96 #define SCARD_E_NOT_READY ((LONG)0x80100010)
97 #define SCARD_E_INVALID_VALUE ((LONG)0x80100011)
98 #define SCARD_E_SYSTEM_CANCELLED ((LONG)0x80100012)
99 #define SCARD_F_COMM_ERROR ((LONG)0x80100013)
100 #define SCARD_F_UNKNOWN_ERROR ((LONG)0x80100014)
101 #define SCARD_E_INVALID_ATR ((LONG)0x80100015)
102 #define SCARD_E_NOT_TRANSACTED ((LONG)0x80100016)
103 #define SCARD_E_READER_UNAVAILABLE ((LONG)0x80100017)
104 #define SCARD_P_SHUTDOWN ((LONG)0x80100018)
105 #define SCARD_E_PCI_TOO_SMALL ((LONG)0x80100019)
106 #define SCARD_E_READER_UNSUPPORTED ((LONG)0x8010001A)
107 #define SCARD_E_DUPLICATE_READER ((LONG)0x8010001B)
108 #define SCARD_E_CARD_UNSUPPORTED ((LONG)0x8010001C)
109 #define SCARD_E_NO_SERVICE ((LONG)0x8010001D)
110 #define SCARD_E_SERVICE_STOPPED ((LONG)0x8010001E)
111 #define SCARD_E_UNEXPECTED ((LONG)0x8010001F)
112 #define SCARD_E_UNSUPPORTED_FEATURE ((LONG)0x8010001F)
113 #define SCARD_E_ICC_INSTALLATION ((LONG)0x80100020)
114 #define SCARD_E_ICC_CREATEORDER ((LONG)0x80100021)
115 /* #define SCARD_E_UNSUPPORTED_FEATURE ((LONG)0x80100022) / **< This smart card does not support the requested feature. */
116 #define SCARD_E_DIR_NOT_FOUND ((LONG)0x80100023)
117 #define SCARD_E_FILE_NOT_FOUND ((LONG)0x80100024)
118 #define SCARD_E_NO_DIR ((LONG)0x80100025)
119 #define SCARD_E_NO_FILE ((LONG)0x80100026)
120 #define SCARD_E_NO_ACCESS ((LONG)0x80100027)
121 #define SCARD_E_WRITE_TOO_MANY ((LONG)0x80100028)
122 #define SCARD_E_BAD_SEEK ((LONG)0x80100029)
123 #define SCARD_E_INVALID_CHV ((LONG)0x8010002A)
124 #define SCARD_E_UNKNOWN_RES_MNG ((LONG)0x8010002B)
125 #define SCARD_E_NO_SUCH_CERTIFICATE ((LONG)0x8010002C)
126 #define SCARD_E_CERTIFICATE_UNAVAILABLE ((LONG)0x8010002D)
127 #define SCARD_E_NO_READERS_AVAILABLE ((LONG)0x8010002E)
128 #define SCARD_E_COMM_DATA_LOST ((LONG)0x8010002F)
129 #define SCARD_E_NO_KEY_CONTAINER ((LONG)0x80100030)
130 #define SCARD_E_SERVER_TOO_BUSY ((LONG)0x80100031)
132 #define SCARD_W_UNSUPPORTED_CARD ((LONG)0x80100065)
133 #define SCARD_W_UNRESPONSIVE_CARD ((LONG)0x80100066)
134 #define SCARD_W_UNPOWERED_CARD ((LONG)0x80100067)
135 #define SCARD_W_RESET_CARD ((LONG)0x80100068)
136 #define SCARD_W_REMOVED_CARD ((LONG)0x80100069)
138 #define SCARD_W_SECURITY_VIOLATION ((LONG)0x8010006A)
139 #define SCARD_W_WRONG_CHV ((LONG)0x8010006B)
140 #define SCARD_W_CHV_BLOCKED ((LONG)0x8010006C)
141 #define SCARD_W_EOF ((LONG)0x8010006D)
142 #define SCARD_W_CANCELLED_BY_USER ((LONG)0x8010006E)
143 #define SCARD_W_CARD_NOT_AUTHENTICATED ((LONG)0x8010006F)
145 #define SCARD_AUTOALLOCATE (DWORD)(-1)
146 #define SCARD_SCOPE_USER 0x0000
147 #define SCARD_SCOPE_TERMINAL 0x0001
148 #define SCARD_SCOPE_SYSTEM 0x0002
150 #define SCARD_PROTOCOL_UNDEFINED 0x0000
151 #define SCARD_PROTOCOL_UNSET SCARD_PROTOCOL_UNDEFINED /* backward compat */
152 #define SCARD_PROTOCOL_T0 0x0001
153 #define SCARD_PROTOCOL_T1 0x0002
154 #define SCARD_PROTOCOL_RAW 0x0004
155 #define SCARD_PROTOCOL_T15 0x0008
157 #define SCARD_PROTOCOL_ANY (SCARD_PROTOCOL_T0|SCARD_PROTOCOL_T1)
159 #define SCARD_SHARE_EXCLUSIVE 0x0001
160 #define SCARD_SHARE_SHARED 0x0002
161 #define SCARD_SHARE_DIRECT 0x0003
163 #define SCARD_LEAVE_CARD 0x0000
164 #define SCARD_RESET_CARD 0x0001
165 #define SCARD_UNPOWER_CARD 0x0002
166 #define SCARD_EJECT_CARD 0x0003
168 #define SCARD_UNKNOWN 0x0001
169 #define SCARD_ABSENT 0x0002
170 #define SCARD_PRESENT 0x0004
171 #define SCARD_SWALLOWED 0x0008
172 #define SCARD_POWERED 0x0010
173 #define SCARD_NEGOTIABLE 0x0020
174 #define SCARD_SPECIFIC 0x0040
176 #define SCARD_STATE_UNAWARE 0x0000
177 #define SCARD_STATE_IGNORE 0x0001
178 #define SCARD_STATE_CHANGED 0x0002
179 #define SCARD_STATE_UNKNOWN 0x0004
180 #define SCARD_STATE_UNAVAILABLE 0x0008
181 #define SCARD_STATE_EMPTY 0x0010
182 #define SCARD_STATE_PRESENT 0x0020
183 #define SCARD_STATE_ATRMATCH 0x0040
184 #define SCARD_STATE_EXCLUSIVE 0x0080
185 #define SCARD_STATE_INUSE 0x0100
186 #define SCARD_STATE_MUTE 0x0200
187 #define SCARD_STATE_UNPOWERED 0x0400
189 #ifndef INFINITE
190 #define INFINITE 0xFFFFFFFF
191 #endif
192 
193 #define PCSCLITE_VERSION_NUMBER "1.8.8"
195 #define PCSCLITE_MAX_READERS_CONTEXTS 32
196 
197 #define MAX_READERNAME 128
198 
199 #ifndef SCARD_ATR_LENGTH
200 #define SCARD_ATR_LENGTH MAX_ATR_SIZE
201 #endif
202 
203 /*
204  * The message and buffer sizes must be multiples of 16.
205  * The max message size must be at least large enough
206  * to accomodate the transmit_struct
207  */
208 #define MAX_BUFFER_SIZE 264
209 #define MAX_BUFFER_SIZE_EXTENDED (4 + 3 + (1<<16) + 3 + 2)
211 /*
212  * Gets a stringified error response
213  */
214 char *pcsc_stringify_error(const LONG);
215 
216 #ifdef __cplusplus
217 }
218 #endif
219 
220 #endif
PCSC_API char * pcsc_stringify_error(const LONG pcscError)
Returns a human readable text for the given PC/SC error code.
Definition: error.c:56
unsigned long cbPciLength
Protocol Control Inf Length.
Definition: pcsclite.h:61
const SCARD_IO_REQUEST g_rgSCardRawPci
Protocol Control Information for raw access.
Definition: libpcscspy.c:722
LONG SCARDCONTEXT
hContext returned by SCardEstablishContext()
Definition: pcsclite.h:31
unsigned long dwProtocol
Protocol identifier.
Definition: pcsclite.h:60
LONG SCARDHANDLE
hCard returned by SCardConnect()
Definition: pcsclite.h:34
This keeps a list of Windows(R) types.
Protocol Control Information (PCI)
Definition: pcsclite.h:58
#define MAX_ATR_SIZE
Maximum ATR size.
Definition: pcsclite.h:38
const SCARD_IO_REQUEST g_rgSCardT1Pci
Protocol Control Information for T=1.
Definition: libpcscspy.c:721
const SCARD_IO_REQUEST g_rgSCardT0Pci
Protocol Control Information for T=0.
Definition: libpcscspy.c:720