- NDK 0.98, now with versionned headers. Too many changes to list, see the TinyKRNL...
[reactos.git] / reactos / include / winscard.h
1 /*
2 * WinSCard.h
3 *
4 * SmartCard API
5 *
6 * THIS SOFTWARE IS NOT COPYRIGHTED
7 *
8 * This source code is offered for use in the public domain. You may
9 * use, modify or distribute it freely.
10 *
11 * This code is distributed in the hope that it will be useful but
12 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
13 * DISCLAIMED. This includes but is not limited to warranties of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 *
16 */
17
18 #ifndef __WINSCARD_H
19 #define __WINSCARD_H
20 #if __GNUC__ >=3
21 #pragma GCC system_header
22 #endif
23
24 #include <WinSmCrd.h>
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 #define SCARD_S_SUCCESS NO_ERROR
31
32 #define SCARD_F_INTERNAL_ERROR ((DWORD)0x80100001)
33 #define SCARD_E_CANCELLED ((DWORD)0x80100002)
34 #define SCARD_E_INVALID_HANDLE ((DWORD)0x80100003)
35 #define SCARD_E_INVALID_PARAMETER ((DWORD)0x80100004)
36 #define SCARD_E_INVALID_TARGET ((DWORD)0x80100005)
37 #define SCARD_E_NO_MEMORY ((DWORD)0x80100006)
38 #define SCARD_F_WAITED_TOO_LONG ((DWORD)0x80100007)
39 #define SCARD_E_INSUFFICIENT_BUFFER ((DWORD)0x80100008)
40 #define SCARD_E_UNKNOWN_READER ((DWORD)0x80100009)
41 #define SCARD_E_TIMEOUT ((DWORD)0x8010000A)
42 #define SCARD_E_SHARING_VIOLATION ((DWORD)0x8010000B)
43 #define SCARD_E_NO_SMARTCARD ((DWORD)0x8010000C)
44 #define SCARD_E_UNKNOWN_CARD ((DWORD)0x8010000D)
45 #define SCARD_E_CANT_DISPOSE ((DWORD)0x8010000E)
46 #define SCARD_E_PROTO_MISMATCH ((DWORD)0x8010000F)
47 #define SCARD_E_NOT_READY ((DWORD)0x80100010)
48 #define SCARD_E_INVALID_VALUE ((DWORD)0x80100011)
49 #define SCARD_E_SYSTEM_CANCELLED ((DWORD)0x80100012)
50 #define SCARD_F_COMM_ERROR ((DWORD)0x80100013)
51 #define SCARD_F_UNKNOWN_ERROR ((DWORD)0x80100014)
52 #define SCARD_E_INVALID_ATR ((DWORD)0x80100015)
53 #define SCARD_E_NOT_TRANSACTED ((DWORD)0x80100016)
54 #define SCARD_E_READER_UNAVAILABLE ((DWORD)0x80100017)
55 #define SCARD_P_SHUTDOWN ((DWORD)0x80100018)
56 #define SCARD_E_PCI_TOO_SMALL ((DWORD)0x80100019)
57 #define SCARD_E_READER_UNSUPPORTED ((DWORD)0x8010001A)
58 #define SCARD_E_DUPLICATE_READER ((DWORD)0x8010001B)
59 #define SCARD_E_CARD_UNSUPPORTED ((DWORD)0x8010001C)
60 #define SCARD_E_NO_SERVICE ((DWORD)0x8010001D)
61 #define SCARD_E_SERVICE_STOPPED ((DWORD)0x8010001E)
62 #define SCARD_E_UNEXPECTED ((DWORD)0x8010001F)
63 #define SCARD_E_ICC_INSTALLATION ((DWORD)0x80100020)
64 #define SCARD_E_ICC_CREATEORDER ((DWORD)0x80100021)
65 #define SCARD_E_UNSUPPORTED_FEATURE ((DWORD)0x80100022)
66 #define SCARD_E_DIR_NOT_FOUND ((DWORD)0x80100023)
67 #define SCARD_E_FILE_NOT_FOUND ((DWORD)0x80100024)
68 #define SCARD_E_NO_DIR ((DWORD)0x80100025)
69 #define SCARD_E_NO_FILE ((DWORD)0x80100026)
70 #define SCARD_E_NO_ACCESS ((DWORD)0x80100027)
71 #define SCARD_E_WRITE_TOO_MANY ((DWORD)0x80100028)
72 #define SCARD_E_BAD_SEEK ((DWORD)0x80100029)
73 #define SCARD_E_INVALID_CHV ((DWORD)0x8010002A)
74 #define SCARD_E_UNKNOWN_RES_MNG ((DWORD)0x8010002B)
75 #define SCARD_E_NO_SUCH_CERTIFICATE ((DWORD)0x8010002C)
76 #define SCARD_E_CERTIFICATE_UNAVAILABLE ((DWORD)0x8010002D)
77 #define SCARD_E_NO_READERS_AVAILABLE ((DWORD)0x8010002E)
78 #define SCARD_E_COMM_DATA_LOST ((DWORD)0x8010002F)
79 #define SCARD_E_NO_KEY_CONTAINER ((DWORD)0x80100030)
80 #define SCARD_W_UNSUPPORTED_CARD ((DWORD)0x80100065)
81 #define SCARD_W_UNRESPONSIVE_CARD ((DWORD)0x80100066)
82 #define SCARD_W_UNPOWERED_CARD ((DWORD)0x80100067)
83 #define SCARD_W_RESET_CARD ((DWORD)0x80100068)
84 #define SCARD_W_REMOVED_CARD ((DWORD)0x80100069)
85 #define SCARD_W_SECURITY_VIOLATION ((DWORD)0x8010006A)
86 #define SCARD_W_WRONG_CHV ((DWORD)0x8010006B)
87 #define SCARD_W_CHV_BLOCKED ((DWORD)0x8010006C)
88 #define SCARD_W_EOF ((DWORD)0x8010006D)
89 #define SCARD_W_CANCELLED_BY_USER ((DWORD)0x8010006E)
90 #define SCARD_W_CARD_NOT_AUTHENTICATED ((DWORD)0x8010006F)
91
92 #define SCARD_SHARE_EXCLUSIVE (0x1)
93 #define SCARD_SHARE_SHARED (0x2)
94 #define SCARD_SHARE_DIRECT (0x3)
95
96 #define SCARD_LEAVE_CARD (0x0)
97 #define SCARD_RESET_CARD (0x1)
98 #define SCARD_UNPOWER_CARD (0x2)
99 #define SCARD_EJECT_CARD (0x3)
100
101 #define SCARD_AUTOALLOCATE ((DWORD)-1)
102 #define SCARD_SCOPE_USER (0x0)
103 #define SCARD_SCOPE_TERMINAL (0x1)
104 #define SCARD_SCOPE_SYSTEM (0x2)
105
106 #define SCARD_PROVIDER_PRIMARY (0x1)
107 #define SCARD_PROVIDER_CSP (0x2)
108
109 typedef ULONG_PTR SCARDCONTEXT, *PSCARDCONTEXT, *LPSCARDCONTEXT;
110 typedef ULONG_PTR SCARDHANDLE, *PSCARDHANDLE, *LPSCARDHANDLE;
111 typedef const BYTE *LPCBYTE;
112
113 typedef struct _SCARD_READERSTATEA
114 {
115 LPCSTR szReader;
116 LPVOID pvUserData;
117 DWORD dwCurrentState;
118 DWORD dwEventState;
119 DWORD cbAtr;
120 BYTE rgbAtr[36];
121 } SCARD_READERSTATEA, *PSCARD_READERSTATEA, *LPSCARD_READERSTATEA;
122
123 typedef struct _SCARD_READERSTATEW
124 {
125 LPCWSTR szReader;
126 LPVOID pvUserData;
127 DWORD dwCurrentState;
128 DWORD dwEventState;
129 DWORD cbAtr;
130 BYTE rgbAtr[36];
131 } SCARD_READERSTATEW, *PSCARD_READERSTATEW, *LPSCARD_READERSTATEW;
132
133 typedef struct _SCARD_ATRMASK
134 {
135 DWORD cbAtr;
136 BYTE rgbAtr[36];
137 BYTE rgbMask[36];
138 } SCARD_ATRMASK, *PSCARD_ATRMASK, *LPSCARD_ATRMASK;
139
140 HANDLE STDCALL SCardAccessStartedEvent(VOID);
141 LONG STDCALL SCardAddReaderToGroupA(SCARDCONTEXT, LPCSTR, LPCSTR);
142 LONG STDCALL SCardAddReaderToGroupW(SCARDCONTEXT, LPCWSTR, LPCWSTR);
143 LONG STDCALL SCardBeginTransaction(SCARDHANDLE);
144 LONG STDCALL SCardCancel(SCARDCONTEXT);
145 LONG STDCALL SCardConnectA(SCARDCONTEXT, LPCSTR, DWORD, DWORD, LPSCARDHANDLE, LPDWORD);
146 LONG STDCALL SCardConnectW(SCARDCONTEXT, LPCWSTR, DWORD, DWORD, LPSCARDHANDLE, LPDWORD);
147 LONG STDCALL SCardControl(SCARDHANDLE, DWORD, LPCVOID, DWORD, LPVOID, DWORD, LPDWORD);
148 LONG STDCALL SCardDisconnect(SCARDHANDLE, DWORD);
149 LONG STDCALL SCardEndTransaction(SCARDHANDLE, DWORD);
150 LONG STDCALL SCardEstablishContext(DWORD, LPCVOID, LPCVOID, LPSCARDCONTEXT);
151 LONG STDCALL SCardForgetCardTypeA(SCARDCONTEXT, LPCSTR);
152 LONG STDCALL SCardForgetCardTypeW(SCARDCONTEXT, LPCWSTR);
153 LONG STDCALL SCardForgetReaderA(SCARDCONTEXT, LPCSTR);
154 LONG STDCALL SCardForgetReaderW(SCARDCONTEXT, LPCWSTR);
155 LONG STDCALL SCardForgetReaderGroupA(SCARDCONTEXT, LPCSTR);
156 LONG STDCALL SCardForgetReaderGroupW(SCARDCONTEXT, LPCWSTR);
157 LONG STDCALL SCardFreeMemory(SCARDCONTEXT, LPCVOID);
158 LONG STDCALL SCardGetAttrib(SCARDHANDLE, DWORD, LPBYTE, LPDWORD);
159 LONG STDCALL SCardGetCardTypeProviderNameA(SCARDCONTEXT, LPCSTR, DWORD, LPSTR, LPDWORD);
160 LONG STDCALL SCardGetCardTypeProviderNameW(SCARDCONTEXT, LPCWSTR, DWORD, LPWSTR, LPDWORD);
161 LONG STDCALL SCardGetProviderIdA(SCARDCONTEXT, LPCSTR, LPGUID);
162 LONG STDCALL SCardGetProviderIdW(SCARDCONTEXT, LPCWSTR, LPGUID);
163 LONG STDCALL SCardGetStatusChangeA(SCARDCONTEXT, DWORD, LPSCARD_READERSTATEA, DWORD);
164 LONG STDCALL SCardGetStatusChangeW(SCARDCONTEXT, DWORD, LPSCARD_READERSTATEW, DWORD);
165 LONG STDCALL SCardIntroduceCardTypeA(SCARDCONTEXT, LPCSTR, LPCGUID, LPCGUID, DWORD, LPCBYTE, LPCBYTE, DWORD);
166 LONG STDCALL SCardIntroduceCardTypeW(SCARDCONTEXT, LPCWSTR, LPCGUID, LPCGUID, DWORD, LPCBYTE, LPCBYTE, DWORD);
167 LONG STDCALL SCardIntroduceReaderA(SCARDCONTEXT, LPCSTR, LPCSTR);
168 LONG STDCALL SCardIntroduceReaderW(SCARDCONTEXT, LPCWSTR, LPCWSTR);
169 LONG STDCALL SCardIntroduceReaderGroupA(SCARDCONTEXT, LPCSTR);
170 LONG STDCALL SCardIntroduceReaderGroupW(SCARDCONTEXT, LPCWSTR);
171 LONG STDCALL SCardIsValidContext(SCARDCONTEXT);
172 LONG STDCALL SCardListCardsA(SCARDCONTEXT, LPCBYTE, LPCGUID, DWORD, LPCSTR, LPDWORD);
173 LONG STDCALL SCardListCardsW(SCARDCONTEXT, LPCBYTE, LPCGUID, DWORD, LPCWSTR, LPDWORD);
174 LONG STDCALL SCardListInterfacesA(SCARDCONTEXT, LPCSTR, LPGUID, LPDWORD);
175 LONG STDCALL SCardListInterfacesW(SCARDCONTEXT, LPCWSTR, LPGUID, LPDWORD);
176 LONG STDCALL SCardListReaderGroupsA(SCARDCONTEXT, LPSTR, LPDWORD);
177 LONG STDCALL SCardListReaderGroupsW(SCARDCONTEXT, LPWSTR, LPDWORD);
178 LONG STDCALL SCardListReadersA(SCARDCONTEXT, LPCSTR, LPSTR, LPDWORD);
179 LONG STDCALL SCardListReadersW(SCARDCONTEXT, LPCWSTR, LPWSTR, LPDWORD);
180 LONG STDCALL SCardLocateCardsA(SCARDCONTEXT, LPCSTR, LPSCARD_READERSTATEA, DWORD);
181 LONG STDCALL SCardLocateCardsW(SCARDCONTEXT, LPCWSTR, LPSCARD_READERSTATEW, DWORD);
182 LONG STDCALL SCardLocateCardsByATRA(SCARDCONTEXT, LPSCARD_ATRMASK, DWORD, LPSCARD_READERSTATEA, DWORD);
183 LONG STDCALL SCardLocateCardsByATRW(SCARDCONTEXT, LPSCARD_ATRMASK, DWORD, LPSCARD_READERSTATEW, DWORD);
184 LONG STDCALL SCardReconnect(SCARDHANDLE, DWORD, DWORD, DWORD, LPDWORD);
185 LONG STDCALL SCardReleaseContext(SCARDCONTEXT);
186 VOID STDCALL SCardReleaseStartedEvent(HANDLE);
187 LONG STDCALL SCardRemoveReaderFromGroupA(SCARDCONTEXT, LPCSTR, LPCSTR);
188 LONG STDCALL SCardRemoveReaderFromGroupW(SCARDCONTEXT, LPCWSTR, LPCWSTR);
189 LONG STDCALL SCardSetAttrib(SCARDHANDLE, DWORD, LPCBYTE, DWORD);
190 LONG STDCALL SCardSetCardTypeProviderNameA(SCARDCONTEXT, LPCSTR, DWORD, LPCSTR);
191 LONG STDCALL SCardSetCardTypeProviderNameW(SCARDCONTEXT, LPCWSTR, DWORD, LPCWSTR);
192 LONG STDCALL SCardState(SCARDHANDLE, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
193 LONG STDCALL SCardStatusA(SCARDHANDLE, LPSTR, LPDWORD, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
194 LONG STDCALL SCardStatusW(SCARDHANDLE, LPWSTR, LPDWORD, LPDWORD, LPDWORD, LPBYTE, LPDWORD);
195 LONG STDCALL SCardTransmit(SCARDHANDLE, LPCSCARD_IO_REQUEST, LPCBYTE, DWORD, LPSCARD_IO_REQUEST, LPBYTE, LPDWORD);
196
197 #ifndef _DISABLE_TIDENTS
198
199 #ifdef UNICODE
200 typedef struct SCARD_READERSTATEW SCARD_READERSTATE, *PSCARD_READERSTATE, *LPSCARD_READERSTATE;
201 #define SCardAddReaderToGroup SCardAddReaderToGroupW
202 #define SCardConnect SCardConnectW
203 #define SCardForgetCardType SCardForgetCardTypeW
204 #define SCardForgetReader SCardForgetReaderW
205 #define SCardForgetReaderGroup SCardForgetReaderGroupW
206 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameW
207 #define SCardGetProviderId SCardGetProviderIdW
208 #define SCardGetStatusChange SCardGetStatusChangeW
209 #define SCardIntroduceCardType SCardIntroduceCardTypeW
210 #define SCardIntroduceReader SCardIntroduceReaderW
211 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupW
212 #define SCardListCards SCardListCardsW
213 #define SCardListInterfaces SCardListInterfacesW
214 #define SCardListReaderGroups SCardListReaderGroupsW
215 #define SCardListReaders SCardListReadersW
216 #define SCardLocateCards SCardLocateCardsW
217 #define SCardLocateCardsByATR SCardLocateCardsByATRW
218 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupW
219 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameW
220 #define SCardStatus SCardStatusW
221 #else /* !UNICODE */
222 typedef struct SCARD_READERSTATEA SCARD_READERSTATE, *PSCARD_READERSTATE, *LPSCARD_READERSTATE;
223 #define SCardAddReaderToGroup SCardAddReaderToGroupA
224 #define SCardConnect SCardConnectA
225 #define SCardForgetCardType SCardForgetCardTypeA
226 #define SCardForgetReader SCardForgetReaderA
227 #define SCardForgetReaderGroup SCardForgetReaderGroupA
228 #define SCardGetCardTypeProviderName SCardGetCardTypeProviderNameA
229 #define SCardGetProviderId SCardGetProviderIdA
230 #define SCardGetStatusChange SCardGetStatusChangeA
231 #define SCardIntroduceCardType SCardIntroduceCardTypeA
232 #define SCardIntroduceReader SCardIntroduceReaderA
233 #define SCardIntroduceReaderGroup SCardIntroduceReaderGroupA
234 #define SCardListCards SCardListCardsA
235 #define SCardListInterfaces SCardListInterfacesA
236 #define SCardListReaderGroups SCardListReaderGroupsA
237 #define SCardListReaders SCardListReadersA
238 #define SCardLocateCards SCardLocateCardsA
239 #define SCardLocateCardsByATR SCardLocateCardsByATRA
240 #define SCardRemoveReaderFromGroup SCardRemoveReaderFromGroupA
241 #define SCardSetCardTypeProviderName SCardSetCardTypeProviderNameA
242 #define SCardStatus SCardStatusA
243 #endif /* UNICODE */
244
245 #endif /* _DISABLE_TIDENTS */
246
247 extern const SCARD_IO_REQUEST g_rgSCardT0Pci;
248 extern const SCARD_IO_REQUEST g_rgSCardT1Pci;
249 extern const SCARD_IO_REQUEST g_rgSCardRawPci;
250
251 #ifdef __cplusplus
252 }
253 #endif
254 #endif /* __WINSCARD_H */
255
256 /* EOF */