1
2 #include <stdio.h>
3 #include <stdlib.h>
4 #include <string.h>
5 #include <stdarg.h>
6 #include <windows.h>
7
8 #include "winscard-funcs.h"
9
10 #define LUNUSED(_param) (void) _param
11
12 static tSCardEstablishContext aSCardEstablishContext;
13 static tSCardReleaseContext aSCardReleaseContext;
14 static tSCardIsValidContext aSCardIsValidContext;
15 static tSCardListReaderGroupsA aSCardListReaderGroupsA;
16 static tSCardListReaderGroupsW aSCardListReaderGroupsW;
17 static tSCardListReadersA aSCardListReadersA;
18 static tSCardListReadersW aSCardListReadersW;
19 static tSCardListCardsA aSCardListCardsA;
20 static tSCardListCardsW aSCardListCardsW;
21 static tSCardListInterfacesA aSCardListInterfacesA;
22 static tSCardListInterfacesW aSCardListInterfacesW;
23 static tSCardGetProviderIdA aSCardGetProviderIdA;
24 static tSCardGetProviderIdW aSCardGetProviderIdW;
25 static tSCardGetCardTypeProviderNameA aSCardGetCardTypeProviderNameA;
26 static tSCardGetCardTypeProviderNameW aSCardGetCardTypeProviderNameW;
27 static tSCardIntroduceReaderGroupA aSCardIntroduceReaderGroupA;
28 static tSCardIntroduceReaderGroupW aSCardIntroduceReaderGroupW;
29 static tSCardForgetReaderGroupA aSCardForgetReaderGroupA;
30 static tSCardForgetReaderGroupW aSCardForgetReaderGroupW;
31 static tSCardIntroduceReaderA aSCardIntroduceReaderA;
32 static tSCardIntroduceReaderW aSCardIntroduceReaderW;
33 static tSCardForgetReaderA aSCardForgetReaderA;
34 static tSCardForgetReaderW aSCardForgetReaderW;
35 static tSCardAddReaderToGroupA aSCardAddReaderToGroupA;
36 static tSCardAddReaderToGroupW aSCardAddReaderToGroupW;
37 static tSCardRemoveReaderFromGroupA aSCardRemoveReaderFromGroupA;
38 static tSCardRemoveReaderFromGroupW aSCardRemoveReaderFromGroupW;
39 static tSCardIntroduceCardTypeA aSCardIntroduceCardTypeA;
40 static tSCardIntroduceCardTypeW aSCardIntroduceCardTypeW;
41 static tSCardSetCardTypeProviderNameA aSCardSetCardTypeProviderNameA;
42 static tSCardSetCardTypeProviderNameW aSCardSetCardTypeProviderNameW;
43 static tSCardForgetCardTypeA aSCardForgetCardTypeA;
44 static tSCardForgetCardTypeW aSCardForgetCardTypeW;
45 static tSCardFreeMemory aSCardFreeMemory;
46 static tSCardLocateCardsA aSCardLocateCardsA;
47 static tSCardLocateCardsW aSCardLocateCardsW;
48 static tSCardGetStatusChangeA aSCardGetStatusChangeA;
49 static tSCardGetStatusChangeW aSCardGetStatusChangeW;
50 static tSCardCancel aSCardCancel;
51 static tSCardConnectA aSCardConnectA;
52 static tSCardConnectW aSCardConnectW;
53 static tSCardReconnect aSCardReconnect;
54 static tSCardDisconnect aSCardDisconnect;
55 static tSCardBeginTransaction aSCardBeginTransaction;
56 static tSCardEndTransaction aSCardEndTransaction;
57 static tSCardCancelTransaction aSCardCancelTransaction;
58 static tSCardState aSCardState;
59 static tSCardStatusA aSCardStatusA;
60 static tSCardStatusW aSCardStatusW;
61 static tSCardTransmit aSCardTransmit;
62 static tSCardControl aSCardControl;
63 static tSCardGetAttrib aSCardGetAttrib;
64 static tSCardSetAttrib aSCardSetAttrib;
65
66 //__declspec(dllexport) const SCARD_IO_REQUEST g_rgSCardT0Pci = { 0 };
67 //__declspec(dllexport) const SCARD_IO_REQUEST g_rgSCardT1Pci = { 0 };
68 //__declspec(dllexport) const SCARD_IO_REQUEST g_rgSCardRawPci = { 0 };
69
70 static int g_true = 1;
71
72 #define LLOGLN(_level, _args) do { if ((_level < 11) && g_true) { writeln _args ; } } while (0)
73
74 /*****************************************************************************/
75 static int
writeln(const char * format,...)76 writeln(const char *format, ...)
77 {
78 va_list ap;
79 char text[256];
80
81 va_start(ap, format);
82 vsnprintf(text, 255, format, ap);
83 va_end(ap);
84 OutputDebugString(text);
85 return 0;
86 }
87
88 #define LLOAD(_func, _type, _name) \
89 do { \
90 _func = (_type) GetProcAddress(lib, _name); \
91 if (_func == 0) \
92 { \
93 writeln("LLOAD error %s", _name); \
94 } \
95 } while (0)
96
97 static int g_funcs_loaded = 0;
98
99 /*****************************************************************************/
100 static int __fastcall
load_funcs(void)101 load_funcs(void)
102 {
103 HMODULE lib;
104
105 if (g_funcs_loaded)
106 {
107 return 0;
108 }
109 g_funcs_loaded = 1;
110 lib = LoadLibrary("winscard-org.dll");
111 LLOGLN(0, ("load_funcs: lib %p", lib));
112 LLOAD(aSCardEstablishContext, tSCardEstablishContext, "SCardEstablishContext");
113 LLOAD(aSCardReleaseContext, tSCardReleaseContext, "SCardReleaseContext");
114 LLOAD(aSCardIsValidContext, tSCardIsValidContext, "SCardIsValidContext");
115 LLOAD(aSCardListReaderGroupsA, tSCardListReaderGroupsA, "SCardListReaderGroupsA");
116 LLOAD(aSCardListReaderGroupsW, tSCardListReaderGroupsW, "SCardListReaderGroupsW");
117 LLOAD(aSCardListReadersA, tSCardListReadersA, "SCardListReadersA");
118 LLOAD(aSCardListReadersW, tSCardListReadersW, "SCardListReadersW");
119 LLOAD(aSCardListCardsA, tSCardListCardsA, "SCardListCardsA");
120 LLOAD(aSCardListCardsW, tSCardListCardsW, "SCardListCardsW");
121 LLOAD(aSCardListInterfacesA, tSCardListInterfacesA, "SCardListInterfacesA");
122 LLOAD(aSCardListInterfacesW, tSCardListInterfacesW, "SCardListInterfacesW");
123 LLOAD(aSCardGetProviderIdA, tSCardGetProviderIdA, "SCardGetProviderIdA");
124 LLOAD(aSCardGetProviderIdW, tSCardGetProviderIdW, "SCardGetProviderIdW");
125 LLOAD(aSCardGetCardTypeProviderNameA, tSCardGetCardTypeProviderNameA, "SCardGetCardTypeProviderNameA");
126 LLOAD(aSCardGetCardTypeProviderNameW, tSCardGetCardTypeProviderNameW, "SCardGetCardTypeProviderNameW");
127 LLOAD(aSCardIntroduceReaderGroupA, tSCardIntroduceReaderGroupA, "SCardIntroduceReaderGroupA");
128 LLOAD(aSCardIntroduceReaderGroupW, tSCardIntroduceReaderGroupW, "SCardIntroduceReaderGroupW");
129 LLOAD(aSCardForgetReaderGroupA, tSCardForgetReaderGroupA, "SCardForgetReaderGroupA");
130 LLOAD(aSCardForgetReaderGroupW, tSCardForgetReaderGroupW, "SCardForgetReaderGroupW");
131 LLOAD(aSCardIntroduceReaderA, tSCardIntroduceReaderA, "SCardIntroduceReaderA");
132 LLOAD(aSCardIntroduceReaderW, tSCardIntroduceReaderW, "SCardIntroduceReaderW");
133 LLOAD(aSCardForgetReaderA, tSCardForgetReaderA, "SCardForgetReaderA");
134 LLOAD(aSCardForgetReaderW, tSCardForgetReaderW, "SCardForgetReaderW");
135 LLOAD(aSCardAddReaderToGroupA, tSCardAddReaderToGroupA, "SCardAddReaderToGroupA");
136 LLOAD(aSCardAddReaderToGroupW, tSCardAddReaderToGroupW, "SCardAddReaderToGroupW");
137 LLOAD(aSCardRemoveReaderFromGroupA, tSCardRemoveReaderFromGroupA, "SCardRemoveReaderFromGroupA");
138 LLOAD(aSCardRemoveReaderFromGroupW, tSCardRemoveReaderFromGroupW, "SCardRemoveReaderFromGroupW");
139 LLOAD(aSCardIntroduceCardTypeA, tSCardIntroduceCardTypeA, "SCardIntroduceCardTypeA");
140 LLOAD(aSCardIntroduceCardTypeW, tSCardIntroduceCardTypeW, "SCardIntroduceCardTypeW");
141 LLOAD(aSCardSetCardTypeProviderNameA, tSCardSetCardTypeProviderNameA, "SCardSetCardTypeProviderNameA");
142 LLOAD(aSCardSetCardTypeProviderNameW, tSCardSetCardTypeProviderNameW, "SCardSetCardTypeProviderNameW");
143 LLOAD(aSCardForgetCardTypeA, tSCardForgetCardTypeA, "SCardForgetCardTypeA");
144 LLOAD(aSCardForgetCardTypeW, tSCardForgetCardTypeW, "SCardForgetCardTypeW");
145 LLOAD(aSCardFreeMemory, tSCardFreeMemory, "SCardFreeMemory");
146 LLOAD(aSCardLocateCardsA, tSCardLocateCardsA, "SCardLocateCardsA");
147 LLOAD(aSCardLocateCardsW, tSCardLocateCardsW, "SCardLocateCardsW");
148 LLOAD(aSCardGetStatusChangeA, tSCardGetStatusChangeA, "SCardGetStatusChangeA");
149 LLOAD(aSCardGetStatusChangeW, tSCardGetStatusChangeW, "SCardGetStatusChangeW");
150 LLOAD(aSCardCancel, tSCardCancel, "SCardCancel");
151 LLOAD(aSCardConnectA, tSCardConnectA, "SCardConnectA");
152 LLOAD(aSCardConnectW, tSCardConnectW, "SCardConnectW");
153 LLOAD(aSCardReconnect, tSCardReconnect, "SCardReconnect");
154 LLOAD(aSCardDisconnect, tSCardDisconnect, "SCardDisconnect");
155 LLOAD(aSCardBeginTransaction, tSCardBeginTransaction, "SCardBeginTransaction");
156 LLOAD(aSCardEndTransaction, tSCardEndTransaction, "SCardEndTransaction");
157 LLOAD(aSCardCancelTransaction, tSCardCancelTransaction, "SCardCancelTransaction");
158 LLOAD(aSCardState, tSCardState, "SCardState");
159 LLOAD(aSCardStatusA, tSCardStatusA, "SCardStatusA");
160 LLOAD(aSCardStatusW, tSCardStatusW, "SCardStatusW");
161 LLOAD(aSCardTransmit, tSCardTransmit, "SCardTransmit");
162 LLOAD(aSCardControl, tSCardControl, "SCardControl");
163 LLOAD(aSCardGetAttrib, tSCardGetAttrib, "SCardGetAttrib");
164 LLOAD(aSCardSetAttrib, tSCardSetAttrib, "SCardSetAttrib");
165
166 return 0;
167 }
168
169 /*****************************************************************************/
170 BOOL WINAPI
DllEntryPoint(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)171 DllEntryPoint(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
172 {
173 BOOL rv;
174 LUNUSED(hinstDLL);
175 LUNUSED(lpvReserved);
176
177 LLOGLN(10, ("DllEntryPoint: hinstDLL %p fdwReason %d", hinstDLL, fdwReason));
178 rv = FALSE;
179 switch (fdwReason)
180 {
181 case DLL_PROCESS_ATTACH:
182 LLOGLN(0, ("DllEntryPoint: DLL_PROCESS_ATTACH"));
183 load_funcs();
184 rv = TRUE;
185 break;
186 case DLL_THREAD_ATTACH:
187 LLOGLN(10, ("DllEntryPoint: DLL_THREAD_ATTACH"));
188 rv = TRUE;
189 break;
190 case DLL_THREAD_DETACH:
191 LLOGLN(10, ("DllEntryPoint: DLL_THREAD_DETACH"));
192 rv = TRUE;
193 break;
194 case DLL_PROCESS_DETACH:
195 LLOGLN(0, ("DllEntryPoint: DLL_PROCESS_DETACH"));
196 rv = TRUE;
197 break;
198 default:
199 LLOGLN(0, ("DllEntryPoint: unknown fdwReason %d", fdwReason));
200 break;
201
202 }
203 return rv;
204 }
205
206 /*****************************************************************************/
207 LONG WINAPI
SCardEstablishContext(DWORD dwScope,LPCVOID pvReserved1,LPCVOID pvReserved2,LPSCARDCONTEXT phContext)208 SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1,
209 LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
210 {
211 LLOGLN(0, ("SCardEstablishContext:"));
212 return aSCardEstablishContext(dwScope, pvReserved1, pvReserved2, phContext);
213 }
214
215 /*****************************************************************************/
216 LONG WINAPI
SCardReleaseContext(SCARDCONTEXT hContext)217 SCardReleaseContext(SCARDCONTEXT hContext)
218 {
219 LLOGLN(0, ("SCardReleaseContext:"));
220 return aSCardReleaseContext(hContext);
221 }
222
223 /*****************************************************************************/
224 LONG WINAPI
SCardIsValidContext(SCARDCONTEXT hContext)225 SCardIsValidContext(SCARDCONTEXT hContext)
226 {
227 LLOGLN(0, ("SCardIsValidContext:"));
228 return aSCardIsValidContext(hContext);
229 }
230
231 /*****************************************************************************/
232 LONG WINAPI
SCardListReaderGroupsA(SCARDCONTEXT hContext,LPSTR mszGroups,LPDWORD pcchGroups)233 SCardListReaderGroupsA(SCARDCONTEXT hContext, LPSTR mszGroups,
234 LPDWORD pcchGroups)
235 {
236 LLOGLN(0, ("SCardListReaderGroupsA:"));
237 return aSCardListReaderGroupsA(hContext, mszGroups, pcchGroups);
238 }
239
240 /*****************************************************************************/
241 LONG WINAPI
SCardListReaderGroupsW(SCARDCONTEXT hContext,LPWSTR mszGroups,LPDWORD pcchGroups)242 SCardListReaderGroupsW(SCARDCONTEXT hContext, LPWSTR mszGroups,
243 LPDWORD pcchGroups)
244 {
245 LLOGLN(0, ("SCardListReaderGroupsW:"));
246 return aSCardListReaderGroupsW(hContext, mszGroups, pcchGroups);
247 }
248
249 /*****************************************************************************/
250 LONG WINAPI
SCardListReadersA(SCARDCONTEXT hContext,LPCSTR mszGroups,LPSTR mszReaders,LPDWORD pcchReaders)251 SCardListReadersA(SCARDCONTEXT hContext, LPCSTR mszGroups,
252 LPSTR mszReaders, LPDWORD pcchReaders)
253 {
254 LLOGLN(0, ("SCardListReadersA:"));
255 return aSCardListReadersA(hContext, mszGroups, mszReaders, pcchReaders);
256 }
257
258 /*****************************************************************************/
259 LONG WINAPI
SCardListReadersW(SCARDCONTEXT hContext,LPCWSTR mszGroups,LPWSTR mszReaders,LPDWORD pcchReaders)260 SCardListReadersW(SCARDCONTEXT hContext, LPCWSTR mszGroups,
261 LPWSTR mszReaders, LPDWORD pcchReaders)
262 {
263 char text[256];
264 LONG rv;
265 DWORD cchReaders;
266
267 text[0] = 0;
268 if (mszGroups != 0)
269 {
270 wcstombs(text, mszGroups, 255);
271 }
272 cchReaders = *pcchReaders;
273 LLOGLN(0, ("SCardListReadersW: mszGroups [%s] cchReaders [%d]", text, *pcchReaders));
274 rv = aSCardListReadersW(hContext, mszGroups, mszReaders, pcchReaders);
275 text[0] = 0;
276 if (cchReaders > 0)
277 {
278 wcstombs(text, mszReaders, 255);
279 }
280 LLOGLN(0, (" mszReaders [%s] cchReaders [%d]", text, *pcchReaders));
281 return rv;
282 }
283
284 /*****************************************************************************/
285 LONG WINAPI
SCardListCardsA(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPSTR mszCards,LPDWORD pcchCards)286 SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr,
287 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
288 LPSTR mszCards, LPDWORD pcchCards)
289 {
290 LLOGLN(0, ("SCardListCardsA:"));
291 return aSCardListCardsA(hContext, pbAtr, rgquidInterfaces,
292 cguidInterfaceCount, mszCards, pcchCards);
293 }
294
295 /*****************************************************************************/
296 LONG WINAPI
SCardListCardsW(SCARDCONTEXT hContext,LPCBYTE pbAtr,LPCGUID rgquidInterfaces,DWORD cguidInterfaceCount,LPWSTR mszCards,LPDWORD pcchCards)297 SCardListCardsW(SCARDCONTEXT hContext, LPCBYTE pbAtr,
298 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
299 LPWSTR mszCards, LPDWORD pcchCards)
300 {
301 LLOGLN(0, ("SCardListCardsW:"));
302 return aSCardListCardsW(hContext, pbAtr, rgquidInterfaces,
303 cguidInterfaceCount, mszCards, pcchCards);
304 }
305
306 /*****************************************************************************/
307 LONG WINAPI
SCardListInterfacesA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces)308 SCardListInterfacesA(SCARDCONTEXT hContext, LPCSTR szCard,
309 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
310 {
311 LLOGLN(0, ("SCardListInterfacesA:"));
312 return aSCardListInterfacesA(hContext, szCard, pguidInterfaces,
313 pcguidInterfaces);
314 }
315
316 /*****************************************************************************/
317 LONG WINAPI
SCardListInterfacesW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidInterfaces,LPDWORD pcguidInterfaces)318 SCardListInterfacesW(SCARDCONTEXT hContext, LPCWSTR szCard,
319 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
320 {
321 LLOGLN(0, ("SCardListInterfacesW:"));
322 return aSCardListInterfacesW(hContext, szCard, pguidInterfaces,
323 pcguidInterfaces);
324 }
325
326 /*****************************************************************************/
327 LONG WINAPI
SCardGetProviderIdA(SCARDCONTEXT hContext,LPCSTR szCard,LPGUID pguidProviderId)328 SCardGetProviderIdA(SCARDCONTEXT hContext, LPCSTR szCard,
329 LPGUID pguidProviderId)
330 {
331 LLOGLN(0, ("SCardGetProviderIdA:"));
332 return aSCardGetProviderIdA(hContext, szCard, pguidProviderId);
333 }
334
335 /****************************************************************************/
336 LONG WINAPI
SCardGetProviderIdW(SCARDCONTEXT hContext,LPCWSTR szCard,LPGUID pguidProviderId)337 SCardGetProviderIdW(SCARDCONTEXT hContext, LPCWSTR szCard,
338 LPGUID pguidProviderId)
339 {
340 LLOGLN(0, ("SCardGetProviderIdW:"));
341 return aSCardGetProviderIdW(hContext, szCard, pguidProviderId);
342 }
343
344 /****************************************************************************/
345 LONG WINAPI
SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPSTR szProvider,LPDWORD pcchProvider)346 SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
347 DWORD dwProviderId, LPSTR szProvider,
348 LPDWORD pcchProvider)
349 {
350 LLOGLN(0, ("SCardGetCardTypeProviderNameA:"));
351 return aSCardGetCardTypeProviderNameA(hContext, szCardName, dwProviderId,
352 szProvider, pcchProvider);
353 }
354
355 /*****************************************************************************/
356 LONG WINAPI
SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPWSTR szProvider,LPDWORD pcchProvider)357 SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
358 DWORD dwProviderId, LPWSTR szProvider,
359 LPDWORD pcchProvider)
360 {
361 LLOGLN(0, ("SCardGetCardTypeProviderNameW:"));
362 return aSCardGetCardTypeProviderNameW(hContext, szCardName, dwProviderId,
363 szProvider, pcchProvider);
364 }
365
366 /*****************************************************************************/
367 LONG WINAPI
SCardIntroduceReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName)368 SCardIntroduceReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
369 {
370 LLOGLN(0, ("SCardIntroduceReaderGroupA:"));
371 return aSCardIntroduceReaderGroupA(hContext, szGroupName);
372 }
373
374 /*****************************************************************************/
375 LONG WINAPI
SCardIntroduceReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName)376 SCardIntroduceReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
377 {
378 LLOGLN(0, ("SCardIntroduceReaderGroupW:"));
379 return aSCardIntroduceReaderGroupW(hContext, szGroupName);
380 }
381
382 /*****************************************************************************/
383 LONG WINAPI
SCardForgetReaderGroupA(SCARDCONTEXT hContext,LPCSTR szGroupName)384 SCardForgetReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
385 {
386 LLOGLN(0, ("SCardForgetReaderGroupA:"));
387 return aSCardForgetReaderGroupA(hContext, szGroupName);
388 }
389
390 /*****************************************************************************/
391 LONG WINAPI
SCardForgetReaderGroupW(SCARDCONTEXT hContext,LPCWSTR szGroupName)392 SCardForgetReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
393 {
394 LLOGLN(0, ("SCardForgetReaderGroupW:"));
395 return aSCardForgetReaderGroupW(hContext, szGroupName);
396 }
397
398 /*****************************************************************************/
399 LONG WINAPI
SCardIntroduceReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szDeviceName)400 SCardIntroduceReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName,
401 LPCSTR szDeviceName)
402 {
403 LLOGLN(0, ("SCardIntroduceReaderA:"));
404 return aSCardIntroduceReaderA(hContext, szReaderName, szDeviceName);
405 }
406
407 /*****************************************************************************/
408 LONG WINAPI
SCardIntroduceReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szDeviceName)409 SCardIntroduceReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
410 LPCWSTR szDeviceName)
411 {
412 LLOGLN(0, ("SCardIntroduceReaderW:"));
413 return aSCardIntroduceReaderW(hContext, szReaderName, szDeviceName);
414 }
415
416 /*****************************************************************************/
417 LONG WINAPI
SCardForgetReaderA(SCARDCONTEXT hContext,LPCSTR szReaderName)418 SCardForgetReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName)
419 {
420 LLOGLN(0, ("SCardForgetReaderA:"));
421 return aSCardForgetReaderA(hContext, szReaderName);
422 }
423
424 /*****************************************************************************/
425 LONG WINAPI
SCardForgetReaderW(SCARDCONTEXT hContext,LPCWSTR szReaderName)426 SCardForgetReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName)
427 {
428 LLOGLN(0, ("SCardForgetReaderW:"));
429 return aSCardForgetReaderW(hContext, szReaderName);
430 }
431
432 /*****************************************************************************/
433 LONG WINAPI
SCardAddReaderToGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName)434 SCardAddReaderToGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
435 LPCSTR szGroupName)
436 {
437 LLOGLN(0, ("SCardAddReaderToGroupA:"));
438 return aSCardAddReaderToGroupA(hContext, szReaderName, szGroupName);
439 }
440
441 /*****************************************************************************/
442 LONG WINAPI
SCardAddReaderToGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName)443 SCardAddReaderToGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
444 LPCWSTR szGroupName)
445 {
446 LLOGLN(0, ("SCardAddReaderToGroupW:"));
447 return aSCardAddReaderToGroupW(hContext, szReaderName, szGroupName);
448 }
449
450 /*****************************************************************************/
451 LONG WINAPI
SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext,LPCSTR szReaderName,LPCSTR szGroupName)452 SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
453 LPCSTR szGroupName)
454 {
455 LLOGLN(0, ("SCardRemoveReaderFromGroupA:"));
456 return aSCardRemoveReaderFromGroupA(hContext, szReaderName, szGroupName);
457 }
458
459 /*****************************************************************************/
460 LONG WINAPI
SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext,LPCWSTR szReaderName,LPCWSTR szGroupName)461 SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
462 LPCWSTR szGroupName)
463 {
464 LLOGLN(0, ("SCardRemoveReaderFromGroupW:"));
465 return aSCardRemoveReaderFromGroupW(hContext, szReaderName, szGroupName);
466 }
467
468 /*****************************************************************************/
469 LONG WINAPI
SCardIntroduceCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen)470 SCardIntroduceCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName,
471 LPCGUID pguidPrimaryProvider,
472 LPCGUID rgguidInterfaces,
473 DWORD dwInterfaceCount, LPCBYTE pbAtr,
474 LPCBYTE pbAtrMask, DWORD cbAtrLen)
475 {
476 LLOGLN(0, ("SCardIntroduceCardTypeA:"));
477 return aSCardIntroduceCardTypeA(hContext, szCardName, pguidPrimaryProvider,
478 rgguidInterfaces, dwInterfaceCount, pbAtr,
479 pbAtrMask, cbAtrLen);
480 }
481
482 /*****************************************************************************/
483 LONG WINAPI
SCardIntroduceCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName,LPCGUID pguidPrimaryProvider,LPCGUID rgguidInterfaces,DWORD dwInterfaceCount,LPCBYTE pbAtr,LPCBYTE pbAtrMask,DWORD cbAtrLen)484 SCardIntroduceCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName,
485 LPCGUID pguidPrimaryProvider, LPCGUID rgguidInterfaces,
486 DWORD dwInterfaceCount, LPCBYTE pbAtr,
487 LPCBYTE pbAtrMask, DWORD cbAtrLen)
488 {
489 LLOGLN(0, ("SCardIntroduceCardTypeW:"));
490 return aSCardIntroduceCardTypeW(hContext, szCardName, pguidPrimaryProvider,
491 rgguidInterfaces, dwInterfaceCount, pbAtr,
492 pbAtrMask, cbAtrLen);
493 }
494
495 /*****************************************************************************/
496 LONG WINAPI
SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext,LPCSTR szCardName,DWORD dwProviderId,LPCSTR szProvider)497 SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
498 DWORD dwProviderId, LPCSTR szProvider)
499 {
500 LLOGLN(0, ("SCardSetCardTypeProviderNameA:"));
501 return aSCardSetCardTypeProviderNameA(hContext, szCardName,
502 dwProviderId, szProvider);
503 }
504
505 /*****************************************************************************/
506 LONG WINAPI
SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext,LPCWSTR szCardName,DWORD dwProviderId,LPCWSTR szProvider)507 SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
508 DWORD dwProviderId, LPCWSTR szProvider)
509 {
510 LLOGLN(0, ("SCardSetCardTypeProviderNameW:"));
511 return aSCardSetCardTypeProviderNameW(hContext, szCardName,
512 dwProviderId, szProvider);
513 }
514
515 /*****************************************************************************/
516 LONG WINAPI
SCardForgetCardTypeA(SCARDCONTEXT hContext,LPCSTR szCardName)517 SCardForgetCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName)
518 {
519 LLOGLN(0, ("SCardForgetCardTypeA:"));
520 return aSCardForgetCardTypeA(hContext, szCardName);
521 }
522
523 /*****************************************************************************/
524 LONG WINAPI
SCardForgetCardTypeW(SCARDCONTEXT hContext,LPCWSTR szCardName)525 SCardForgetCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName)
526 {
527 LLOGLN(0, ("SCardForgetCardTypeW:"));
528 return aSCardForgetCardTypeW(hContext, szCardName);
529 }
530
531 /*****************************************************************************/
532 LONG WINAPI
SCardFreeMemory(SCARDCONTEXT hContext,LPCVOID pvMem)533 SCardFreeMemory(SCARDCONTEXT hContext, LPCVOID pvMem)
534 {
535 LLOGLN(0, ("SCardFreeMemory:"));
536 return aSCardFreeMemory(hContext, pvMem);
537 }
538
539 /*****************************************************************************/
540 LONG WINAPI
SCardLocateCardsA(SCARDCONTEXT hContext,LPCSTR mszCards,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders)541 SCardLocateCardsA(SCARDCONTEXT hContext, LPCSTR mszCards,
542 LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders)
543 {
544 LLOGLN(0, ("SCardLocateCardsA:"));
545 return aSCardLocateCardsA(hContext, mszCards, rgReaderStates, cReaders);
546 }
547
548 /*****************************************************************************/
549 LONG WINAPI
SCardLocateCardsW(SCARDCONTEXT hContext,LPCWSTR mszCards,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders)550 SCardLocateCardsW(SCARDCONTEXT hContext, LPCWSTR mszCards,
551 LPSCARD_READERSTATEW rgReaderStates, DWORD cReaders)
552 {
553 LLOGLN(0, ("SCardLocateCardsW:"));
554 return aSCardLocateCardsW(hContext, mszCards, rgReaderStates, cReaders);
555 }
556
557 /*****************************************************************************/
558 LONG WINAPI
SCardGetStatusChangeA(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEA rgReaderStates,DWORD cReaders)559 SCardGetStatusChangeA(SCARDCONTEXT hContext, DWORD dwTimeout,
560 LPSCARD_READERSTATEA rgReaderStates,
561 DWORD cReaders)
562 {
563 LLOGLN(0, ("SCardGetStatusChangeA:"));
564 return aSCardGetStatusChangeA(hContext, dwTimeout, rgReaderStates, cReaders);
565 }
566
567 /*****************************************************************************/
568 LONG WINAPI
SCardGetStatusChangeW(SCARDCONTEXT hContext,DWORD dwTimeout,LPSCARD_READERSTATEW rgReaderStates,DWORD cReaders)569 SCardGetStatusChangeW(SCARDCONTEXT hContext, DWORD dwTimeout,
570 LPSCARD_READERSTATEW rgReaderStates,
571 DWORD cReaders)
572 {
573 LLOGLN(0, ("SCardGetStatusChangeW:"));
574 return aSCardGetStatusChangeW(hContext, dwTimeout, rgReaderStates, cReaders);
575 }
576
577 /*****************************************************************************/
578 LONG WINAPI
SCardCancel(SCARDCONTEXT hContext)579 SCardCancel(SCARDCONTEXT hContext)
580 {
581 LLOGLN(0, ("SCardCancel:"));
582 return aSCardCancel(hContext);
583 }
584
585 /*****************************************************************************/
586 LONG WINAPI
SCardConnectA(SCARDCONTEXT hContext,LPCSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol)587 SCardConnectA(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode,
588 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
589 LPDWORD pdwActiveProtocol)
590 {
591 LLOGLN(0, ("SCardConnectA:"));
592 return aSCardConnectA(hContext, szReader, dwShareMode,
593 dwPreferredProtocols, phCard,
594 pdwActiveProtocol);
595 }
596
597 /*****************************************************************************/
598 LONG WINAPI
SCardConnectW(SCARDCONTEXT hContext,LPCWSTR szReader,DWORD dwShareMode,DWORD dwPreferredProtocols,LPSCARDHANDLE phCard,LPDWORD pdwActiveProtocol)599 SCardConnectW(SCARDCONTEXT hContext, LPCWSTR szReader, DWORD dwShareMode,
600 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
601 LPDWORD pdwActiveProtocol)
602 {
603 LLOGLN(0, ("SCardConnectW:"));
604 return aSCardConnectW(hContext, szReader, dwShareMode,
605 dwPreferredProtocols, phCard,
606 pdwActiveProtocol);
607 }
608
609 /*****************************************************************************/
610 LONG WINAPI
SCardReconnect(SCARDHANDLE hCard,DWORD dwShareMode,DWORD dwPreferredProtocols,DWORD dwInitialization,LPDWORD pdwActiveProtocol)611 SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,
612 DWORD dwPreferredProtocols, DWORD dwInitialization,
613 LPDWORD pdwActiveProtocol)
614 {
615 LLOGLN(0, ("SCardReconnect:"));
616 return SCardReconnect(hCard, dwShareMode, dwPreferredProtocols,
617 dwInitialization, pdwActiveProtocol);
618 }
619
620 /*****************************************************************************/
621 LONG WINAPI
SCardDisconnect(SCARDHANDLE hCard,DWORD dwDisposition)622 SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
623 {
624 LLOGLN(0, ("SCardDisconnect:"));
625 return aSCardDisconnect(hCard, dwDisposition);
626 }
627
628 /*****************************************************************************/
629 LONG WINAPI
SCardBeginTransaction(SCARDHANDLE hCard)630 SCardBeginTransaction(SCARDHANDLE hCard)
631 {
632 LLOGLN(0, ("SCardBeginTransaction:"));
633 return aSCardBeginTransaction(hCard);
634 }
635
636 /*****************************************************************************/
637 LONG WINAPI
SCardEndTransaction(SCARDHANDLE hCard,DWORD dwDisposition)638 SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition)
639 {
640 LLOGLN(0, ("SCardEndTransaction:"));
641 return aSCardEndTransaction(hCard, dwDisposition);
642 }
643
644 /*****************************************************************************/
645 LONG WINAPI
SCardCancelTransaction(SCARDHANDLE hCard)646 SCardCancelTransaction(SCARDHANDLE hCard)
647 {
648 LLOGLN(0, ("SCardCancelTransaction:"));
649 return aSCardCancelTransaction(hCard);
650 }
651
652 /*****************************************************************************/
653 LONG WINAPI
SCardState(SCARDHANDLE hCard,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen)654 SCardState(SCARDHANDLE hCard, LPDWORD pdwState, LPDWORD pdwProtocol,
655 LPBYTE pbAtr, LPDWORD pcbAtrLen)
656 {
657 LLOGLN(0, ("SCardState:"));
658 return aSCardState(hCard, pdwState, pdwProtocol, pbAtr, pcbAtrLen);
659 }
660
661 /*****************************************************************************/
662 LONG WINAPI
SCardStatusA(SCARDHANDLE hCard,LPSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen)663 SCardStatusA(SCARDHANDLE hCard, LPSTR szReaderName, LPDWORD pcchReaderLen,
664 LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr,
665 LPDWORD pcbAtrLen)
666 {
667 LLOGLN(0, ("SCardStatusA:"));
668 return aSCardStatusA(hCard, szReaderName, pcchReaderLen,
669 pdwState, pdwProtocol, pbAtr, pcbAtrLen);
670 }
671
672 /*****************************************************************************/
673 LONG WINAPI
SCardStatusW(SCARDHANDLE hCard,LPWSTR szReaderName,LPDWORD pcchReaderLen,LPDWORD pdwState,LPDWORD pdwProtocol,LPBYTE pbAtr,LPDWORD pcbAtrLen)674 SCardStatusW(SCARDHANDLE hCard, LPWSTR szReaderName, LPDWORD pcchReaderLen,
675 LPDWORD pdwState, LPDWORD pdwProtocol, LPBYTE pbAtr,
676 LPDWORD pcbAtrLen)
677 {
678 LONG rv;
679
680 LLOGLN(0, ("SCardStatusW:"));
681 LLOGLN(0, (" cchReaderLen %d", *pcchReaderLen));
682 LLOGLN(0, (" cbAtrLen %d", *pcbAtrLen));
683 rv = aSCardStatusW(hCard, szReaderName, pcchReaderLen,
684 pdwState, pdwProtocol, pbAtr, pcbAtrLen);
685 LLOGLN(0, (" rv %d cchReaderLen %d", rv, *pcchReaderLen));
686 return rv;
687 }
688
689 /*****************************************************************************/
690 LONG WINAPI
SCardTransmit(SCARDHANDLE hCard,LPCSCARD_IO_REQUEST pioSendPci,LPCBYTE pbSendBuffer,DWORD cbSendLength,LPSCARD_IO_REQUEST pioRecvPci,LPBYTE pbRecvBuffer,LPDWORD pcbRecvLength)691 SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
692 LPCBYTE pbSendBuffer, DWORD cbSendLength,
693 LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer,
694 LPDWORD pcbRecvLength)
695 {
696 LONG rv;
697
698 LLOGLN(10, ("SCardTransmit:"));
699 LLOGLN(10, (" hCard %p", hCard));
700 LLOGLN(10, (" cbSendLength %d", cbSendLength));
701 LLOGLN(10, (" cbRecvLength %d", *pcbRecvLength));
702 LLOGLN(10, (" pioSendPci->dwProtocol %d", pioSendPci->dwProtocol));
703 LLOGLN(10, (" pioSendPci->cbPciLength %d", pioSendPci->cbPciLength));
704 LLOGLN(10, (" pioRecvPci %p", pioRecvPci));
705 if (pioRecvPci != NULL)
706 {
707 LLOGLN(10, (" pioRecvPci->dwProtocol %d", pioRecvPci->dwProtocol));
708 LLOGLN(10, (" pioRecvPci->cbPciLength %d", pioRecvPci->cbPciLength));
709 }
710 rv = aSCardTransmit(hCard, pioSendPci, pbSendBuffer, cbSendLength,
711 pioRecvPci, pbRecvBuffer, pcbRecvLength);
712 LLOGLN(10, (" rv %d cbRecvLength %d", rv, *pcbRecvLength));
713 return rv;
714 }
715
716 /*****************************************************************************/
717 LONG WINAPI
SCardControl(SCARDHANDLE hCard,DWORD dwControlCode,LPCVOID lpInBuffer,DWORD nInBufferSize,LPVOID lpOutBuffer,DWORD nOutBufferSize,LPDWORD lpBytesReturned)718 SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID lpInBuffer,
719 DWORD nInBufferSize, LPVOID lpOutBuffer,
720 DWORD nOutBufferSize, LPDWORD lpBytesReturned)
721 {
722 LONG rv;
723 char text[8148];
724
725 LLOGLN(10, ("SCardControl:"));
726 LLOGLN(10, (" hCard %p", hCard));
727 LLOGLN(10, (" dwControlCode 0x%8.8x", dwControlCode));
728 LLOGLN(10, (" lpInBuffer %p", lpInBuffer));
729 LLOGLN(10, (" nInBufferSize %d", nInBufferSize));
730 LLOGLN(10, (" lpOutBuffer %p", lpOutBuffer));
731 LLOGLN(10, (" nOutBufferSize %d", nOutBufferSize));
732 LLOGLN(10, (" lpBytesReturned %p", lpBytesReturned));
733 rv = aSCardControl(hCard, dwControlCode,
734 lpInBuffer, nInBufferSize,
735 lpOutBuffer, nOutBufferSize,
736 lpBytesReturned);
737 LLOGLN(10, (" rv %d BytesReturned %d", rv, *lpBytesReturned));
738 return rv;
739 }
740
741 /*****************************************************************************/
742 LONG WINAPI
SCardGetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPBYTE pbAttr,LPDWORD pcbAttrLen)743 SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
744 LPDWORD pcbAttrLen)
745 {
746 LLOGLN(0, ("SCardGetAttrib:"));
747 return aSCardGetAttrib(hCard, dwAttrId, pbAttr, pcbAttrLen);
748 }
749
750 /*****************************************************************************/
751 LONG WINAPI
SCardSetAttrib(SCARDHANDLE hCard,DWORD dwAttrId,LPCBYTE pbAttr,DWORD cbAttrLen)752 SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,
753 DWORD cbAttrLen)
754 {
755 LLOGLN(0, ("SCardSetAttrib:"));
756 return aSCardSetAttrib(hCard, dwAttrId, pbAttr, cbAttrLen);
757 }
758