22#include <winpr/config.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>
31#include "smartcard_inspect.h"
34#define TAG WINPR_TAG("smartcard.inspect")
39#define SCARDAPI_STUB_CALL_LONG(status, _name, ...) \
40 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
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) \
46 status = SCARD_E_NO_SERVICE; \
49 status = g_SCardApi->pfn##_name(__VA_ARGS__)
51#define SCARDAPI_STUB_CALL_HANDLE(status, _name, ...) \
52 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
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) \
61 status = g_SCardApi->pfn##_name(__VA_ARGS__)
63#define SCARDAPI_STUB_CALL_VOID(_name, ...) \
64 if (!g_SCardApi || !g_SCardApi->pfn##_name) \
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) \
72 g_SCardApi->pfn##_name(__VA_ARGS__)
74static const DWORD g_LogLevel = WLOG_DEBUG;
75static wLog* g_Log =
nullptr;
83static LONG WINAPI Inspect_SCardEstablishContext(DWORD dwScope, LPCVOID pvReserved1,
84 LPCVOID pvReserved2, LPSCARDCONTEXT phContext)
88 WLog_Print(g_Log, g_LogLevel,
"SCardEstablishContext { dwScope: %s (0x%08" PRIX32
")",
89 SCardGetScopeString(dwScope), dwScope);
91 SCARDAPI_STUB_CALL_LONG(status, SCardEstablishContext, dwScope, pvReserved1, pvReserved2,
94 WLog_Print(g_Log, g_LogLevel,
"SCardEstablishContext } status: %s (0x%08" PRIX32
")",
95 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
100static LONG WINAPI Inspect_SCardReleaseContext(SCARDCONTEXT hContext)
104 WLog_Print(g_Log, g_LogLevel,
"SCardReleaseContext { hContext: %p",
105 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
107 SCARDAPI_STUB_CALL_LONG(status, SCardReleaseContext, hContext);
109 WLog_Print(g_Log, g_LogLevel,
"SCardReleaseContext } status: %s (0x%08" PRIX32
")",
110 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
115static LONG WINAPI Inspect_SCardIsValidContext(SCARDCONTEXT hContext)
119 WLog_Print(g_Log, g_LogLevel,
"SCardIsValidContext { hContext: %p",
120 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
122 SCARDAPI_STUB_CALL_LONG(status, SCardIsValidContext, hContext);
124 WLog_Print(g_Log, g_LogLevel,
"SCardIsValidContext } status: %s (0x%08" PRIX32
")",
125 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
130static LONG WINAPI Inspect_SCardListReaderGroupsA(SCARDCONTEXT hContext, LPSTR mszGroups,
135 WLog_Print(g_Log, g_LogLevel,
"SCardListReaderGroupsA { hContext: %p",
136 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
138 SCARDAPI_STUB_CALL_LONG(status, SCardListReaderGroupsA, hContext, mszGroups, pcchGroups);
140 WLog_Print(g_Log, g_LogLevel,
"SCardListReaderGroupsA } status: %s (0x%08" PRIX32
")",
141 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
146static LONG WINAPI Inspect_SCardListReaderGroupsW(SCARDCONTEXT hContext, LPWSTR mszGroups,
151 WLog_Print(g_Log, g_LogLevel,
"SCardListReaderGroupsW { hContext: %p",
152 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
154 SCARDAPI_STUB_CALL_LONG(status, SCardListReaderGroupsW, hContext, mszGroups, pcchGroups);
156 WLog_Print(g_Log, g_LogLevel,
"SCardListReaderGroupsW } status: %s (0x%08" PRIX32
")",
157 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
162static LONG WINAPI Inspect_SCardListReadersA(SCARDCONTEXT hContext, LPCSTR mszGroups,
163 LPSTR mszReaders, LPDWORD pcchReaders)
167 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersA { hContext: %p",
168 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
170 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersA, hContext, mszGroups, mszReaders,
173 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersA } status: %s (0x%08" PRIX32
")",
174 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
179static LONG WINAPI Inspect_SCardListReadersW(SCARDCONTEXT hContext, LPCWSTR mszGroups,
180 LPWSTR mszReaders, LPDWORD pcchReaders)
183 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersW { hContext: %p",
184 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
186 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersW, hContext, mszGroups, mszReaders,
188 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersW } status: %s (0x%08" PRIX32
")",
189 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
194static LONG WINAPI Inspect_SCardListCardsA(SCARDCONTEXT hContext, LPCBYTE pbAtr,
195 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
196 CHAR* mszCards, LPDWORD pcchCards)
200 WLog_Print(g_Log, g_LogLevel,
"SCardListCardsA { hContext: %p",
201 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
203 SCARDAPI_STUB_CALL_LONG(status, SCardListCardsA, hContext, pbAtr, rgquidInterfaces,
204 cguidInterfaceCount, mszCards, pcchCards);
206 WLog_Print(g_Log, g_LogLevel,
"SCardListCardsA } status: %s (0x%08" PRIX32
")",
207 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
212static LONG WINAPI Inspect_SCardListCardsW(SCARDCONTEXT hContext, LPCBYTE pbAtr,
213 LPCGUID rgquidInterfaces, DWORD cguidInterfaceCount,
214 WCHAR* mszCards, LPDWORD pcchCards)
218 WLog_Print(g_Log, g_LogLevel,
"SCardListCardsW { hContext: %p",
219 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
221 SCARDAPI_STUB_CALL_LONG(status, SCardListCardsW, hContext, pbAtr, rgquidInterfaces,
222 cguidInterfaceCount, mszCards, pcchCards);
224 WLog_Print(g_Log, g_LogLevel,
"SCardListCardsW } status: %s (0x%08" PRIX32
")",
225 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
230static LONG WINAPI Inspect_SCardListInterfacesA(SCARDCONTEXT hContext, LPCSTR szCard,
231 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
235 WLog_Print(g_Log, g_LogLevel,
"SCardListInterfacesA { hContext: %p",
236 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
238 SCARDAPI_STUB_CALL_LONG(status, SCardListInterfacesA, hContext, szCard, pguidInterfaces,
241 WLog_Print(g_Log, g_LogLevel,
"SCardListInterfacesA } status: %s (0x%08" PRIX32
")",
242 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
247static LONG WINAPI Inspect_SCardListInterfacesW(SCARDCONTEXT hContext, LPCWSTR szCard,
248 LPGUID pguidInterfaces, LPDWORD pcguidInterfaces)
252 WLog_Print(g_Log, g_LogLevel,
"SCardListInterfacesW { hContext: %p",
253 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
255 SCARDAPI_STUB_CALL_LONG(status, SCardListInterfacesW, hContext, szCard, pguidInterfaces,
258 WLog_Print(g_Log, g_LogLevel,
"SCardListInterfacesW } status: %s (0x%08" PRIX32
")",
259 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
264static LONG WINAPI Inspect_SCardGetProviderIdA(SCARDCONTEXT hContext, LPCSTR szCard,
265 LPGUID pguidProviderId)
269 WLog_Print(g_Log, g_LogLevel,
"SCardGetProviderIdA { hContext: %p",
270 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
272 SCARDAPI_STUB_CALL_LONG(status, SCardGetProviderIdA, hContext, szCard, pguidProviderId);
274 WLog_Print(g_Log, g_LogLevel,
"SCardGetProviderIdA } status: %s (0x%08" PRIX32
")",
275 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
280static LONG WINAPI Inspect_SCardGetProviderIdW(SCARDCONTEXT hContext, LPCWSTR szCard,
281 LPGUID pguidProviderId)
285 WLog_Print(g_Log, g_LogLevel,
"SCardGetProviderIdW { hContext: %p",
286 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
288 SCARDAPI_STUB_CALL_LONG(status, SCardGetProviderIdW, hContext, szCard, pguidProviderId);
290 WLog_Print(g_Log, g_LogLevel,
"SCardGetProviderIdW } status: %s (0x%08" PRIX32
")",
291 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
296static LONG WINAPI Inspect_SCardGetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
297 DWORD dwProviderId, CHAR* szProvider,
298 LPDWORD pcchProvider)
302 WLog_Print(g_Log, g_LogLevel,
"SCardGetCardTypeProviderNameA { hContext: %p",
303 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
305 SCARDAPI_STUB_CALL_LONG(status, SCardGetCardTypeProviderNameA, hContext, szCardName,
306 dwProviderId, szProvider, pcchProvider);
308 WLog_Print(g_Log, g_LogLevel,
"SCardGetCardTypeProviderNameA } status: %s (0x%08" PRIX32
")",
309 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
314static LONG WINAPI Inspect_SCardGetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
315 DWORD dwProviderId, WCHAR* szProvider,
316 LPDWORD pcchProvider)
320 WLog_Print(g_Log, g_LogLevel,
"SCardGetCardTypeProviderNameW { hContext: %p",
321 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
323 SCARDAPI_STUB_CALL_LONG(status, SCardGetCardTypeProviderNameW, hContext, szCardName,
324 dwProviderId, szProvider, pcchProvider);
326 WLog_Print(g_Log, g_LogLevel,
"SCardGetCardTypeProviderNameW } status: %s (0x%08" PRIX32
")",
327 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
332static LONG WINAPI Inspect_SCardIntroduceReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
336 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderGroupA { hContext: %p",
337 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
339 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderGroupA, hContext, szGroupName);
341 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderGroupA } status: %s (0x%08" PRIX32
")",
342 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
347static LONG WINAPI Inspect_SCardIntroduceReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
351 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderGroupW { hContext: %p",
352 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
354 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderGroupW, hContext, szGroupName);
356 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderGroupW } status: %s (0x%08" PRIX32
")",
357 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
362static LONG WINAPI Inspect_SCardForgetReaderGroupA(SCARDCONTEXT hContext, LPCSTR szGroupName)
366 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderGroupA { hContext: %p",
367 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
369 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderGroupA, hContext, szGroupName);
371 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderGroupA } status: %s (0x%08" PRIX32
")",
372 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
377static LONG WINAPI Inspect_SCardForgetReaderGroupW(SCARDCONTEXT hContext, LPCWSTR szGroupName)
381 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderGroupW { hContext: %p",
382 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
384 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderGroupW, hContext, szGroupName);
386 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderGroupW } status: %s (0x%08" PRIX32
")",
387 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
392static LONG WINAPI Inspect_SCardIntroduceReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName,
397 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderA { hContext: %p",
398 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
400 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderA, hContext, szReaderName, szDeviceName);
402 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderA } status: %s (0x%08" PRIX32
")",
403 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
408static LONG WINAPI Inspect_SCardIntroduceReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
409 LPCWSTR szDeviceName)
413 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderW { hContext: %p",
414 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
416 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceReaderW, hContext, szReaderName, szDeviceName);
418 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceReaderW } status: %s (0x%08" PRIX32
")",
419 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
424static LONG WINAPI Inspect_SCardForgetReaderA(SCARDCONTEXT hContext, LPCSTR szReaderName)
428 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderA { hContext: %p",
429 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
431 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderA, hContext, szReaderName);
433 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderA } status: %s (0x%08" PRIX32
")",
434 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
439static LONG WINAPI Inspect_SCardForgetReaderW(SCARDCONTEXT hContext, LPCWSTR szReaderName)
443 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderW { hContext: %p",
444 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
446 SCARDAPI_STUB_CALL_LONG(status, SCardForgetReaderW, hContext, szReaderName);
448 WLog_Print(g_Log, g_LogLevel,
"SCardForgetReaderW } status: %s (0x%08" PRIX32
")",
449 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
454static LONG WINAPI Inspect_SCardAddReaderToGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
459 WLog_Print(g_Log, g_LogLevel,
"SCardAddReaderToGroupA { hContext: %p",
460 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
462 SCARDAPI_STUB_CALL_LONG(status, SCardAddReaderToGroupA, hContext, szReaderName, szGroupName);
464 WLog_Print(g_Log, g_LogLevel,
"SCardAddReaderToGroupA } status: %s (0x%08" PRIX32
")",
465 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
470static LONG WINAPI Inspect_SCardAddReaderToGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
475 WLog_Print(g_Log, g_LogLevel,
"SCardAddReaderToGroupW { hContext: %p",
476 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
478 SCARDAPI_STUB_CALL_LONG(status, SCardAddReaderToGroupW, hContext, szReaderName, szGroupName);
480 WLog_Print(g_Log, g_LogLevel,
"SCardAddReaderToGroupW } status: %s (0x%08" PRIX32
")",
481 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
486static LONG WINAPI Inspect_SCardRemoveReaderFromGroupA(SCARDCONTEXT hContext, LPCSTR szReaderName,
491 WLog_Print(g_Log, g_LogLevel,
"SCardRemoveReaderFromGroupA { hContext: %p",
492 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
494 SCARDAPI_STUB_CALL_LONG(status, SCardRemoveReaderFromGroupA, hContext, szReaderName,
497 WLog_Print(g_Log, g_LogLevel,
"SCardRemoveReaderFromGroupA } status: %s (0x%08" PRIX32
")",
498 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
503static LONG WINAPI Inspect_SCardRemoveReaderFromGroupW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
508 WLog_Print(g_Log, g_LogLevel,
"SCardRemoveReaderFromGroupW { hContext: %p",
509 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
511 SCARDAPI_STUB_CALL_LONG(status, SCardRemoveReaderFromGroupW, hContext, szReaderName,
514 WLog_Print(g_Log, g_LogLevel,
"SCardRemoveReaderFromGroupW } status: %s (0x%08" PRIX32
")",
515 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
520static LONG WINAPI Inspect_SCardIntroduceCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName,
521 LPCGUID pguidPrimaryProvider,
522 LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
523 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen)
527 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceCardTypeA { hContext: %p",
528 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
530 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceCardTypeA, hContext, szCardName,
531 pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr,
532 pbAtrMask, cbAtrLen);
534 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceCardTypeA } status: %s (0x%08" PRIX32
")",
535 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
540static LONG WINAPI Inspect_SCardIntroduceCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName,
541 LPCGUID pguidPrimaryProvider,
542 LPCGUID rgguidInterfaces, DWORD dwInterfaceCount,
543 LPCBYTE pbAtr, LPCBYTE pbAtrMask, DWORD cbAtrLen)
547 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceCardTypeW { hContext: %p",
548 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
550 SCARDAPI_STUB_CALL_LONG(status, SCardIntroduceCardTypeW, hContext, szCardName,
551 pguidPrimaryProvider, rgguidInterfaces, dwInterfaceCount, pbAtr,
552 pbAtrMask, cbAtrLen);
554 WLog_Print(g_Log, g_LogLevel,
"SCardIntroduceCardTypeW } status: %s (0x%08" PRIX32
")",
555 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
560static LONG WINAPI Inspect_SCardSetCardTypeProviderNameA(SCARDCONTEXT hContext, LPCSTR szCardName,
561 DWORD dwProviderId, LPCSTR szProvider)
565 WLog_Print(g_Log, g_LogLevel,
"SCardSetCardTypeProviderNameA { hContext: %p",
566 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
568 SCARDAPI_STUB_CALL_LONG(status, SCardSetCardTypeProviderNameA, hContext, szCardName,
569 dwProviderId, szProvider);
571 WLog_Print(g_Log, g_LogLevel,
"SCardSetCardTypeProviderNameA } status: %s (0x%08" PRIX32
")",
572 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
577static LONG WINAPI Inspect_SCardSetCardTypeProviderNameW(SCARDCONTEXT hContext, LPCWSTR szCardName,
578 DWORD dwProviderId, LPCWSTR szProvider)
582 WLog_Print(g_Log, g_LogLevel,
"SCardSetCardTypeProviderNameA { hContext: %p",
583 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
585 SCARDAPI_STUB_CALL_LONG(status, SCardSetCardTypeProviderNameW, hContext, szCardName,
586 dwProviderId, szProvider);
588 WLog_Print(g_Log, g_LogLevel,
"SCardSetCardTypeProviderNameW } status: %s (0x%08" PRIX32
")",
589 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
594static LONG WINAPI Inspect_SCardForgetCardTypeA(SCARDCONTEXT hContext, LPCSTR szCardName)
598 WLog_Print(g_Log, g_LogLevel,
"SCardForgetCardTypeA { hContext: %p",
599 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
601 SCARDAPI_STUB_CALL_LONG(status, SCardForgetCardTypeA, hContext, szCardName);
603 WLog_Print(g_Log, g_LogLevel,
"SCardForgetCardTypeA } status: %s (0x%08" PRIX32
")",
604 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
609static LONG WINAPI Inspect_SCardForgetCardTypeW(SCARDCONTEXT hContext, LPCWSTR szCardName)
613 WLog_Print(g_Log, g_LogLevel,
"SCardForgetCardTypeW { hContext: %p",
614 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
616 SCARDAPI_STUB_CALL_LONG(status, SCardForgetCardTypeW, hContext, szCardName);
618 WLog_Print(g_Log, g_LogLevel,
"SCardForgetCardTypeW } status: %s (0x%08" PRIX32
")",
619 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
624static LONG WINAPI Inspect_SCardFreeMemory(SCARDCONTEXT hContext, LPVOID pvMem)
628 WLog_Print(g_Log, g_LogLevel,
"SCardFreeMemory { hContext: %p",
629 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
631 SCARDAPI_STUB_CALL_LONG(status, SCardFreeMemory, hContext, pvMem);
633 WLog_Print(g_Log, g_LogLevel,
"SCardFreeMemory } status: %s (0x%08" PRIX32
")",
634 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
639static HANDLE WINAPI Inspect_SCardAccessStartedEvent(
void)
641 HANDLE hEvent =
nullptr;
643 WLog_Print(g_Log, g_LogLevel,
"SCardAccessStartedEvent {");
645 SCARDAPI_STUB_CALL_HANDLE(hEvent, SCardAccessStartedEvent);
647 WLog_Print(g_Log, g_LogLevel,
"SCardAccessStartedEvent } hEvent: %p", hEvent);
652static void WINAPI Inspect_SCardReleaseStartedEvent(
void)
654 WLog_Print(g_Log, g_LogLevel,
"SCardReleaseStartedEvent {");
656 SCARDAPI_STUB_CALL_VOID(SCardReleaseStartedEvent);
658 WLog_Print(g_Log, g_LogLevel,
"SCardReleaseStartedEvent }");
661static LONG WINAPI Inspect_SCardLocateCardsA(SCARDCONTEXT hContext, LPCSTR mszCards,
666 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsA { hContext: %p",
667 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
669 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsA, hContext, mszCards, rgReaderStates,
672 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsA } status: %s (0x%08" PRIX32
")",
673 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
678static LONG WINAPI Inspect_SCardLocateCardsW(SCARDCONTEXT hContext, LPCWSTR mszCards,
683 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsW { hContext: %p",
684 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
686 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsW, hContext, mszCards, rgReaderStates,
689 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsW } status: %s (0x%08" PRIX32
")",
690 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
695static LONG WINAPI Inspect_SCardLocateCardsByATRA(SCARDCONTEXT hContext,
LPSCARD_ATRMASK rgAtrMasks,
701 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsByATRA { hContext: %p",
702 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
704 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsByATRA, hContext, rgAtrMasks, cAtrs,
705 rgReaderStates, cReaders);
707 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsByATRA } status: %s (0x%08" PRIX32
")",
708 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
713static LONG WINAPI Inspect_SCardLocateCardsByATRW(SCARDCONTEXT hContext,
LPSCARD_ATRMASK rgAtrMasks,
719 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsByATRW { hContext: %p",
720 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
722 SCARDAPI_STUB_CALL_LONG(status, SCardLocateCardsByATRW, hContext, rgAtrMasks, cAtrs,
723 rgReaderStates, cReaders);
725 WLog_Print(g_Log, g_LogLevel,
"SCardLocateCardsByATRW } status: %s (0x%08" PRIX32
")",
726 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
731static LONG WINAPI Inspect_SCardGetStatusChangeA(SCARDCONTEXT hContext, DWORD dwTimeout,
737 WLog_Print(g_Log, g_LogLevel,
"SCardGetStatusChangeA { hContext: %p",
738 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
740 SCARDAPI_STUB_CALL_LONG(status, SCardGetStatusChangeA, hContext, dwTimeout, rgReaderStates,
743 WLog_Print(g_Log, g_LogLevel,
"SCardGetStatusChangeA } status: %s (0x%08" PRIX32
")",
744 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
749static LONG WINAPI Inspect_SCardGetStatusChangeW(SCARDCONTEXT hContext, DWORD dwTimeout,
755 WLog_Print(g_Log, g_LogLevel,
"SCardGetStatusChangeW { hContext: %p",
756 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
758 SCARDAPI_STUB_CALL_LONG(status, SCardGetStatusChangeW, hContext, dwTimeout, rgReaderStates,
761 WLog_Print(g_Log, g_LogLevel,
"SCardGetStatusChangeW } status: %s (0x%08" PRIX32
")",
762 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
767static LONG WINAPI Inspect_SCardCancel(SCARDCONTEXT hContext)
771 WLog_Print(g_Log, g_LogLevel,
"SCardCancel { hContext: %p",
772 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
774 SCARDAPI_STUB_CALL_LONG(status, SCardCancel, hContext);
776 WLog_Print(g_Log, g_LogLevel,
"SCardCancel } status: %s (0x%08" PRIX32
")",
777 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
782static LONG WINAPI Inspect_SCardConnectA(SCARDCONTEXT hContext, LPCSTR szReader, DWORD dwShareMode,
783 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
784 LPDWORD pdwActiveProtocol)
788 WLog_Print(g_Log, g_LogLevel,
"SCardConnectA { hContext: %p",
789 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
791 SCARDAPI_STUB_CALL_LONG(status, SCardConnectA, hContext, szReader, dwShareMode,
792 dwPreferredProtocols, phCard, pdwActiveProtocol);
794 WLog_Print(g_Log, g_LogLevel,
"SCardConnectA } status: %s (0x%08" PRIX32
")",
795 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
800static LONG WINAPI Inspect_SCardConnectW(SCARDCONTEXT hContext, LPCWSTR szReader, DWORD dwShareMode,
801 DWORD dwPreferredProtocols, LPSCARDHANDLE phCard,
802 LPDWORD pdwActiveProtocol)
806 WLog_Print(g_Log, g_LogLevel,
"SCardConnectW { hContext: %p",
807 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
809 SCARDAPI_STUB_CALL_LONG(status, SCardConnectW, hContext, szReader, dwShareMode,
810 dwPreferredProtocols, phCard, pdwActiveProtocol);
812 WLog_Print(g_Log, g_LogLevel,
"SCardConnectW } status: %s (0x%08" PRIX32
")",
813 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
818static LONG WINAPI Inspect_SCardReconnect(SCARDHANDLE hCard, DWORD dwShareMode,
819 DWORD dwPreferredProtocols, DWORD dwInitialization,
820 LPDWORD pdwActiveProtocol)
824 WLog_Print(g_Log, g_LogLevel,
"SCardReconnect { hCard: %p", (
void*)hCard);
826 SCARDAPI_STUB_CALL_LONG(status, SCardReconnect, hCard, dwShareMode, dwPreferredProtocols,
827 dwInitialization, pdwActiveProtocol);
829 WLog_Print(g_Log, g_LogLevel,
"SCardReconnect } status: %s (0x%08" PRIX32
")",
830 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
835static LONG WINAPI Inspect_SCardDisconnect(SCARDHANDLE hCard, DWORD dwDisposition)
839 WLog_Print(g_Log, g_LogLevel,
"SCardDisconnect { hCard: %p", (
void*)hCard);
841 SCARDAPI_STUB_CALL_LONG(status, SCardDisconnect, hCard, dwDisposition);
843 WLog_Print(g_Log, g_LogLevel,
"SCardDisconnect } status: %s (0x%08" PRIX32
")",
844 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
849static LONG WINAPI Inspect_SCardBeginTransaction(SCARDHANDLE hCard)
853 WLog_Print(g_Log, g_LogLevel,
"SCardBeginTransaction { hCard: %p", (
void*)hCard);
855 SCARDAPI_STUB_CALL_LONG(status, SCardBeginTransaction, hCard);
857 WLog_Print(g_Log, g_LogLevel,
"SCardBeginTransaction } status: %s (0x%08" PRIX32
")",
858 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
863static LONG WINAPI Inspect_SCardEndTransaction(SCARDHANDLE hCard, DWORD dwDisposition)
867 WLog_Print(g_Log, g_LogLevel,
"SCardEndTransaction { hCard: %p", (
void*)hCard);
869 SCARDAPI_STUB_CALL_LONG(status, SCardEndTransaction, hCard, dwDisposition);
871 WLog_Print(g_Log, g_LogLevel,
"SCardEndTransaction } status: %s (0x%08" PRIX32
")",
872 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
877static LONG WINAPI Inspect_SCardCancelTransaction(SCARDHANDLE hCard)
881 WLog_Print(g_Log, g_LogLevel,
"SCardCancelTransaction { hCard: %p", (
void*)hCard);
883 SCARDAPI_STUB_CALL_LONG(status, SCardCancelTransaction, hCard);
885 WLog_Print(g_Log, g_LogLevel,
"SCardCancelTransaction } status: %s (0x%08" PRIX32
")",
886 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
891static LONG WINAPI Inspect_SCardState(SCARDHANDLE hCard, LPDWORD pdwState, LPDWORD pdwProtocol,
892 LPBYTE pbAtr, LPDWORD pcbAtrLen)
896 WLog_Print(g_Log, g_LogLevel,
"SCardState { hCard: %p", (
void*)hCard);
898 SCARDAPI_STUB_CALL_LONG(status, SCardState, hCard, pdwState, pdwProtocol, pbAtr, pcbAtrLen);
900 WLog_Print(g_Log, g_LogLevel,
"SCardState } status: %s (0x%08" PRIX32
")",
901 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
906static LONG WINAPI Inspect_SCardStatusA(SCARDHANDLE hCard, LPSTR mszReaderNames,
907 LPDWORD pcchReaderLen, LPDWORD pdwState,
908 LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)
912 WLog_Print(g_Log, g_LogLevel,
"SCardStatusA { hCard: %p", (
void*)hCard);
914 SCARDAPI_STUB_CALL_LONG(status, SCardStatusA, hCard, mszReaderNames, pcchReaderLen, pdwState,
915 pdwProtocol, pbAtr, pcbAtrLen);
917 WLog_Print(g_Log, g_LogLevel,
"SCardStatusA } status: %s (0x%08" PRIX32
")",
918 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
923static LONG WINAPI Inspect_SCardStatusW(SCARDHANDLE hCard, LPWSTR mszReaderNames,
924 LPDWORD pcchReaderLen, LPDWORD pdwState,
925 LPDWORD pdwProtocol, LPBYTE pbAtr, LPDWORD pcbAtrLen)
929 WLog_Print(g_Log, g_LogLevel,
"SCardStatusW { hCard: %p", (
void*)hCard);
931 SCARDAPI_STUB_CALL_LONG(status, SCardStatusW, hCard, mszReaderNames, pcchReaderLen, pdwState,
932 pdwProtocol, pbAtr, pcbAtrLen);
934 WLog_Print(g_Log, g_LogLevel,
"SCardStatusW } status: %s (0x%08" PRIX32
")",
935 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
941 LPCBYTE pbSendBuffer, DWORD cbSendLength,
943 LPDWORD pcbRecvLength)
947 WLog_Print(g_Log, g_LogLevel,
"SCardTransmit { hCard: %p", (
void*)hCard);
949 SCARDAPI_STUB_CALL_LONG(status, SCardTransmit, hCard, pioSendPci, pbSendBuffer, cbSendLength,
950 pioRecvPci, pbRecvBuffer, pcbRecvLength);
952 WLog_Print(g_Log, g_LogLevel,
"SCardTransmit } status: %s (0x%08" PRIX32
")",
953 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
958static LONG WINAPI Inspect_SCardGetTransmitCount(SCARDHANDLE hCard, LPDWORD pcTransmitCount)
962 WLog_Print(g_Log, g_LogLevel,
"SCardGetTransmitCount { hCard: %p", (
void*)hCard);
964 SCARDAPI_STUB_CALL_LONG(status, SCardGetTransmitCount, hCard, pcTransmitCount);
966 WLog_Print(g_Log, g_LogLevel,
"SCardGetTransmitCount } status: %s (0x%08" PRIX32
")",
967 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
972static LONG WINAPI Inspect_SCardControl(SCARDHANDLE hCard, DWORD dwControlCode, LPCVOID lpInBuffer,
973 DWORD cbInBufferSize, LPVOID lpOutBuffer,
974 DWORD cbOutBufferSize, LPDWORD lpBytesReturned)
978 WLog_Print(g_Log, g_LogLevel,
"SCardControl { hCard: %p", (
void*)hCard);
980 SCARDAPI_STUB_CALL_LONG(status, SCardControl, hCard, dwControlCode, lpInBuffer, cbInBufferSize,
981 lpOutBuffer, cbOutBufferSize, lpBytesReturned);
983 WLog_Print(g_Log, g_LogLevel,
"SCardControl } status: %s (0x%08" PRIX32
")",
984 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
989static LONG WINAPI Inspect_SCardGetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPBYTE pbAttr,
994 WLog_Print(g_Log, g_LogLevel,
"SCardGetAttrib { hCard: %p", (
void*)hCard);
996 SCARDAPI_STUB_CALL_LONG(status, SCardGetAttrib, hCard, dwAttrId, pbAttr, pcbAttrLen);
998 WLog_Print(g_Log, g_LogLevel,
"SCardGetAttrib } status: %s (0x%08" PRIX32
")",
999 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1004static LONG WINAPI Inspect_SCardSetAttrib(SCARDHANDLE hCard, DWORD dwAttrId, LPCBYTE pbAttr,
1009 WLog_Print(g_Log, g_LogLevel,
"SCardSetAttrib { hCard: %p", (
void*)hCard);
1011 SCARDAPI_STUB_CALL_LONG(status, SCardSetAttrib, hCard, dwAttrId, pbAttr, cbAttrLen);
1013 WLog_Print(g_Log, g_LogLevel,
"SCardSetAttrib } status: %s (0x%08" PRIX32
")",
1014 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1019static LONG WINAPI Inspect_SCardUIDlgSelectCardA(LPOPENCARDNAMEA_EX pDlgStruc)
1023 WLog_Print(g_Log, g_LogLevel,
"SCardUIDlgSelectCardA {");
1025 SCARDAPI_STUB_CALL_LONG(status, SCardUIDlgSelectCardA, pDlgStruc);
1027 WLog_Print(g_Log, g_LogLevel,
"SCardUIDlgSelectCardA } status: %s (0x%08" PRIX32
")",
1028 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1033static LONG WINAPI Inspect_SCardUIDlgSelectCardW(LPOPENCARDNAMEW_EX pDlgStruc)
1037 WLog_Print(g_Log, g_LogLevel,
"SCardUIDlgSelectCardW {");
1039 SCARDAPI_STUB_CALL_LONG(status, SCardUIDlgSelectCardW, pDlgStruc);
1041 WLog_Print(g_Log, g_LogLevel,
"SCardUIDlgSelectCardW } status: %s (0x%08" PRIX32
")",
1042 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1051 WLog_Print(g_Log, g_LogLevel,
"GetOpenCardNameA {");
1053 SCARDAPI_STUB_CALL_LONG(status, GetOpenCardNameA, pDlgStruc);
1055 WLog_Print(g_Log, g_LogLevel,
"GetOpenCardNameA } status: %s (0x%08" PRIX32
")",
1056 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1065 WLog_Print(g_Log, g_LogLevel,
"GetOpenCardNameW {");
1067 SCARDAPI_STUB_CALL_LONG(status, GetOpenCardNameW, pDlgStruc);
1069 WLog_Print(g_Log, g_LogLevel,
"GetOpenCardNameW } status: %s (0x%08" PRIX32
")",
1070 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1075static LONG WINAPI Inspect_SCardDlgExtendedError(
void)
1079 WLog_Print(g_Log, g_LogLevel,
"SCardDlgExtendedError {");
1081 SCARDAPI_STUB_CALL_LONG(status, SCardDlgExtendedError);
1083 WLog_Print(g_Log, g_LogLevel,
"SCardDlgExtendedError } status: %s (0x%08" PRIX32
")",
1084 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1089static LONG WINAPI Inspect_SCardReadCacheA(SCARDCONTEXT hContext,
UUID* CardIdentifier,
1090 DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
1095 WLog_Print(g_Log, g_LogLevel,
"SCardReadCacheA { hContext: %p",
1096 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1098 SCARDAPI_STUB_CALL_LONG(status, SCardReadCacheA, hContext, CardIdentifier, FreshnessCounter,
1099 LookupName, Data, DataLen);
1101 WLog_Print(g_Log, g_LogLevel,
"SCardReadCacheA } status: %s (0x%08" PRIX32
")",
1102 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1107static LONG WINAPI Inspect_SCardReadCacheW(SCARDCONTEXT hContext,
UUID* CardIdentifier,
1108 DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
1113 WLog_Print(g_Log, g_LogLevel,
"SCardReadCacheW { hContext: %p",
1114 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1116 SCARDAPI_STUB_CALL_LONG(status, SCardReadCacheW, hContext, CardIdentifier, FreshnessCounter,
1117 LookupName, Data, DataLen);
1119 WLog_Print(g_Log, g_LogLevel,
"SCardReadCacheW } status: %s (0x%08" PRIX32
")",
1120 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1125static LONG WINAPI Inspect_SCardWriteCacheA(SCARDCONTEXT hContext,
UUID* CardIdentifier,
1126 DWORD FreshnessCounter, LPSTR LookupName, PBYTE Data,
1131 WLog_Print(g_Log, g_LogLevel,
"SCardWriteCacheA { hContext: %p",
1132 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1134 SCARDAPI_STUB_CALL_LONG(status, SCardWriteCacheA, hContext, CardIdentifier, FreshnessCounter,
1135 LookupName, Data, DataLen);
1137 WLog_Print(g_Log, g_LogLevel,
"SCardWriteCacheA } status: %s (0x%08" PRIX32
")",
1138 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1143static LONG WINAPI Inspect_SCardWriteCacheW(SCARDCONTEXT hContext,
UUID* CardIdentifier,
1144 DWORD FreshnessCounter, LPWSTR LookupName, PBYTE Data,
1149 WLog_Print(g_Log, g_LogLevel,
"SCardWriteCacheW { hContext: %p",
1150 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1152 SCARDAPI_STUB_CALL_LONG(status, SCardWriteCacheW, hContext, CardIdentifier, FreshnessCounter,
1153 LookupName, Data, DataLen);
1155 WLog_Print(g_Log, g_LogLevel,
"SCardWriteCacheW } status: %s (0x%08" PRIX32
")",
1156 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1161static LONG WINAPI Inspect_SCardGetReaderIconA(SCARDCONTEXT hContext, LPCSTR szReaderName,
1162 LPBYTE pbIcon, LPDWORD pcbIcon)
1166 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderIconA { hContext: %p",
1167 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1169 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderIconA, hContext, szReaderName, pbIcon, pcbIcon);
1171 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderIconA } status: %s (0x%08" PRIX32
")",
1172 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1177static LONG WINAPI Inspect_SCardGetReaderIconW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
1178 LPBYTE pbIcon, LPDWORD pcbIcon)
1182 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderIconW { hContext: %p",
1183 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1185 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderIconW, hContext, szReaderName, pbIcon, pcbIcon);
1187 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderIconW } status: %s (0x%08" PRIX32
")",
1188 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1193static LONG WINAPI Inspect_SCardGetDeviceTypeIdA(SCARDCONTEXT hContext, LPCSTR szReaderName,
1194 LPDWORD pdwDeviceTypeId)
1198 WLog_Print(g_Log, g_LogLevel,
"SCardGetDeviceTypeIdA { hContext: %p",
1199 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1201 SCARDAPI_STUB_CALL_LONG(status, SCardGetDeviceTypeIdA, hContext, szReaderName, pdwDeviceTypeId);
1203 WLog_Print(g_Log, g_LogLevel,
"SCardGetDeviceTypeIdA } status: %s (0x%08" PRIX32
")",
1204 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1209static LONG WINAPI Inspect_SCardGetDeviceTypeIdW(SCARDCONTEXT hContext, LPCWSTR szReaderName,
1210 LPDWORD pdwDeviceTypeId)
1214 WLog_Print(g_Log, g_LogLevel,
"SCardGetDeviceTypeIdW { hContext: %p",
1215 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1217 SCARDAPI_STUB_CALL_LONG(status, SCardGetDeviceTypeIdW, hContext, szReaderName, pdwDeviceTypeId);
1219 WLog_Print(g_Log, g_LogLevel,
"SCardGetDeviceTypeIdW } status: %s (0x%08" PRIX32
")",
1220 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1225static LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdA(SCARDCONTEXT hContext,
1226 LPCSTR szReaderName,
1227 LPSTR szDeviceInstanceId,
1228 LPDWORD pcchDeviceInstanceId)
1232 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderDeviceInstanceIdA { hContext: %p",
1233 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1235 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderDeviceInstanceIdA, hContext, szReaderName,
1236 szDeviceInstanceId, pcchDeviceInstanceId);
1238 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderDeviceInstanceIdA } status: %s (0x%08" PRIX32
")",
1239 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1244static LONG WINAPI Inspect_SCardGetReaderDeviceInstanceIdW(SCARDCONTEXT hContext,
1245 LPCWSTR szReaderName,
1246 LPWSTR szDeviceInstanceId,
1247 LPDWORD pcchDeviceInstanceId)
1251 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderDeviceInstanceIdW { hContext: %p",
1252 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1254 SCARDAPI_STUB_CALL_LONG(status, SCardGetReaderDeviceInstanceIdW, hContext, szReaderName,
1255 szDeviceInstanceId, pcchDeviceInstanceId);
1257 WLog_Print(g_Log, g_LogLevel,
"SCardGetReaderDeviceInstanceIdW } status: %s (0x%08" PRIX32
")",
1258 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1263static LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdA(SCARDCONTEXT hContext,
1264 LPCSTR szDeviceInstanceId,
1266 LPDWORD pcchReaders)
1270 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersWithDeviceInstanceIdA { hContext: %p",
1271 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1273 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersWithDeviceInstanceIdA, hContext,
1274 szDeviceInstanceId, mszReaders, pcchReaders);
1276 WLog_Print(g_Log, g_LogLevel,
1277 "SCardListReadersWithDeviceInstanceIdA } status: %s (0x%08" PRIX32
")",
1278 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1283static LONG WINAPI Inspect_SCardListReadersWithDeviceInstanceIdW(SCARDCONTEXT hContext,
1284 LPCWSTR szDeviceInstanceId,
1286 LPDWORD pcchReaders)
1290 WLog_Print(g_Log, g_LogLevel,
"SCardListReadersWithDeviceInstanceIdW { hContext: %p",
1291 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1293 SCARDAPI_STUB_CALL_LONG(status, SCardListReadersWithDeviceInstanceIdW, hContext,
1294 szDeviceInstanceId, mszReaders, pcchReaders);
1296 WLog_Print(g_Log, g_LogLevel,
1297 "SCardListReadersWithDeviceInstanceIdW } status: %s (0x%08" PRIX32
")",
1298 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1303static LONG WINAPI Inspect_SCardAudit(SCARDCONTEXT hContext, DWORD dwEvent)
1307 WLog_Print(g_Log, g_LogLevel,
"SCardAudit { hContext: %p",
1308 WINPR_CXX_COMPAT_CAST(
const void*, hContext));
1310 SCARDAPI_STUB_CALL_LONG(status, SCardAudit, hContext, dwEvent);
1312 WLog_Print(g_Log, g_LogLevel,
"SCardAudit } status: %s (0x%08" PRIX32
")",
1313 SCardGetErrorString(status), WINPR_CXX_COMPAT_CAST(ULONG, status));
1326 Inspect_SCardEstablishContext,
1327 Inspect_SCardReleaseContext,
1328 Inspect_SCardIsValidContext,
1329 Inspect_SCardListReaderGroupsA,
1330 Inspect_SCardListReaderGroupsW,
1331 Inspect_SCardListReadersA,
1332 Inspect_SCardListReadersW,
1333 Inspect_SCardListCardsA,
1334 Inspect_SCardListCardsW,
1335 Inspect_SCardListInterfacesA,
1336 Inspect_SCardListInterfacesW,
1337 Inspect_SCardGetProviderIdA,
1338 Inspect_SCardGetProviderIdW,
1339 Inspect_SCardGetCardTypeProviderNameA,
1340 Inspect_SCardGetCardTypeProviderNameW,
1341 Inspect_SCardIntroduceReaderGroupA,
1342 Inspect_SCardIntroduceReaderGroupW,
1343 Inspect_SCardForgetReaderGroupA,
1344 Inspect_SCardForgetReaderGroupW,
1345 Inspect_SCardIntroduceReaderA,
1346 Inspect_SCardIntroduceReaderW,
1347 Inspect_SCardForgetReaderA,
1348 Inspect_SCardForgetReaderW,
1349 Inspect_SCardAddReaderToGroupA,
1350 Inspect_SCardAddReaderToGroupW,
1351 Inspect_SCardRemoveReaderFromGroupA,
1352 Inspect_SCardRemoveReaderFromGroupW,
1353 Inspect_SCardIntroduceCardTypeA,
1354 Inspect_SCardIntroduceCardTypeW,
1355 Inspect_SCardSetCardTypeProviderNameA,
1356 Inspect_SCardSetCardTypeProviderNameW,
1357 Inspect_SCardForgetCardTypeA,
1358 Inspect_SCardForgetCardTypeW,
1359 Inspect_SCardFreeMemory,
1360 Inspect_SCardAccessStartedEvent,
1361 Inspect_SCardReleaseStartedEvent,
1362 Inspect_SCardLocateCardsA,
1363 Inspect_SCardLocateCardsW,
1364 Inspect_SCardLocateCardsByATRA,
1365 Inspect_SCardLocateCardsByATRW,
1366 Inspect_SCardGetStatusChangeA,
1367 Inspect_SCardGetStatusChangeW,
1368 Inspect_SCardCancel,
1369 Inspect_SCardConnectA,
1370 Inspect_SCardConnectW,
1371 Inspect_SCardReconnect,
1372 Inspect_SCardDisconnect,
1373 Inspect_SCardBeginTransaction,
1374 Inspect_SCardEndTransaction,
1375 Inspect_SCardCancelTransaction,
1377 Inspect_SCardStatusA,
1378 Inspect_SCardStatusW,
1379 Inspect_SCardTransmit,
1380 Inspect_SCardGetTransmitCount,
1381 Inspect_SCardControl,
1382 Inspect_SCardGetAttrib,
1383 Inspect_SCardSetAttrib,
1384 Inspect_SCardUIDlgSelectCardA,
1385 Inspect_SCardUIDlgSelectCardW,
1386 Inspect_GetOpenCardNameA,
1387 Inspect_GetOpenCardNameW,
1388 Inspect_SCardDlgExtendedError,
1389 Inspect_SCardReadCacheA,
1390 Inspect_SCardReadCacheW,
1391 Inspect_SCardWriteCacheA,
1392 Inspect_SCardWriteCacheW,
1393 Inspect_SCardGetReaderIconA,
1394 Inspect_SCardGetReaderIconW,
1395 Inspect_SCardGetDeviceTypeIdA,
1396 Inspect_SCardGetDeviceTypeIdW,
1397 Inspect_SCardGetReaderDeviceInstanceIdA,
1398 Inspect_SCardGetReaderDeviceInstanceIdW,
1399 Inspect_SCardListReadersWithDeviceInstanceIdA,
1400 Inspect_SCardListReadersWithDeviceInstanceIdW,
1404static void Inspect_InitLog(
void)
1409 if (!(g_Log = WLog_Get(
"WinSCard")))
1415 g_SCardApi = pSCardApi;
1419 return &Inspect_SCardApiFunctionTable;