FreeRDP
Loading...
Searching...
No Matches
smartcard_inspect.c
1
22#include <winpr/config.h>
23
24#include <winpr/crt.h>
25#include <winpr/wlog.h>
26#include <winpr/file.h>
27#include <winpr/path.h>
28#include <winpr/library.h>
29#include <winpr/smartcard.h>
30
31#include "smartcard_inspect.h"
32
33#include "../log.h"
34#define TAG WINPR_TAG("smartcard.inspect")
35
36#define xstr(s) str(s)
37#define str(s) #s
38
39#define SCARDAPI_STUB_CALL_LONG(status, _name, ...) \
40 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
41 { \
42 WLog_DBG(TAG, "Missing function pointer g_SCardApi=%p->" xstr(pfn##_name) "=%p", \
43 WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi), \
44 g_SCardApi ? WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi->pfn##_name) \
45 : nullptr); \
46 status = SCARD_E_NO_SERVICE; \
47 } \
48 else \
49 status = g_SCardApi->pfn##_name(__VA_ARGS__)
50
51#define SCARDAPI_STUB_CALL_HANDLE(status, _name, ...) \
52 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
53 { \
54 WLog_DBG(TAG, "Missing function pointer g_SCardApi=%p->" xstr(pfn##_name) "=%p", \
55 WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi), \
56 g_SCardApi ? WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi->pfn##_name) \
57 : nullptr); \
58 status = nullptr; \
59 } \
60 else \
61 status = g_SCardApi->pfn##_name(__VA_ARGS__)
62
63#define SCARDAPI_STUB_CALL_VOID(_name, ...) \
64 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
65 { \
66 WLog_DBG(TAG, "Missing function pointer g_SCardApi=%p->" xstr(pfn##_name) "=%p", \
67 WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi), \
68 g_SCardApi ? WINPR_CXX_COMPAT_CAST(const void*, g_SCardApi->pfn##_name) \
69 : nullptr); \
70 } \
71 else \
72 g_SCardApi->pfn##_name(__VA_ARGS__)
73
74static const DWORD g_LogLevel = WLOG_DEBUG;
75static wLog* g_Log = nullptr;
76
77static const SCardApiFunctionTable* g_SCardApi = nullptr;
78
83static LONG WINAPI Inspect_SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1,
84 LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
85{
86 LONG status = 0;
87
88 WLog_Print(g_Log, g_LogLevel, "SCardEstablishContext { dwScope: %s (0x%08" PRIX32 ")",
89 SCardGetScopeString(dwScope), dwScope);
90
91 SCARDAPI_STUB_CALL_LONG(status, SCardEstablishContext, dwScope, pvReserved1, pvReserved2,
92 phContext);
93
94 WLog_Print(g_Log, g_LogLevel, "SCardEstablishContext } status: %s (0x%08" PRIX32 ")",
95 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
96
97 return status;
98}
99
100static LONG WINAPI Inspect_SCardReleaseContext(SCARDCONTEXT hContext)
101{
102 LONG status = 0;
103
104 WLog_Print(g_Log, g_LogLevel, "SCardReleaseContext { hContext: %p",
105 WINPR_CXX_COMPAT_CAST(const void*, hContext));
106
107 SCARDAPI_STUB_CALL_LONG(status, SCardReleaseContext, hContext);
108
109 WLog_Print(g_Log, g_LogLevel, "SCardReleaseContext } status: %s (0x%08" PRIX32 ")",
110 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
111
112 return status;
113}
114
115static LONG WINAPI Inspect_SCardIsValidContext(SCARDCONTEXT hContext)
116{
117 LONG status = 0;
118
119 WLog_Print(g_Log, g_LogLevel, "SCardIsValidContext { hContext: %p",
120 WINPR_CXX_COMPAT_CAST(const void*, hContext));
121
122 SCARDAPI_STUB_CALL_LONG(status, SCardIsValidContext, hContext);
123
124 WLog_Print(g_Log, g_LogLevel, "SCardIsValidContext } status: %s (0x%08" PRIX32 ")",
125 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
126
127 return status;
128}
129
130static LONG WINAPI Inspect_SCardListReaderGroupsA(SCARDCONTEXT hContext, LPSTR mszGroups,
131 LPDWORD pcchGroups)
132{
133 LONG status = 0;
134
135 WLog_Print(g_Log, g_LogLevel, "SCardListReaderGroupsA { hContext: %p",
136 WINPR_CXX_COMPAT_CAST(const void*, hContext));
137
138 SCARDAPI_STUB_CALL_LONG(status, SCardListReaderGroupsA, hContext, mszGroups, pcchGroups);
139
140 WLog_Print(g_Log, g_LogLevel, "SCardListReaderGroupsA } status: %s (0x%08" PRIX32 ")",
141 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
142
143 return status;
144}
145
146static LONG WINAPI Inspect_SCardListReaderGroupsW(SCARDCONTEXT hContext, LPWSTR mszGroups,
147 LPDWORD pcchGroups)
148{
149 LONG status = 0;
150
151 WLog_Print(g_Log, g_LogLevel, "SCardListReaderGroupsW { hContext: %p",
152 WINPR_CXX_COMPAT_CAST(const void*, hContext));
153
154 SCARDAPI_STUB_CALL_LONG(status, SCardListReaderGroupsW, hContext, mszGroups, pcchGroups);
155
156 WLog_Print(g_Log, g_LogLevel, "SCardListReaderGroupsW } status: %s (0x%08" PRIX32 ")",
157 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
158
159 return status;
160}
161
162static LONG WINAPI Inspect_SCardListReadersA(SCARDCONTEXT hContext, LPCSTR mszGroups,
163 LPSTR mszReaders, LPDWORD pcchReaders)
164{
165 LONG status = 0;
166
167 WLog_Print(g_Log, g_LogLevel, "SCardListReadersA { hContext: %p",
168 WINPR_CXX_COMPAT_CAST(const void*, hContext));
169
170 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersA, hContext, mszGroups, mszReaders,
171 pcchReaders);
172
173 WLog_Print(g_Log, g_LogLevel, "SCardListReadersA } status: %s (0x%08" PRIX32 ")",
174 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
175
176 return status;
177}
178
179static LONG WINAPI Inspect_SCardListReadersW(SCARDCONTEXT hContext, LPCWSTR mszGroups,
180 LPWSTR mszReaders, LPDWORD pcchReaders)
181{
182 LONG status = 0;
183 WLog_Print(g_Log, g_LogLevel, "SCardListReadersW { hContext: %p",
184 WINPR_CXX_COMPAT_CAST(const void*, hContext));
185
186 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersW, hContext, mszGroups, mszReaders,
187 pcchReaders);
188 WLog_Print(g_Log, g_LogLevel, "SCardListReadersW } status: %s (0x%08" PRIX32 ")",
189 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
190
191 return status;
192}
193
194static LONG WINAPI Inspect_SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr,
195 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
196 CHAR* mszCards, LPDWORD pcchCards)
197{
198 LONG status = 0;
199
200 WLog_Print(g_Log, g_LogLevel, "SCardListCardsA { hContext: %p",
201 WINPR_CXX_COMPAT_CAST(const void*, hContext));
202
203 SCARDAPI_STUB_CALL_LONG(status, SCardListCardsA, hContext, pbAtr, rgquidInterfaces,
204 cguidInterfaceCount, mszCards, pcchCards);
205
206 WLog_Print(g_Log, g_LogLevel, "SCardListCardsA } status: %s (0x%08" PRIX32 ")",
207 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
208
209 return status;
210}
211
212static LONG WINAPI Inspect_SCardListCardsW(SCARDCONTEXT hContext, LPCBYTE pbAtr,
213 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
214 WCHAR* mszCards, LPDWORD pcchCards)
215{
216 LONG status = 0;
217
218 WLog_Print(g_Log, g_LogLevel, "SCardListCardsW { hContext: %p",
219 WINPR_CXX_COMPAT_CAST(const void*, hContext));
220
221 SCARDAPI_STUB_CALL_LONG(status, SCardListCardsW, hContext, pbAtr, rgquidInterfaces,
222 cguidInterfaceCount, mszCards, pcchCards);
223
224 WLog_Print(g_Log, g_LogLevel, "SCardListCardsW } status: %s (0x%08" PRIX32 ")",
225 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
226
227 return status;
228}
229
230static LONG WINAPI Inspect_SCardListInterfacesA(SCARDCONTEXT hContext, LPCSTR szCard,
231 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
232{
233 LONG status = 0;
234
235 WLog_Print(g_Log, g_LogLevel, "SCardListInterfacesA { hContext: %p",
236 WINPR_CXX_COMPAT_CAST(const void*, hContext));
237
238 SCARDAPI_STUB_CALL_LONG(status, SCardListInterfacesA, hContext, szCard, pguidInterfaces,
239 pcguidInterfaces);
240
241 WLog_Print(g_Log, g_LogLevel, "SCardListInterfacesA } status: %s (0x%08" PRIX32 ")",
242 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
243
244 return status;
245}
246
247static LONG WINAPI Inspect_SCardListInterfacesW(SCARDCONTEXT hContext, LPCWSTR szCard,
248 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
249{
250 LONG status = 0;
251
252 WLog_Print(g_Log, g_LogLevel, "SCardListInterfacesW { hContext: %p",
253 WINPR_CXX_COMPAT_CAST(const void*, hContext));
254
255 SCARDAPI_STUB_CALL_LONG(status, SCardListInterfacesW, hContext, szCard, pguidInterfaces,
256 pcguidInterfaces);
257
258 WLog_Print(g_Log, g_LogLevel, "SCardListInterfacesW } status: %s (0x%08" PRIX32 ")",
259 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
260
261 return status;
262}
263
264static LONG WINAPI Inspect_SCardGetProviderIdA(SCARDCONTEXT hContext, LPCSTR szCard,
265 LPGUID pguidProviderId)
266{
267 LONG status = 0;
268
269 WLog_Print(g_Log, g_LogLevel, "SCardGetProviderIdA { hContext: %p",
270 WINPR_CXX_COMPAT_CAST(const void*, hContext));
271
272 SCARDAPI_STUB_CALL_LONG(status, SCardGetProviderIdA, hContext, szCard, pguidProviderId);
273
274 WLog_Print(g_Log, g_LogLevel, "SCardGetProviderIdA } status: %s (0x%08" PRIX32 ")",
275 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
276
277 return status;
278}
279
280static LONG WINAPI Inspect_SCardGetProviderIdW(SCARDCONTEXT hContext, LPCWSTR szCard,
281 LPGUID pguidProviderId)
282{
283 LONG status = 0;
284
285 WLog_Print(g_Log, g_LogLevel, "SCardGetProviderIdW { hContext: %p",
286 WINPR_CXX_COMPAT_CAST(const void*, hContext));
287
288 SCARDAPI_STUB_CALL_LONG(status, SCardGetProviderIdW, hContext, szCard, pguidProviderId);
289
290 WLog_Print(g_Log, g_LogLevel, "SCardGetProviderIdW } status: %s (0x%08" PRIX32 ")",
291 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
292
293 return status;
294}
295
296static LONG WINAPI Inspect_SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
297 DWORD dwProviderId, CHAR* szProvider,
298 LPDWORD pcchProvider)
299{
300 LONG status = 0;
301
302 WLog_Print(g_Log, g_LogLevel, "SCardGetCardTypeProviderNameA { hContext: %p",
303 WINPR_CXX_COMPAT_CAST(const void*, hContext));
304
305 SCARDAPI_STUB_CALL_LONG(status, SCardGetCardTypeProviderNameA, hContext, szCardName,
306 dwProviderId, szProvider, pcchProvider);
307
308 WLog_Print(g_Log, g_LogLevel, "SCardGetCardTypeProviderNameA } status: %s (0x%08" PRIX32 ")",
309 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
310
311 return status;
312}
313
314static LONG WINAPI Inspect_SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
315 DWORD dwProviderId, WCHAR* szProvider,
316 LPDWORD pcchProvider)
317{
318 LONG status = 0;
319
320 WLog_Print(g_Log, g_LogLevel, "SCardGetCardTypeProviderNameW { hContext: %p",
321 WINPR_CXX_COMPAT_CAST(const void*, hContext));
322
323 SCARDAPI_STUB_CALL_LONG(status, SCardGetCardTypeProviderNameW, hContext, szCardName,
324 dwProviderId, szProvider, pcchProvider);
325
326 WLog_Print(g_Log, g_LogLevel, "SCardGetCardTypeProviderNameW } status: %s (0x%08" PRIX32 ")",
327 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
328
329 return status;
330}
331
332static LONG WINAPI Inspect_SCardIntroduceReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
333{
334 LONG status = 0;
335
336 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderGroupA { hContext: %p",
337 WINPR_CXX_COMPAT_CAST(const void*, hContext));
338
339 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderGroupA, hContext, szGroupName);
340
341 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderGroupA } status: %s (0x%08" PRIX32 ")",
342 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
343
344 return status;
345}
346
347static LONG WINAPI Inspect_SCardIntroduceReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
348{
349 LONG status = 0;
350
351 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderGroupW { hContext: %p",
352 WINPR_CXX_COMPAT_CAST(const void*, hContext));
353
354 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderGroupW, hContext, szGroupName);
355
356 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderGroupW } status: %s (0x%08" PRIX32 ")",
357 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
358
359 return status;
360}
361
362static LONG WINAPI Inspect_SCardForgetReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
363{
364 LONG status = 0;
365
366 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderGroupA { hContext: %p",
367 WINPR_CXX_COMPAT_CAST(const void*, hContext));
368
369 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderGroupA, hContext, szGroupName);
370
371 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderGroupA } status: %s (0x%08" PRIX32 ")",
372 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
373
374 return status;
375}
376
377static LONG WINAPI Inspect_SCardForgetReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
378{
379 LONG status = 0;
380
381 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderGroupW { hContext: %p",
382 WINPR_CXX_COMPAT_CAST(const void*, hContext));
383
384 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderGroupW, hContext, szGroupName);
385
386 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderGroupW } status: %s (0x%08" PRIX32 ")",
387 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
388
389 return status;
390}
391
392static LONG WINAPI Inspect_SCardIntroduceReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName,
393 LPCSTR szDeviceName)
394{
395 LONG status = 0;
396
397 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderA { hContext: %p",
398 WINPR_CXX_COMPAT_CAST(const void*, hContext));
399
400 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderA, hContext, szReaderName, szDeviceName);
401
402 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderA } status: %s (0x%08" PRIX32 ")",
403 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
404
405 return status;
406}
407
408static LONG WINAPI Inspect_SCardIntroduceReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
409 LPCWSTR szDeviceName)
410{
411 LONG status = 0;
412
413 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderW { hContext: %p",
414 WINPR_CXX_COMPAT_CAST(const void*, hContext));
415
416 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderW, hContext, szReaderName, szDeviceName);
417
418 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceReaderW } status: %s (0x%08" PRIX32 ")",
419 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
420
421 return status;
422}
423
424static LONG WINAPI Inspect_SCardForgetReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName)
425{
426 LONG status = 0;
427
428 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderA { hContext: %p",
429 WINPR_CXX_COMPAT_CAST(const void*, hContext));
430
431 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderA, hContext, szReaderName);
432
433 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderA } status: %s (0x%08" PRIX32 ")",
434 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
435
436 return status;
437}
438
439static LONG WINAPI Inspect_SCardForgetReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName)
440{
441 LONG status = 0;
442
443 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderW { hContext: %p",
444 WINPR_CXX_COMPAT_CAST(const void*, hContext));
445
446 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderW, hContext, szReaderName);
447
448 WLog_Print(g_Log, g_LogLevel, "SCardForgetReaderW } status: %s (0x%08" PRIX32 ")",
449 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
450
451 return status;
452}
453
454static LONG WINAPI Inspect_SCardAddReaderToGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
455 LPCSTR szGroupName)
456{
457 LONG status = 0;
458
459 WLog_Print(g_Log, g_LogLevel, "SCardAddReaderToGroupA { hContext: %p",
460 WINPR_CXX_COMPAT_CAST(const void*, hContext));
461
462 SCARDAPI_STUB_CALL_LONG(status, SCardAddReaderToGroupA, hContext, szReaderName, szGroupName);
463
464 WLog_Print(g_Log, g_LogLevel, "SCardAddReaderToGroupA } status: %s (0x%08" PRIX32 ")",
465 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
466
467 return status;
468}
469
470static LONG WINAPI Inspect_SCardAddReaderToGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
471 LPCWSTR szGroupName)
472{
473 LONG status = 0;
474
475 WLog_Print(g_Log, g_LogLevel, "SCardAddReaderToGroupW { hContext: %p",
476 WINPR_CXX_COMPAT_CAST(const void*, hContext));
477
478 SCARDAPI_STUB_CALL_LONG(status, SCardAddReaderToGroupW, hContext, szReaderName, szGroupName);
479
480 WLog_Print(g_Log, g_LogLevel, "SCardAddReaderToGroupW } status: %s (0x%08" PRIX32 ")",
481 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
482
483 return status;
484}
485
486static LONG WINAPI Inspect_SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
487 LPCSTR szGroupName)
488{
489 LONG status = 0;
490
491 WLog_Print(g_Log, g_LogLevel, "SCardRemoveReaderFromGroupA { hContext: %p",
492 WINPR_CXX_COMPAT_CAST(const void*, hContext));
493
494 SCARDAPI_STUB_CALL_LONG(status, SCardRemoveReaderFromGroupA, hContext, szReaderName,
495 szGroupName);
496
497 WLog_Print(g_Log, g_LogLevel, "SCardRemoveReaderFromGroupA } status: %s (0x%08" PRIX32 ")",
498 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
499
500 return status;
501}
502
503static LONG WINAPI Inspect_SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
504 LPCWSTR szGroupName)
505{
506 LONG status = 0;
507
508 WLog_Print(g_Log, g_LogLevel, "SCardRemoveReaderFromGroupW { hContext: %p",
509 WINPR_CXX_COMPAT_CAST(const void*, hContext));
510
511 SCARDAPI_STUB_CALL_LONG(status, SCardRemoveReaderFromGroupW, hContext, szReaderName,
512 szGroupName);
513
514 WLog_Print(g_Log, g_LogLevel, "SCardRemoveReaderFromGroupW } status: %s (0x%08" PRIX32 ")",
515 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
516
517 return status;
518}
519
520static LONG WINAPI Inspect_SCardIntroduceCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName,
521 LPCGUID pguidPrimaryProvider,
522 LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
523 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen)
524{
525 LONG status = 0;
526
527 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceCardTypeA { hContext: %p",
528 WINPR_CXX_COMPAT_CAST(const void*, hContext));
529
530 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceCardTypeA, hContext, szCardName,
531 pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr,
532 pbAtrMask, cbAtrLen);
533
534 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceCardTypeA } status: %s (0x%08" PRIX32 ")",
535 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
536
537 return status;
538}
539
540static LONG WINAPI Inspect_SCardIntroduceCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName,
541 LPCGUID pguidPrimaryProvider,
542 LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
543 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen)
544{
545 LONG status = 0;
546
547 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceCardTypeW { hContext: %p",
548 WINPR_CXX_COMPAT_CAST(const void*, hContext));
549
550 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceCardTypeW, hContext, szCardName,
551 pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr,
552 pbAtrMask, cbAtrLen);
553
554 WLog_Print(g_Log, g_LogLevel, "SCardIntroduceCardTypeW } status: %s (0x%08" PRIX32 ")",
555 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
556
557 return status;
558}
559
560static LONG WINAPI Inspect_SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
561 DWORD dwProviderId, LPCSTR szProvider)
562{
563 LONG status = 0;
564
565 WLog_Print(g_Log, g_LogLevel, "SCardSetCardTypeProviderNameA { hContext: %p",
566 WINPR_CXX_COMPAT_CAST(const void*, hContext));
567
568 SCARDAPI_STUB_CALL_LONG(status, SCardSetCardTypeProviderNameA, hContext, szCardName,
569 dwProviderId, szProvider);
570
571 WLog_Print(g_Log, g_LogLevel, "SCardSetCardTypeProviderNameA } status: %s (0x%08" PRIX32 ")",
572 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
573
574 return status;
575}
576
577static LONG WINAPI Inspect_SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
578 DWORD dwProviderId, LPCWSTR szProvider)
579{
580 LONG status = 0;
581
582 WLog_Print(g_Log, g_LogLevel, "SCardSetCardTypeProviderNameA { hContext: %p",
583 WINPR_CXX_COMPAT_CAST(const void*, hContext));
584
585 SCARDAPI_STUB_CALL_LONG(status, SCardSetCardTypeProviderNameW, hContext, szCardName,
586 dwProviderId, szProvider);
587
588 WLog_Print(g_Log, g_LogLevel, "SCardSetCardTypeProviderNameW } status: %s (0x%08" PRIX32 ")",
589 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
590
591 return status;
592}
593
594static LONG WINAPI Inspect_SCardForgetCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName)
595{
596 LONG status = 0;
597
598 WLog_Print(g_Log, g_LogLevel, "SCardForgetCardTypeA { hContext: %p",
599 WINPR_CXX_COMPAT_CAST(const void*, hContext));
600
601 SCARDAPI_STUB_CALL_LONG(status, SCardForgetCardTypeA, hContext, szCardName);
602
603 WLog_Print(g_Log, g_LogLevel, "SCardForgetCardTypeA } status: %s (0x%08" PRIX32 ")",
604 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
605
606 return status;
607}
608
609static LONG WINAPI Inspect_SCardForgetCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName)
610{
611 LONG status = 0;
612
613 WLog_Print(g_Log, g_LogLevel, "SCardForgetCardTypeW { hContext: %p",
614 WINPR_CXX_COMPAT_CAST(const void*, hContext));
615
616 SCARDAPI_STUB_CALL_LONG(status, SCardForgetCardTypeW, hContext, szCardName);
617
618 WLog_Print(g_Log, g_LogLevel, "SCardForgetCardTypeW } status: %s (0x%08" PRIX32 ")",
619 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
620
621 return status;
622}
623
624static LONG WINAPI Inspect_SCardFreeMemory(SCARDCONTEXT hContext, LPVOID pvMem)
625{
626 LONG status = 0;
627
628 WLog_Print(g_Log, g_LogLevel, "SCardFreeMemory { hContext: %p",
629 WINPR_CXX_COMPAT_CAST(const void*, hContext));
630
631 SCARDAPI_STUB_CALL_LONG(status, SCardFreeMemory, hContext, pvMem);
632
633 WLog_Print(g_Log, g_LogLevel, "SCardFreeMemory } status: %s (0x%08" PRIX32 ")",
634 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
635
636 return status;
637}
638
639static HANDLE WINAPI Inspect_SCardAccessStartedEvent(void)
640{
641 HANDLE hEvent = nullptr;
642
643 WLog_Print(g_Log, g_LogLevel, "SCardAccessStartedEvent {");
644
645 SCARDAPI_STUB_CALL_HANDLE(hEvent, SCardAccessStartedEvent);
646
647 WLog_Print(g_Log, g_LogLevel, "SCardAccessStartedEvent } hEvent: %p", hEvent);
648
649 return hEvent;
650}
651
652static void WINAPI Inspect_SCardReleaseStartedEvent(void)
653{
654 WLog_Print(g_Log, g_LogLevel, "SCardReleaseStartedEvent {");
655
656 SCARDAPI_STUB_CALL_VOID(SCardReleaseStartedEvent);
657
658 WLog_Print(g_Log, g_LogLevel, "SCardReleaseStartedEvent }");
659}
660
661static LONG WINAPI Inspect_SCardLocateCardsA(SCARDCONTEXT hContext, LPCSTR mszCards,
662 LPSCARD_READERSTATEA rgReaderStates, DWORD cReaders)
663{
664 LONG status = 0;
665
666 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsA { hContext: %p",
667 WINPR_CXX_COMPAT_CAST(const void*, hContext));
668
669 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsA, hContext, mszCards, rgReaderStates,
670 cReaders);
671
672 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsA } status: %s (0x%08" PRIX32 ")",
673 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
674
675 return status;
676}
677
678static LONG WINAPI Inspect_SCardLocateCardsW(SCARDCONTEXT hContext, LPCWSTR mszCards,
679 LPSCARD_READERSTATEW rgReaderStates, DWORD cReaders)
680{
681 LONG status = 0;
682
683 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsW { hContext: %p",
684 WINPR_CXX_COMPAT_CAST(const void*, hContext));
685
686 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsW, hContext, mszCards, rgReaderStates,
687 cReaders);
688
689 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsW } status: %s (0x%08" PRIX32 ")",
690 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
691
692 return status;
693}
694
695static LONG WINAPI Inspect_SCardLocateCardsByATRA(SCARDCONTEXT hContext, LPSCARD_ATRMASK rgAtrMasks,
696 DWORD cAtrs, LPSCARD_READERSTATEA rgReaderStates,
697 DWORD cReaders)
698{
699 LONG status = 0;
700
701 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsByATRA { hContext: %p",
702 WINPR_CXX_COMPAT_CAST(const void*, hContext));
703
704 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsByATRA, hContext, rgAtrMasks, cAtrs,
705 rgReaderStates, cReaders);
706
707 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsByATRA } status: %s (0x%08" PRIX32 ")",
708 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
709
710 return status;
711}
712
713static LONG WINAPI Inspect_SCardLocateCardsByATRW(SCARDCONTEXT hContext, LPSCARD_ATRMASK rgAtrMasks,
714 DWORD cAtrs, LPSCARD_READERSTATEW rgReaderStates,
715 DWORD cReaders)
716{
717 LONG status = 0;
718
719 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsByATRW { hContext: %p",
720 WINPR_CXX_COMPAT_CAST(const void*, hContext));
721
722 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsByATRW, hContext, rgAtrMasks, cAtrs,
723 rgReaderStates, cReaders);
724
725 WLog_Print(g_Log, g_LogLevel, "SCardLocateCardsByATRW } status: %s (0x%08" PRIX32 ")",
726 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
727
728 return status;
729}
730
731static LONG WINAPI Inspect_SCardGetStatusChangeA(SCARDCONTEXT hContext, DWORD dwTimeout,
732 LPSCARD_READERSTATEA rgReaderStates,
733 DWORD cReaders)
734{
735 LONG status = 0;
736
737 WLog_Print(g_Log, g_LogLevel, "SCardGetStatusChangeA { hContext: %p",
738 WINPR_CXX_COMPAT_CAST(const void*, hContext));
739
740 SCARDAPI_STUB_CALL_LONG(status, SCardGetStatusChangeA, hContext, dwTimeout, rgReaderStates,
741 cReaders);
742
743 WLog_Print(g_Log, g_LogLevel, "SCardGetStatusChangeA } status: %s (0x%08" PRIX32 ")",
744 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
745
746 return status;
747}
748
749static LONG WINAPI Inspect_SCardGetStatusChangeW(SCARDCONTEXT hContext, DWORD dwTimeout,
750 LPSCARD_READERSTATEW rgReaderStates,
751 DWORD cReaders)
752{
753 LONG status = 0;
754
755 WLog_Print(g_Log, g_LogLevel, "SCardGetStatusChangeW { hContext: %p",
756 WINPR_CXX_COMPAT_CAST(const void*, hContext));
757
758 SCARDAPI_STUB_CALL_LONG(status, SCardGetStatusChangeW, hContext, dwTimeout, rgReaderStates,
759 cReaders);
760
761 WLog_Print(g_Log, g_LogLevel, "SCardGetStatusChangeW } status: %s (0x%08" PRIX32 ")",
762 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
763
764 return status;
765}
766
767static LONG WINAPI Inspect_SCardCancel(SCARDCONTEXT hContext)
768{
769 LONG status = 0;
770
771 WLog_Print(g_Log, g_LogLevel, "SCardCancel { hContext: %p",
772 WINPR_CXX_COMPAT_CAST(const void*, hContext));
773
774 SCARDAPI_STUB_CALL_LONG(status, SCardCancel, hContext);
775
776 WLog_Print(g_Log, g_LogLevel, "SCardCancel } status: %s (0x%08" PRIX32 ")",
777 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
778
779 return status;
780}
781
782static LONG WINAPI Inspect_SCardConnectA(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode,
783 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
784 LPDWORD pdwActiveProtocol)
785{
786 LONG status = 0;
787
788 WLog_Print(g_Log, g_LogLevel, "SCardConnectA { hContext: %p",
789 WINPR_CXX_COMPAT_CAST(const void*, hContext));
790
791 SCARDAPI_STUB_CALL_LONG(status, SCardConnectA, hContext, szReader, dwShareMode,
792 dwPreferredProtocols, phCard, pdwActiveProtocol);
793
794 WLog_Print(g_Log, g_LogLevel, "SCardConnectA } status: %s (0x%08" PRIX32 ")",
795 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
796
797 return status;
798}
799
800static LONG WINAPI Inspect_SCardConnectW(SCARDCONTEXT hContext, LPCWSTR szReader, DWORD dwShareMode,
801 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
802 LPDWORD pdwActiveProtocol)
803{
804 LONG status = 0;
805
806 WLog_Print(g_Log, g_LogLevel, "SCardConnectW { hContext: %p",
807 WINPR_CXX_COMPAT_CAST(const void*, hContext));
808
809 SCARDAPI_STUB_CALL_LONG(status, SCardConnectW, hContext, szReader, dwShareMode,
810 dwPreferredProtocols, phCard, pdwActiveProtocol);
811
812 WLog_Print(g_Log, g_LogLevel, "SCardConnectW } status: %s (0x%08" PRIX32 ")",
813 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
814
815 return status;
816}
817
818static LONG WINAPI Inspect_SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,
819 DWORD dwPreferredProtocols, DWORD dwInitialization,
820 LPDWORD pdwActiveProtocol)
821{
822 LONG status = 0;
823
824 WLog_Print(g_Log, g_LogLevel, "SCardReconnect { hCard: %p", (void*)hCard);
825
826 SCARDAPI_STUB_CALL_LONG(status, SCardReconnect, hCard, dwShareMode, dwPreferredProtocols,
827 dwInitialization, pdwActiveProtocol);
828
829 WLog_Print(g_Log, g_LogLevel, "SCardReconnect } status: %s (0x%08" PRIX32 ")",
830 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
831
832 return status;
833}
834
835static LONG WINAPI Inspect_SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
836{
837 LONG status = 0;
838
839 WLog_Print(g_Log, g_LogLevel, "SCardDisconnect { hCard: %p", (void*)hCard);
840
841 SCARDAPI_STUB_CALL_LONG(status, SCardDisconnect, hCard, dwDisposition);
842
843 WLog_Print(g_Log, g_LogLevel, "SCardDisconnect } status: %s (0x%08" PRIX32 ")",
844 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
845
846 return status;
847}
848
849static LONG WINAPI Inspect_SCardBeginTransaction(SCARDHANDLE hCard)
850{
851 LONG status = 0;
852
853 WLog_Print(g_Log, g_LogLevel, "SCardBeginTransaction { hCard: %p", (void*)hCard);
854
855 SCARDAPI_STUB_CALL_LONG(status, SCardBeginTransaction, hCard);
856
857 WLog_Print(g_Log, g_LogLevel, "SCardBeginTransaction } status: %s (0x%08" PRIX32 ")",
858 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
859
860 return status;
861}
862
863static LONG WINAPI Inspect_SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition)
864{
865 LONG status = 0;
866
867 WLog_Print(g_Log, g_LogLevel, "SCardEndTransaction { hCard: %p", (void*)hCard);
868
869 SCARDAPI_STUB_CALL_LONG(status, SCardEndTransaction, hCard, dwDisposition);
870
871 WLog_Print(g_Log, g_LogLevel, "SCardEndTransaction } status: %s (0x%08" PRIX32 ")",
872 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
873
874 return status;
875}
876
877static LONG WINAPI Inspect_SCardCancelTransaction(SCARDHANDLE hCard)
878{
879 LONG status = 0;
880
881 WLog_Print(g_Log, g_LogLevel, "SCardCancelTransaction { hCard: %p", (void*)hCard);
882
883 SCARDAPI_STUB_CALL_LONG(status, SCardCancelTransaction, hCard);
884
885 WLog_Print(g_Log, g_LogLevel, "SCardCancelTransaction } status: %s (0x%08" PRIX32 ")",
886 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
887
888 return status;
889}
890
891static LONG WINAPI Inspect_SCardState(SCARDHANDLE hCard, LPDWORD pdwState, LPDWORD pdwProtocol,
892 LPBYTE pbAtr, LPDWORD pcbAtrLen)
893{
894 LONG status = 0;
895
896 WLog_Print(g_Log, g_LogLevel, "SCardState { hCard: %p", (void*)hCard);
897
898 SCARDAPI_STUB_CALL_LONG(status, SCardState, hCard, pdwState, pdwProtocol, pbAtr, pcbAtrLen);
899
900 WLog_Print(g_Log, g_LogLevel, "SCardState } status: %s (0x%08" PRIX32 ")",
901 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
902
903 return status;
904}
905
906static LONG WINAPI Inspect_SCardStatusA(SCARDHANDLE hCard, LPSTR mszReaderNames,
907 LPDWORD pcchReaderLen, LPDWORD pdwState,
908 LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)
909{
910 LONG status = 0;
911
912 WLog_Print(g_Log, g_LogLevel, "SCardStatusA { hCard: %p", (void*)hCard);
913
914 SCARDAPI_STUB_CALL_LONG(status, SCardStatusA, hCard, mszReaderNames, pcchReaderLen, pdwState,
915 pdwProtocol, pbAtr, pcbAtrLen);
916
917 WLog_Print(g_Log, g_LogLevel, "SCardStatusA } status: %s (0x%08" PRIX32 ")",
918 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
919
920 return status;
921}
922
923static LONG WINAPI Inspect_SCardStatusW(SCARDHANDLE hCard, LPWSTR mszReaderNames,
924 LPDWORD pcchReaderLen, LPDWORD pdwState,
925 LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)
926{
927 LONG status = 0;
928
929 WLog_Print(g_Log, g_LogLevel, "SCardStatusW { hCard: %p", (void*)hCard);
930
931 SCARDAPI_STUB_CALL_LONG(status, SCardStatusW, hCard, mszReaderNames, pcchReaderLen, pdwState,
932 pdwProtocol, pbAtr, pcbAtrLen);
933
934 WLog_Print(g_Log, g_LogLevel, "SCardStatusW } status: %s (0x%08" PRIX32 ")",
935 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
936
937 return status;
938}
939
940static LONG WINAPI Inspect_SCardTransmit(SCARDHANDLE hCard, LPCSCARD_IO_REQUEST pioSendPci,
941 LPCBYTE pbSendBuffer, DWORD cbSendLength,
942 LPSCARD_IO_REQUEST pioRecvPci, LPBYTE pbRecvBuffer,
943 LPDWORD pcbRecvLength)
944{
945 LONG status = 0;
946
947 WLog_Print(g_Log, g_LogLevel, "SCardTransmit { hCard: %p", (void*)hCard);
948
949 SCARDAPI_STUB_CALL_LONG(status, SCardTransmit, hCard, pioSendPci, pbSendBuffer, cbSendLength,
950 pioRecvPci, pbRecvBuffer, pcbRecvLength);
951
952 WLog_Print(g_Log, g_LogLevel, "SCardTransmit } status: %s (0x%08" PRIX32 ")",
953 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
954
955 return status;
956}
957
958static LONG WINAPI Inspect_SCardGetTransmitCount(SCARDHANDLE hCard, LPDWORD pcTransmitCount)
959{
960 LONG status = 0;
961
962 WLog_Print(g_Log, g_LogLevel, "SCardGetTransmitCount { hCard: %p", (void*)hCard);
963
964 SCARDAPI_STUB_CALL_LONG(status, SCardGetTransmitCount, hCard, pcTransmitCount);
965
966 WLog_Print(g_Log, g_LogLevel, "SCardGetTransmitCount } status: %s (0x%08" PRIX32 ")",
967 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
968
969 return status;
970}
971
972static LONG WINAPI Inspect_SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID lpInBuffer,
973 DWORD cbInBufferSize, LPVOID lpOutBuffer,
974 DWORD cbOutBufferSize, LPDWORD lpBytesReturned)
975{
976 LONG status = 0;
977
978 WLog_Print(g_Log, g_LogLevel, "SCardControl { hCard: %p", (void*)hCard);
979
980 SCARDAPI_STUB_CALL_LONG(status, SCardControl, hCard, dwControlCode, lpInBuffer, cbInBufferSize,
981 lpOutBuffer, cbOutBufferSize, lpBytesReturned);
982
983 WLog_Print(g_Log, g_LogLevel, "SCardControl } status: %s (0x%08" PRIX32 ")",
984 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
985
986 return status;
987}
988
989static LONG WINAPI Inspect_SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
990 LPDWORD pcbAttrLen)
991{
992 LONG status = 0;
993
994 WLog_Print(g_Log, g_LogLevel, "SCardGetAttrib { hCard: %p", (void*)hCard);
995
996 SCARDAPI_STUB_CALL_LONG(status, SCardGetAttrib, hCard, dwAttrId, pbAttr, pcbAttrLen);
997
998 WLog_Print(g_Log, g_LogLevel, "SCardGetAttrib } status: %s (0x%08" PRIX32 ")",
999 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1000
1001 return status;
1002}
1003
1004static LONG WINAPI Inspect_SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,
1005 DWORD cbAttrLen)
1006{
1007 LONG status = 0;
1008
1009 WLog_Print(g_Log, g_LogLevel, "SCardSetAttrib { hCard: %p", (void*)hCard);
1010
1011 SCARDAPI_STUB_CALL_LONG(status, SCardSetAttrib, hCard, dwAttrId, pbAttr, cbAttrLen);
1012
1013 WLog_Print(g_Log, g_LogLevel, "SCardSetAttrib } status: %s (0x%08" PRIX32 ")",
1014 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1015
1016 return status;
1017}
1018
1019static LONG WINAPI Inspect_SCardUIDlgSelectCardA(LPOPENCARDNAMEA_EX pDlgStruc)
1020{
1021 LONG status = 0;
1022
1023 WLog_Print(g_Log, g_LogLevel, "SCardUIDlgSelectCardA {");
1024
1025 SCARDAPI_STUB_CALL_LONG(status, SCardUIDlgSelectCardA, pDlgStruc);
1026
1027 WLog_Print(g_Log, g_LogLevel, "SCardUIDlgSelectCardA } status: %s (0x%08" PRIX32 ")",
1028 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1029
1030 return status;
1031}
1032
1033static LONG WINAPI Inspect_SCardUIDlgSelectCardW(LPOPENCARDNAMEW_EX pDlgStruc)
1034{
1035 LONG status = 0;
1036
1037 WLog_Print(g_Log, g_LogLevel, "SCardUIDlgSelectCardW {");
1038
1039 SCARDAPI_STUB_CALL_LONG(status, SCardUIDlgSelectCardW, pDlgStruc);
1040
1041 WLog_Print(g_Log, g_LogLevel, "SCardUIDlgSelectCardW } status: %s (0x%08" PRIX32 ")",
1042 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1043
1044 return status;
1045}
1046
1047static LONG WINAPI Inspect_GetOpenCardNameA(LPOPENCARDNAMEA pDlgStruc)
1048{
1049 LONG status = 0;
1050
1051 WLog_Print(g_Log, g_LogLevel, "GetOpenCardNameA {");
1052
1053 SCARDAPI_STUB_CALL_LONG(status, GetOpenCardNameA, pDlgStruc);
1054
1055 WLog_Print(g_Log, g_LogLevel, "GetOpenCardNameA } status: %s (0x%08" PRIX32 ")",
1056 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1057
1058 return status;
1059}
1060
1061static LONG WINAPI Inspect_GetOpenCardNameW(LPOPENCARDNAMEW pDlgStruc)
1062{
1063 LONG status = 0;
1064
1065 WLog_Print(g_Log, g_LogLevel, "GetOpenCardNameW {");
1066
1067 SCARDAPI_STUB_CALL_LONG(status, GetOpenCardNameW, pDlgStruc);
1068
1069 WLog_Print(g_Log, g_LogLevel, "GetOpenCardNameW } status: %s (0x%08" PRIX32 ")",
1070 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1071
1072 return status;
1073}
1074
1075static LONG WINAPI Inspect_SCardDlgExtendedError(void)
1076{
1077 LONG status = 0;
1078
1079 WLog_Print(g_Log, g_LogLevel, "SCardDlgExtendedError {");
1080
1081 SCARDAPI_STUB_CALL_LONG(status, SCardDlgExtendedError);
1082
1083 WLog_Print(g_Log, g_LogLevel, "SCardDlgExtendedError } status: %s (0x%08" PRIX32 ")",
1084 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1085
1086 return status;
1087}
1088
1089static LONG WINAPI Inspect_SCardReadCacheA(SCARDCONTEXT hContext, UUID* CardIdentifier,
1090 DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
1091 DWORD* DataLen)
1092{
1093 LONG status = 0;
1094
1095 WLog_Print(g_Log, g_LogLevel, "SCardReadCacheA { hContext: %p",
1096 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1097
1098 SCARDAPI_STUB_CALL_LONG(status, SCardReadCacheA, hContext, CardIdentifier, FreshnessCounter,
1099 LookupName, Data, DataLen);
1100
1101 WLog_Print(g_Log, g_LogLevel, "SCardReadCacheA } status: %s (0x%08" PRIX32 ")",
1102 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1103
1104 return status;
1105}
1106
1107static LONG WINAPI Inspect_SCardReadCacheW(SCARDCONTEXT hContext, UUID* CardIdentifier,
1108 DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
1109 DWORD* DataLen)
1110{
1111 LONG status = 0;
1112
1113 WLog_Print(g_Log, g_LogLevel, "SCardReadCacheW { hContext: %p",
1114 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1115
1116 SCARDAPI_STUB_CALL_LONG(status, SCardReadCacheW, hContext, CardIdentifier, FreshnessCounter,
1117 LookupName, Data, DataLen);
1118
1119 WLog_Print(g_Log, g_LogLevel, "SCardReadCacheW } status: %s (0x%08" PRIX32 ")",
1120 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1121
1122 return status;
1123}
1124
1125static LONG WINAPI Inspect_SCardWriteCacheA(SCARDCONTEXT hContext, UUID* CardIdentifier,
1126 DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
1127 DWORD DataLen)
1128{
1129 LONG status = 0;
1130
1131 WLog_Print(g_Log, g_LogLevel, "SCardWriteCacheA { hContext: %p",
1132 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1133
1134 SCARDAPI_STUB_CALL_LONG(status, SCardWriteCacheA, hContext, CardIdentifier, FreshnessCounter,
1135 LookupName, Data, DataLen);
1136
1137 WLog_Print(g_Log, g_LogLevel, "SCardWriteCacheA } status: %s (0x%08" PRIX32 ")",
1138 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1139
1140 return status;
1141}
1142
1143static LONG WINAPI Inspect_SCardWriteCacheW(SCARDCONTEXT hContext, UUID* CardIdentifier,
1144 DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
1145 DWORD DataLen)
1146{
1147 LONG status = 0;
1148
1149 WLog_Print(g_Log, g_LogLevel, "SCardWriteCacheW { hContext: %p",
1150 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1151
1152 SCARDAPI_STUB_CALL_LONG(status, SCardWriteCacheW, hContext, CardIdentifier, FreshnessCounter,
1153 LookupName, Data, DataLen);
1154
1155 WLog_Print(g_Log, g_LogLevel, "SCardWriteCacheW } status: %s (0x%08" PRIX32 ")",
1156 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1157
1158 return status;
1159}
1160
1161static LONG WINAPI Inspect_SCardGetReaderIconA(SCARDCONTEXT hContext, LPCSTR szReaderName,
1162 LPBYTE pbIcon, LPDWORD pcbIcon)
1163{
1164 LONG status = 0;
1165
1166 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderIconA { hContext: %p",
1167 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1168
1169 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderIconA, hContext, szReaderName, pbIcon, pcbIcon);
1170
1171 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderIconA } status: %s (0x%08" PRIX32 ")",
1172 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1173
1174 return status;
1175}
1176
1177static LONG WINAPI Inspect_SCardGetReaderIconW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
1178 LPBYTE pbIcon, LPDWORD pcbIcon)
1179{
1180 LONG status = 0;
1181
1182 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderIconW { hContext: %p",
1183 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1184
1185 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderIconW, hContext, szReaderName, pbIcon, pcbIcon);
1186
1187 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderIconW } status: %s (0x%08" PRIX32 ")",
1188 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1189
1190 return status;
1191}
1192
1193static LONG WINAPI Inspect_SCardGetDeviceTypeIdA(SCARDCONTEXT hContext, LPCSTR szReaderName,
1194 LPDWORD pdwDeviceTypeId)
1195{
1196 LONG status = 0;
1197
1198 WLog_Print(g_Log, g_LogLevel, "SCardGetDeviceTypeIdA { hContext: %p",
1199 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1200
1201 SCARDAPI_STUB_CALL_LONG(status, SCardGetDeviceTypeIdA, hContext, szReaderName, pdwDeviceTypeId);
1202
1203 WLog_Print(g_Log, g_LogLevel, "SCardGetDeviceTypeIdA } status: %s (0x%08" PRIX32 ")",
1204 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1205
1206 return status;
1207}
1208
1209static LONG WINAPI Inspect_SCardGetDeviceTypeIdW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
1210 LPDWORD pdwDeviceTypeId)
1211{
1212 LONG status = 0;
1213
1214 WLog_Print(g_Log, g_LogLevel, "SCardGetDeviceTypeIdW { hContext: %p",
1215 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1216
1217 SCARDAPI_STUB_CALL_LONG(status, SCardGetDeviceTypeIdW, hContext, szReaderName, pdwDeviceTypeId);
1218
1219 WLog_Print(g_Log, g_LogLevel, "SCardGetDeviceTypeIdW } status: %s (0x%08" PRIX32 ")",
1220 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1221
1222 return status;
1223}
1224
1225static LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdA(SCARDCONTEXT hContext,
1226 LPCSTR szReaderName,
1227 LPSTR szDeviceInstanceId,
1228 LPDWORD pcchDeviceInstanceId)
1229{
1230 LONG status = 0;
1231
1232 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderDeviceInstanceIdA { hContext: %p",
1233 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1234
1235 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderDeviceInstanceIdA, hContext, szReaderName,
1236 szDeviceInstanceId, pcchDeviceInstanceId);
1237
1238 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderDeviceInstanceIdA } status: %s (0x%08" PRIX32 ")",
1239 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1240
1241 return status;
1242}
1243
1244static LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdW(SCARDCONTEXT hContext,
1245 LPCWSTR szReaderName,
1246 LPWSTR szDeviceInstanceId,
1247 LPDWORD pcchDeviceInstanceId)
1248{
1249 LONG status = 0;
1250
1251 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderDeviceInstanceIdW { hContext: %p",
1252 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1253
1254 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderDeviceInstanceIdW, hContext, szReaderName,
1255 szDeviceInstanceId, pcchDeviceInstanceId);
1256
1257 WLog_Print(g_Log, g_LogLevel, "SCardGetReaderDeviceInstanceIdW } status: %s (0x%08" PRIX32 ")",
1258 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1259
1260 return status;
1261}
1262
1263static LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdA(SCARDCONTEXT hContext,
1264 LPCSTR szDeviceInstanceId,
1265 LPSTR mszReaders,
1266 LPDWORD pcchReaders)
1267{
1268 LONG status = 0;
1269
1270 WLog_Print(g_Log, g_LogLevel, "SCardListReadersWithDeviceInstanceIdA { hContext: %p",
1271 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1272
1273 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersWithDeviceInstanceIdA, hContext,
1274 szDeviceInstanceId, mszReaders, pcchReaders);
1275
1276 WLog_Print(g_Log, g_LogLevel,
1277 "SCardListReadersWithDeviceInstanceIdA } status: %s (0x%08" PRIX32 ")",
1278 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1279
1280 return status;
1281}
1282
1283static LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdW(SCARDCONTEXT hContext,
1284 LPCWSTR szDeviceInstanceId,
1285 LPWSTR mszReaders,
1286 LPDWORD pcchReaders)
1287{
1288 LONG status = 0;
1289
1290 WLog_Print(g_Log, g_LogLevel, "SCardListReadersWithDeviceInstanceIdW { hContext: %p",
1291 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1292
1293 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersWithDeviceInstanceIdW, hContext,
1294 szDeviceInstanceId, mszReaders, pcchReaders);
1295
1296 WLog_Print(g_Log, g_LogLevel,
1297 "SCardListReadersWithDeviceInstanceIdW } status: %s (0x%08" PRIX32 ")",
1298 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1299
1300 return status;
1301}
1302
1303static LONG WINAPI Inspect_SCardAudit(SCARDCONTEXT hContext, DWORD dwEvent)
1304{
1305 LONG status = 0;
1306
1307 WLog_Print(g_Log, g_LogLevel, "SCardAudit { hContext: %p",
1308 WINPR_CXX_COMPAT_CAST(const void*, hContext));
1309
1310 SCARDAPI_STUB_CALL_LONG(status, SCardAudit, hContext, dwEvent);
1311
1312 WLog_Print(g_Log, g_LogLevel, "SCardAudit } status: %s (0x%08" PRIX32 ")",
1313 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1314
1315 return status;
1316}
1317
1322static const SCardApiFunctionTable Inspect_SCardApiFunctionTable = {
1323 0, /* dwVersion */
1324 0, /* dwFlags */
1325
1326 Inspect_SCardEstablishContext, /* SCardEstablishContext */
1327 Inspect_SCardReleaseContext, /* SCardReleaseContext */
1328 Inspect_SCardIsValidContext, /* SCardIsValidContext */
1329 Inspect_SCardListReaderGroupsA, /* SCardListReaderGroupsA */
1330 Inspect_SCardListReaderGroupsW, /* SCardListReaderGroupsW */
1331 Inspect_SCardListReadersA, /* SCardListReadersA */
1332 Inspect_SCardListReadersW, /* SCardListReadersW */
1333 Inspect_SCardListCardsA, /* SCardListCardsA */
1334 Inspect_SCardListCardsW, /* SCardListCardsW */
1335 Inspect_SCardListInterfacesA, /* SCardListInterfacesA */
1336 Inspect_SCardListInterfacesW, /* SCardListInterfacesW */
1337 Inspect_SCardGetProviderIdA, /* SCardGetProviderIdA */
1338 Inspect_SCardGetProviderIdW, /* SCardGetProviderIdW */
1339 Inspect_SCardGetCardTypeProviderNameA, /* SCardGetCardTypeProviderNameA */
1340 Inspect_SCardGetCardTypeProviderNameW, /* SCardGetCardTypeProviderNameW */
1341 Inspect_SCardIntroduceReaderGroupA, /* SCardIntroduceReaderGroupA */
1342 Inspect_SCardIntroduceReaderGroupW, /* SCardIntroduceReaderGroupW */
1343 Inspect_SCardForgetReaderGroupA, /* SCardForgetReaderGroupA */
1344 Inspect_SCardForgetReaderGroupW, /* SCardForgetReaderGroupW */
1345 Inspect_SCardIntroduceReaderA, /* SCardIntroduceReaderA */
1346 Inspect_SCardIntroduceReaderW, /* SCardIntroduceReaderW */
1347 Inspect_SCardForgetReaderA, /* SCardForgetReaderA */
1348 Inspect_SCardForgetReaderW, /* SCardForgetReaderW */
1349 Inspect_SCardAddReaderToGroupA, /* SCardAddReaderToGroupA */
1350 Inspect_SCardAddReaderToGroupW, /* SCardAddReaderToGroupW */
1351 Inspect_SCardRemoveReaderFromGroupA, /* SCardRemoveReaderFromGroupA */
1352 Inspect_SCardRemoveReaderFromGroupW, /* SCardRemoveReaderFromGroupW */
1353 Inspect_SCardIntroduceCardTypeA, /* SCardIntroduceCardTypeA */
1354 Inspect_SCardIntroduceCardTypeW, /* SCardIntroduceCardTypeW */
1355 Inspect_SCardSetCardTypeProviderNameA, /* SCardSetCardTypeProviderNameA */
1356 Inspect_SCardSetCardTypeProviderNameW, /* SCardSetCardTypeProviderNameW */
1357 Inspect_SCardForgetCardTypeA, /* SCardForgetCardTypeA */
1358 Inspect_SCardForgetCardTypeW, /* SCardForgetCardTypeW */
1359 Inspect_SCardFreeMemory, /* SCardFreeMemory */
1360 Inspect_SCardAccessStartedEvent, /* SCardAccessStartedEvent */
1361 Inspect_SCardReleaseStartedEvent, /* SCardReleaseStartedEvent */
1362 Inspect_SCardLocateCardsA, /* SCardLocateCardsA */
1363 Inspect_SCardLocateCardsW, /* SCardLocateCardsW */
1364 Inspect_SCardLocateCardsByATRA, /* SCardLocateCardsByATRA */
1365 Inspect_SCardLocateCardsByATRW, /* SCardLocateCardsByATRW */
1366 Inspect_SCardGetStatusChangeA, /* SCardGetStatusChangeA */
1367 Inspect_SCardGetStatusChangeW, /* SCardGetStatusChangeW */
1368 Inspect_SCardCancel, /* SCardCancel */
1369 Inspect_SCardConnectA, /* SCardConnectA */
1370 Inspect_SCardConnectW, /* SCardConnectW */
1371 Inspect_SCardReconnect, /* SCardReconnect */
1372 Inspect_SCardDisconnect, /* SCardDisconnect */
1373 Inspect_SCardBeginTransaction, /* SCardBeginTransaction */
1374 Inspect_SCardEndTransaction, /* SCardEndTransaction */
1375 Inspect_SCardCancelTransaction, /* SCardCancelTransaction */
1376 Inspect_SCardState, /* SCardState */
1377 Inspect_SCardStatusA, /* SCardStatusA */
1378 Inspect_SCardStatusW, /* SCardStatusW */
1379 Inspect_SCardTransmit, /* SCardTransmit */
1380 Inspect_SCardGetTransmitCount, /* SCardGetTransmitCount */
1381 Inspect_SCardControl, /* SCardControl */
1382 Inspect_SCardGetAttrib, /* SCardGetAttrib */
1383 Inspect_SCardSetAttrib, /* SCardSetAttrib */
1384 Inspect_SCardUIDlgSelectCardA, /* SCardUIDlgSelectCardA */
1385 Inspect_SCardUIDlgSelectCardW, /* SCardUIDlgSelectCardW */
1386 Inspect_GetOpenCardNameA, /* GetOpenCardNameA */
1387 Inspect_GetOpenCardNameW, /* GetOpenCardNameW */
1388 Inspect_SCardDlgExtendedError, /* SCardDlgExtendedError */
1389 Inspect_SCardReadCacheA, /* SCardReadCacheA */
1390 Inspect_SCardReadCacheW, /* SCardReadCacheW */
1391 Inspect_SCardWriteCacheA, /* SCardWriteCacheA */
1392 Inspect_SCardWriteCacheW, /* SCardWriteCacheW */
1393 Inspect_SCardGetReaderIconA, /* SCardGetReaderIconA */
1394 Inspect_SCardGetReaderIconW, /* SCardGetReaderIconW */
1395 Inspect_SCardGetDeviceTypeIdA, /* SCardGetDeviceTypeIdA */
1396 Inspect_SCardGetDeviceTypeIdW, /* SCardGetDeviceTypeIdW */
1397 Inspect_SCardGetReaderDeviceInstanceIdA, /* SCardGetReaderDeviceInstanceIdA */
1398 Inspect_SCardGetReaderDeviceInstanceIdW, /* SCardGetReaderDeviceInstanceIdW */
1399 Inspect_SCardListReadersWithDeviceInstanceIdA, /* SCardListReadersWithDeviceInstanceIdA */
1400 Inspect_SCardListReadersWithDeviceInstanceIdW, /* SCardListReadersWithDeviceInstanceIdW */
1401 Inspect_SCardAudit /* SCardAudit */
1402};
1403
1404static void Inspect_InitLog(void)
1405{
1406 if (g_Log)
1407 return;
1408
1409 if (!(g_Log = WLog_Get("WinSCard")))
1410 return;
1411}
1412
1413const SCardApiFunctionTable* Inspect_RegisterSCardApi(const SCardApiFunctionTable* pSCardApi)
1414{
1415 g_SCardApi = pSCardApi;
1416
1417 Inspect_InitLog();
1418
1419 return &Inspect_SCardApiFunctionTable;
1420}
Definition wtypes.h:254